Веб-сервер на Go, реализующий простой планировщик задач (аналог TODO-листа) с хранением данных в SQLite.
Сервер раздаёт фронтенд из директории ./web и предоставляет REST API для управления задачами.
Задача содержит:
date— дата в форматеYYYYMMDD(20060102)title— заголовок (обязательное поле)comment— комментарийrepeat— правило повторения
Если задача периодическая, при отметке «выполнено» дата переносится на следующую по правилу повторения.
Если repeat пустой — при выполнении задача удаляется.
- Go
- SQLite (
modernc.org/sqlite)
.
├── main.go # точка входа
├── scheduler.db # файл БД (локально)
├── pkg
│ ├── server # запуск HTTP-сервера и раздача статики
│ ├── api # HTTP-хендлеры и бизнес-логика API
│ └── db # работа с SQLite (CRUD)
├── web # фронтенд (HTML/CSS/JS)
└── tests # автотесты для проверки ТЗ
POST /api/task— добавить задачуGET /api/tasks— получить список задачGET /api/task?id=<id>— получить задачу по idPUT /api/task— обновить задачуPOST /api/task/done?id=<id>— отметить задачу выполненной
(одноразовая удаляется, периодическая переносится)DELETE /api/task?id=<id>— удалить задачуGET /api/nextdate?now=<YYYYMMDD>&date=<YYYYMMDD>&repeat=<rule>— расчёт следующей даты
Формат ответов:
- успех:
{}или{"id": <number>} - ошибка:
{"error": "text"}
-
Поддержка переменной окружения
TODO_PORT -
Поддержка переменной окружения
TODO_DBFILE -
Реализованы расширенные правила повторения
w ...иm ... -
Реализован поиск в
GET /api/tasks?search=...:- по подстроке в
titleиcomment - по дате, если
searchв форматеDD.MM.YYYY
- по подстроке в
-
Аутентификация — не реализована
-
Docker — не реализован
- Go
- SQLite не требуется отдельно (используется драйвер
modernc.org/sqlite)
TODO_PORT— порт сервера (по умолчанию7540)TODO_DBFILE— путь к файлу SQLite (по умолчаниюscheduler.db)
$env:TODO_PORT="7540"
$env:TODO_DBFILE="scheduler.db"
go run .export TODO_PORT=7540
export TODO_DBFILE=scheduler.db
go run .http://localhost:7540/ (или другой порт, если задан через TODO_PORT)