Простой REST API для управления задачами (ToDo) и авторизацией пользователей, построенный на Dart Frog. Использует PostgreSQL для хранения данных, Redis для кэширования и JWT для аутентификации.
Используется в качестве бэка для Flutter приложения Frog Task List (см. инструкции ниже)
- Регистрация и вход пользователей с выдачей JWT-токена.
- CRUD-операции для задач (создание, получение списка, удаление).
- Кэширование списка задач в Redis (5 минут).
- Защищённые эндпоинты с проверкой токена.
- Dart SDK: >=3.0.0 <4.0.0
- Docker: Для запуска PostgreSQL и Redis
- Dart Frog CLI: Для разработки и запуска
-
Клонируйте репозиторий:
git clone <repository-url> cd todo_backend
-
Установите Dart Frog CLI (если ещё не установлен):
dart pub global activate dart_frog_cli
-
Установите зависимости:
dart pub get
-
Настройте Docker:
- Убедитесь, что Docker установлен и запущен.
- Используйте
docker-compose.yml
для запуска PostgreSQL и Redis:docker-compose up -d
- PostgreSQL:
localhost:5432
, базаtodo_db
, пользовательpostgres
, парольpassword
. - Redis:
localhost:6379
.
- PostgreSQL:
- Запустите сервер:
dart_frog dev
- Сервер будет доступен на
http://localhost:8080
.
- Сервер будет доступен на
- POST /auth/register: Регистрация пользователя.
- Тело:
{"email": "test@example.com", "password": "123456"}
- Ответ:
{"user_id": 1}
- Тело:
- POST /auth/login: Вход пользователя.
- Тело:
{"email": "test@example.com", "password": "123456"}
- Ответ:
{"token": "<jwt-token>"}
- Тело:
- GET /todos: Получение списка задач (требуется токен).
- Заголовок:
Authorization: Bearer <jwt-token>
- Ответ:
[{"id": "1", "title": "Buy milk", "completed": false}, ...]
- Заголовок:
- POST /todos: Создание задачи (требуется токен).
- Тело:
{"title": "Buy milk"}
- Ответ:
{"id": "1"}
- Тело:
- GET /todos/[id]: Получение задачи по ID (требуется токен).
- Ответ:
{"id": "1", "title": "Buy milk", "completed": false}
- Ответ:
- DELETE /todos/[id]: Удаление задачи (требуется токен).
- Ответ: 204 No Content
/todo_backend
/lib
/db.dart # Подключение к PostgreSQL и Redis
/routes
/_middleware.dart # Глобальная мидлварь (инициализация базы)
/auth # Эндпоинты авторизации
/todos # Эндпоинты задач
dart_frog
: Фреймворк для API.postgres
: Драйвер PostgreSQL.redis
: Драйвер Redis.dart_jsonwebtoken
: Генерация и проверка JWT.
- Регистрация:
curl -X POST http://localhost:8080/auth/register -H "Content-Type: application/json" -d '{"email": "test@example.com", "password": "123456"}'
- Логин:
curl -X POST http://localhost:8080/auth/login -H "Content-Type: application/json" -d '{"email": "test@example.com", "password": "123456"}'
- Получение задач:
curl http://localhost:8080/todos -H "Authorization: Bearer <jwt-token>"