Skip to content

Danil1182/task-manager-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Система управления проектами и задачами

API-сервер для управления проектами и задачами, разработанный на Golang.

📚 Технологии

  • Go 1.24
  • Gin Web Framework
  • GORM (PostgreSQL)
  • JWT для аутентификации
  • Swagger для документации API
  • Docker и Docker Compose для контейнеризации

🚀 Запуск с использованием Docker Compose

📋 Предварительные требования

⚙️ Шаги для запуска

  1. Клонируйте репозиторий:
git clone https://github.com/Danil1182/task-manager-api.git
cd task-manager-api
  1. Соберите приложение с помощью Docker Compose:
docker-compose build
  1. Запустите приложение с помощью Docker Compose:
docker-compose up -d

Эта команда запустит два контейнера:

  • API-сервер на порту 8080
  • PostgreSQL на порту 5432

При первом запуске вы можете создать учётную запись администратора:

{
  "username": "admin",
  "email": "admin@example.com",
  "password": "admin_password",
  "role": "admin"
}
  1. Проверьте работу API:

Откройте в браузере: http://localhost:8080/docs или http://localhost:8080/swagger/index.html

🛑 Остановка приложения

Если хотите просто остановить, но чтобы контейнер остался в Docker Desktop:

docker-compose stop

Полная остановка и удаление контейнеров, но без удаления данных БД:

docker-compose down

Для удаления всех данных, включая тома базы данных:

docker-compose down -v

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

Все необходимые переменные окружения уже настроены в файле docker-compose.yml. При необходимости вы можете изменить их значения:

  • DB_HOST - хост базы данных (postgres)
  • DB_USER - пользователь базы данных (postgres)
  • DB_PASSWORD - пароль базы данных (postgres)
  • DB_NAME - имя базы данных (taskmanager)
  • DB_PORT - порт базы данных (5432)
  • JWT_SECRET - секретный ключ для JWT токенов

📖 Документация API

После запуска приложения документация API доступна по адресу:

📡 Основные маршруты API

Метод Путь Описание
POST /api/v1/auth/register Регистрация нового пользователя
POST /api/v1/auth/login Аутентификация и получение JWT токена
GET /api/v1/users Получение списка всех пользователей (для админа)
GET /api/v1/users/:id Получение информации о пользователе по ID
POST /api/v1/projects Создание нового проекта
GET /api/v1/projects Получение списка проектов
GET /api/v1/projects/:id Получение информации о проекте
PUT /api/v1/projects/:id Обновление данных проекта
DELETE /api/v1/projects/:id Удаление проекта
POST /api/v1/projects/:id/tasks Создание новой задачи в проекте
GET /api/v1/projects/:id/tasks Получение всех задач в проекте с возможностью фильтрации
PUT /api/v1/tasks/:id Обновление задачи
DELETE /api/v1/tasks/:id Удаление задачи
GET /docs Swagger-документация API

👥 Роли и права доступа

В системе реализовано разграничение прав доступа между различными типами пользователей:

Обычные пользователи

  • Могут создавать собственные проекты
  • Могут просматривать только свои проекты и задачи
  • Могут управлять (создавать, редактировать, удалять) только своими задачами
  • Не имеют доступа к проектам и задачам других пользователей

Администраторы

  • Имеют полный доступ ко всем проектам и задачам в системе
  • Могут просматривать список всех пользователей
  • Могут управлять (создавать, редактировать, удалять) любыми проектами и задачами
  • Могут назначать задачи любым пользователям

Как стать администратором

При регистрации пользователя можно указать роль "admin" в поле "role". По умолчанию новые пользователи получают роль "user".

{
  "username": "admin",
  "email": "admin@example.com",
  "password": "admin_password",
  "role": "admin"
}

📝 Примеры запросов

Регистрация пользователя

curl -X POST http://localhost:8080/api/v1/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "username": "user1",
    "email": "user1@example.com",
    "password": "password123"
  }'

Вход пользователя

curl -X POST http://localhost:8080/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "username": "user1",
    "password": "password123"
  }'

Создание проекта

curl -X POST http://localhost:8080/api/v1/projects \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -d '{
    "name": "Новый проект",
    "description": "Описание проекта"
  }'

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

curl -X POST http://localhost:8080/api/v1/projects/1/tasks \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -d '{
    "title": "Новая задача",
    "description": "Описание задачи",
    "priority": "высокий",
    "status": "в очереди",
    "deadline": "2025-12-31T23:59:59Z"
  }'

Фильтрация задач

При получении списка задач проекта (GET /api/v1/projects/:id/tasks) можно использовать следующие параметры фильтрации:

  • status - Фильтр по статусу (в очереди, в работе, завершена)
  • priority - Фильтр по приоритету (низкий, средний, высокий)
  • deadline - Фильтр по дедлайну (формат: YYYY-MM-DD)

Пример:

curl -X GET "http://localhost:8080/api/v1/projects/1/tasks?status=в%20работе&priority=высокий" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

👨‍💻 Автор

Важенин Данил Сергеевич, КГУ

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors