Todo-Rest API — это серверное приложение для управления задачами с использованием Go. Оно предоставляет REST API для создания, редактирования и удаления задач. Приложение поддерживает аутентификацию с использованием JWT-токенов, а также хранит данные задач в SQLite базе данных.
Данное приложение представляет собой API для системы управления задачами, которое позволяет пользователям создавать задачи с указанием сроков, описания и повторяющихся событий. Также реализован механизм аутентификации и авторизации на основе токенов.
- Создание, редактирование и удаление задач
- Поддержка повторяющихся задач
- Аутентификация с использованием JWT
- Хранение данных в базе данных SQLite
- Валидация данных на уровне API
- Поддержка переменных окружения для конфигурации
- Go 1.23.2
- SQLite для хранения данных
- Chi для роутинга
- Docker для контейнеризации
- Buildx и GitHub Actions для CI/CD
- JWT для аутентификации
- Окружение для разработки: WSL/Ubuntu
Для установки и запуска приложения на локальной машине, следуйте инструкциям ниже:
- Склонируйте репозиторий:
git clone https://github.com/denisushakov/todo-rest.git
- Перейдите в папку проекта:
cd todo-rest
- Установите зависимости:
go mod download
- Запустите приложение:
go run ./cmd/scheduler/main.go
Для запуска приложения в контейнере Docker, выполните следующие шаги:
- Соберите Docker-образ:
docker build -t todo-rest .
- Запустите контейнер:
docker run -d -p 7540:7540 --name todo-rest todo-rest
Приложение использует следующие переменные окружения для конфигурации:
- TODO_PORT — порт, на котором работает сервер (по умолчанию: 7540)
- TODO_DBFILE — путь к файлу базы данных SQLite (по умолчанию: ./storage/scheduler.db)
- TODO_PASSWORD — пароль для аутентификации Вы можете изменить их, добавив файл .env в корень проекта.
- Создание задачи
Запрос:
POST /api/task
Content-Type: application/json
{
"title": "Новая задача",
"description": "Описание задачи",
"date": "2024-12-01",
"repeat": "d 5"
}
Ответ:
{
"id": "1",
"title": "Новая задача",
"description": "Описание задачи",
"date": "2024-12-01",
"repeat": "d 5"
}
- Получение задачи
Запрос:
GET /api/task?id=1
Ответ:
{
"id": "1",
"title": "Новая задача",
"description": "Описание задачи",
"date": "2024-12-01",
"repeat": "d 5"
}
Для запуска тестов выполните команду:
go test ./tests
Вы также можете запустить тесты в Docker-контейнере:
docker run --rm todo-rest go test ./tests
Данный проект лицензируется под лицензией MIT. См. файл LICENSE для получения подробной информации.