Спецификация - PavelParvadov/MYWORKAPP GitHub Wiki

Спецификация

1. Введение

1.1 Цели

Цель разработки приложения «Моя работа» – создание функционального веб-приложения для поиска работы, которое предоставляет пользователям удобный интерфейс для размещения, поиска и просмотра вакансий.

1.2 Обзор

Приложение предназначено для пользователей, специализирующихся на поиске работы или подборе персонала. Оно обеспечивает удобный поиск, публикацию и просмотр вакансий, а также регистрацию и авторизацию.

1.3 Определения, сокращения, термины

  • Вакансия – информация о доступной работе, опубликованная работодателем.
  • Кандидат – пользователь, ищущий работу и взаимодействующий с вакансиями.
  • HTMX – библиотека для создания интерактивного интерфейса без написания JavaScript.
  • Templ – шаблонизатор для Go, используемый для генерации HTML-интерфейсов.

1.4 Ссылки

1.5 Обзор документа

Документ описывает функциональность, требования к производительности, надёжности, удобству использования и архитектуре веб-приложения «Моя работа», предназначенного для поиска работы. В нем представлены требования к интерфейсу, логике работы и REST API.


2. Общее описание

Приложение «Моя работа» — это веб-платформа для поиска вакансий, включающая в себя пользовательскую часть для соискателей, а также административную часть.

Пользователи могут просматривать вакансии, откликаться на них и использовать поиск по ключевым словам. Архитектура построена с использованием фреймворков Templ, Fiber и HTMX для рендеринга интерфейсов и динамического взаимодействия без JavaScript.


3. Требования

3.1 Функциональность

3.1.1 Отображение списка вакансий с заголовком, описанием, местоположением, зарплатой и датой публикации
3.1.2 Просмотр полной информации о вакансии
3.1.3 Регистрация и вход пользователя
3.1.4 Поиск вакансий по ключевым словам
3.1.5 Пагинация результатов

3.2 Удобство использования

3.2.1 Приложение должно иметь интуитивно понятный интерфейс для пользователей
3.2.2 Использование HTMX позволяет минимизировать количество перезагрузок страницы, что повышает отзывчивость интерфейса

3.3 Надежность

3.3.1 Приложение должно сохранять корректность данных при сбоях системы
3.3.2 Приложение должно обрабатывать ошибки пользователя (например, неверный ввод данных)

3.4 Поддерживаемость

3.4.1 Исходный код должен быть разделён на модули: маршруты, обработчики, шаблоны, бизнес-логика и модели
3.4.2 Использование Templ и Air упрощает модификацию интерфейса и автоматическую перезагрузку при разработке

3.5 Проектные ограничения

3.5.1 Разработка приложения осуществляется с использованием языка программирования Go
3.5.2 Для шаблонов используется Templ, для интерактивности — HTMX, для разработки — Air

3.6 Требования по документированности и поддержке пользователей

3.6.1 Программная документация должна включать описание структуры проекта и используемых технологий
3.6.2 Пользователям должна быть предоставлена инструкция по работе с приложением

3.7 Заимствованные компоненты

3.7.1 HTMX для интерактивных запросов без JavaScript
3.7.2 Templ для серверного рендеринга шаблонов
3.7.3 Air для автоматической перезагрузки сервера во время разработки
3.7.4 PostgreSQL — в качестве базы данных

3.8 Интерфейсы

3.8.1 Пользовательские интерфейсы

  • Главная страница со списком вакансий
  • Форма для добавления вакансии
  • Страница авторизации
  • Страница регистрации

3.8.2 Аппаратные интерфейсы

  • Не применяются

3.8.3 Программные интерфейсы

  • Подключение к базе данных через database/sql с использованием адаптера pgx

3.8.4 Коммуникационные интерфейсы

  • Использование протокола HTTP для передачи данных
  • Логирование ошибок и действий пользователя

3.9 Лицензионные соглашения

Приложение может быть использовано в учебных или коммерческих целях с указанием авторства.

3.10 Применяемые стандарты

3.10.1 Стандарты веб-разработки: HTML5, CSS3, HTTP/1.1
3.10.2 Стандарты написания кода Go: gofmt, golint

4. Исходный документ

Спецификация