- При занятиях в автошколе учащийся проезжает не все маршруты из возможных.
- Забываются трудные участки маршрутов.
- Ученик не имеет представления о районе на которому он обучается.
- Создать инструмент с помощью которого ученик мог бы отметить маршруты, по которым он собирается проехать
- Сделать заметки о проблемных для него местах на которых он завалился
- Отметить знаки или сложные участки, что бы примерно иметь представление о местности по которой он передвигается
- Просмотреть карту отъезженных им маршрутов
- POST: /register Регистрация
- POST: /auth Авторизация
- POST: /routes/ Создать маршрут
- GET: /routes/ Получить список маршрутов
- GET: /routes/points Получить точки сгруппированные по конкретному маршруту
- GET: /routes/{id} Получить маршрут
- PUT: /routes/{id} Изменить маршрут
- DELETE: /routes/{id} Удалить маршрут
- GET: /routes/{id}/points Получить точки для конкретного маршрута
- POST: /areas/ Создать район в рамках которого проходят учебные маршруты
- GET: /areas/ Получить список районов
- GET: /areas/points Получить точки сгруппированные по областям
- GET: /areas/{id} Получить район
- PUT: /areas/{id} Изменить район
- DELETE: /areas/{id} Удалить район
- GET: /areas/{id}/points Получить точки конкретной области
- POST: /marks/ Создать на карте заметку
- POST: /marks?route_id={route_id}&area_id={area_id} Создать на карте заметку (С привязкой к маршруту и/или к области)
- GET: /marks/points Получить точки сгруппированные по заметке
- PUT: /marks/{id} Изменить заметку
- GET: /marks/{id} Изменить заметку
- DELETE: /marks/{id} Удалить заметку
- GET: /marks/{id}/point Получить точку заметки
- Postgres
- MongoDB (Для хранения маршрутов, пока не знаю какой формат нужен и какие нюансы могут быть, поэтому mongo). Решил заменить MongoDB на Postgres JSONb.
- Клонировать проект:
clone git@github.com:jbakhtin/driving-school-route-coverage.git
- Перейти в папку migrations и выполнить миграции:
export GOOSE_DBSTRING="user=ИМЯ_ПОЛЬЗОВАТЛЯ password=ПАРОЛЬ host=ХОСТ database=ИМЯ_БАЗЫДАНЫХ"
export GOOSE_DRIVER=postgres
goose up
- Описать шаблон README.md
- Составить список задач на Инкремент 1
- Спроектировать БД
- Описать связи основных сущностей
- Описать взаимодействие PostgresSQL и MongoDB (MongoDB заменен на PG JSONb)
- Написать миграции для базы данных
- Для модели users
- Реализовать заглушки обработчиков
- Описать интерфейс роутов (Передаваемые параметры) -> Инкремент 2
- Обработать исключения и возврат кодов ответов
- Запуск сервера
- Тесты
- Проверка подключения БД
- Покрыть тестами обработчики основных ресурсов -> Инкремент 2
- Определить параметры окружения и вынести их в конфиги
-
Написать миграции для остальных таблиц
- routes
- areas
- marks
-
Написать SQL запросы для сущностей:
- routes
- areas
- marks
-
Аутентификация пользователя:
- Выбор библиотеки или реализовать самостоятельно
- Хэширование пароля
- Создание сессии
- Проверка сессии
-
Сброс пароля - Сохранение в сессии информации о пользователе для дальней идентификации связных с ним сущностей
-
Реализовать логику хендлеров
- auth
- Регистрация
- Авторизация
- Покрыть тестами
- Валидация запросов
- routes
- Создание
- Редактирование
- Отображение
- Удаление
- Получить список маршрутов
- Покрыть тестами
- Валидация запросов
- areas
- marks
- auth
-
Фоновые процессы
- Почтовые уведомления
- Наполнение очереди
- Отправка уведомлений из очереди
- Почтовые уведомления
-
Завершение работы приложение
- Завершение фоновых процессов с помощью паттерна Closer
-
Доработки (после основных работ)
- Фоновые процессы
- Почтовые уведомления
- Сохранение в очереди процессов в хранилище при завершении программы
- Поднятие очереди из хранилища в момент страта программы
- Почтовые уведомления
- Фоновые процессы