Функционал:
- [v] Несколько аккаунтов с правами "Админ" и "Пользователь".
- Создание/Просмотр/Изменение/Удаление TODO.
- Админ может управлять TODO всех и создавать, удалять юзеров.
- [v] SQL база данных(мы используем MySQL, но для данного задания можно воспользоваться SQLite).
- После создания TODO, должна быть возможность уведомить внешний сервис об этом, например сообщение в Telegram или WebHook(реализовать интерфейс для этого, сама реализация отсылки не требуется).
Восстановления пароля и работа с email, в данном задании, не требуется.
Сейча можно увидеть увидеть:
- [v] Project Layout.
- [v] Какие используются внешние зависимости.
- [v] Как организованно внедрение зависимостей(Dependency Injection).
Системные требования:
- Go 1.16.9(max - bug occured with jose2go with go1.16.11)
- MySql 8.x (no ssl)
- Linux x32,x64
- Утилита make (для обработки файла Makefile)
Для выполнения работы используются https://github.com/qiangxue/go-rest-api и некоторые важные папки из https://github.com/golang-standards/project-layout Некоторые свои изменения я опсал в своем темплейте https://github.com/tvitcom/fusion-framework и применяю его в своих пет проектах.
- создать mysql бд czthree и пользователя czthree с паролем.
- переименовать файл configs/_dev.yml в ./configs/dev.yml
- прописать пароль для соединения с бд
- импортировать дамп ./data/czthree_db_init.sql
- инициализировать go mod командой: go mod tidy
- выполнить команду: make dev
- запустить броузер с адресом http://localhost:3000/
- войти с пользователем admin и паролем: pass_to_admin