Сервис для управления задачами с HTTP API на Go.
- Go
1.23+ - Docker и Docker Compose
docker compose up --buildПосле запуска сервис будет доступен по адресу http://localhost:8080.
Если postgres уже запускался ранее со старой схемой, пересоздай volume:
docker compose down -v
docker compose up --buildПричина в том, что SQL-файлы из migrations/ монтируются в docker-entrypoint-initdb.d и применяются только при инициализации пустого data volume.
Swagger UI:
http://localhost:8080/swagger/
OpenAPI JSON:
http://localhost:8080/swagger/openapi.json
Базовый префикс API:
/api/v1
| Метод | Путь | Описание |
|---|---|---|
POST |
/api/v1/tasks |
Создать задачу |
GET |
/api/v1/tasks |
Получить список задач |
GET |
/api/v1/tasks/{id} |
Получить задачу по ID |
PUT |
/api/v1/tasks/{id} |
Обновить задачу |
DELETE |
/api/v1/tasks/{id} |
Удалить задачу |
| Метод | Путь | Описание |
|---|---|---|
PUT |
/api/v1/tasks/{id}/schedule |
Создать или обновить расписание |
GET |
/api/v1/tasks/{id}/schedule |
Получить расписание |
DELETE |
/api/v1/tasks/{id}/schedule |
Удалить расписание |
POST |
/api/v1/tasks/{id}/schedule/generate |
Сгенерировать задачи по расписанию |
Задача может иметь расписание, по которому автоматически генерируются новые задачи на указанный диапазон дат.
Ежедневное — каждые N дней:
{
"type": "daily",
"every_n_day": 2
}Ежемесячное — в определённое число каждого месяца (от 1 до 30):
{
"type": "monthly",
"month_day": 15
}Конкретные даты — только в указанные даты:
{
"type": "specific_dates",
"dates": ["2026-04-10", "2026-04-20", "2026-04-30"]
}Чётные/нечётные дни — только по чётным или нечётным числам месяца:
{
"type": "even_odd",
"even_odd": "even"
}После того как расписание задано, можно сгенерировать задачи на нужный период:
curl -X POST http://localhost:8080/api/v1/tasks/1/schedule/generate \
-H "Content-Type: application/json" \
-d '{"from": "2026-04-01", "to": "2026-04-30"}'Каждая сгенерированная задача наследует title и description из задачи-шаблона, к названию добавляется дата в формате YYYY-MM-DD. Максимальный диапазон генерации — 1 год.