Skip to content

mterebov/final_project_YP_go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Планировщик задач (TODO / Scheduler)

Веб-сервер на 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 # автотесты для проверки ТЗ

Реализованный функционал API

  • POST /api/task — добавить задачу
  • GET /api/tasks — получить список задач
  • GET /api/task?id=<id> — получить задачу по id
  • PUT /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)

PowerShell

$env:TODO_PORT="7540"
$env:TODO_DBFILE="scheduler.db"
go run .

bash / zsh

export TODO_PORT=7540
export TODO_DBFILE=scheduler.db
go run .

Адрес в браузере

http://localhost:7540/ (или другой порт, если задан через TODO_PORT)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors