Skip to content

Latest commit

 

History

History
141 lines (103 loc) · 4.39 KB

README.md

File metadata and controls

141 lines (103 loc) · 4.39 KB

Todo-Rest API

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

Установка и запуск

Локальная установка

Для установки и запуска приложения на локальной машине, следуйте инструкциям ниже:

  1. Склонируйте репозиторий:
git clone https://github.com/denisushakov/todo-rest.git
  1. Перейдите в папку проекта:
cd todo-rest
  1. Установите зависимости:
go mod download
  1. Запустите приложение:
go run ./cmd/scheduler/main.go

Запуск в Docker

Для запуска приложения в контейнере Docker, выполните следующие шаги:

  1. Соберите Docker-образ:
docker build -t todo-rest .
  1. Запустите контейнер:
docker run -d -p 7540:7540 --name todo-rest todo-rest

Переменные окружения

Приложение использует следующие переменные окружения для конфигурации:

  • TODO_PORT — порт, на котором работает сервер (по умолчанию: 7540)
  • TODO_DBFILE — путь к файлу базы данных SQLite (по умолчанию: ./storage/scheduler.db)
  • TODO_PASSWORD — пароль для аутентификации Вы можете изменить их, добавив файл .env в корень проекта.

Пример использования API

  1. Создание задачи

Запрос:

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"
}
  1. Получение задачи

Запрос:

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 для получения подробной информации.