TaskTracker — это современное веб-приложение для управления задачами с поддержкой аутентификации, реалтайм обновлений, асинхронной обработки задач и мониторинга. Проект реализован на языке Go с использованием множества современных технологий.
TaskTracker представляет собой систему управления задачами, которая позволяет пользователям создавать, редактировать, отслеживать и удалять задачи. Приложение включает в себя:
- Аутентификацию пользователей с использованием JWT
- Реалтайм обновления через WebSocket
- Асинхронную обработку задач через RabbitMQ
- Кеширование данных через Redis
- Мониторинг производительности через Prometheus и Grafana
- Автоматическую генерацию документации API через Swagger
Проект состоит из следующих компонентов:
- REST API для работы с задачами и пользователями
- Использует PostgreSQL для хранения данных
- Включает систему аутентификации на основе JWT
- Обеспечивает реалтайм обновления через WebSocket
- Обрабатывает CORS и стандартные middleware для логирования
- Отдельный сервис для асинхронной обработки задач
- Получает сообщения из очереди RabbitMQ
- Обрабатывает события жизненного цикла задач (создание, обновление, удаление)
- Логирует события в систему
- Использует Redis для кеширования часто запрашиваемых данных
- Ускоряет доступ к информации и снижает нагрузку на базу данных
- Интеграция с Prometheus для сбора метрик
- Визуализация метрик через Grafana
- Логирование событий через Zap
Система работает с двумя основными сущностями:
- User - информация о пользователе (имя, email, пароль)
- Task - задача с описанием, статусом, приоритетом и другими атрибутами
- Язык программирования: Go
- База данных: PostgreSQL
- Кеширование: Redis
- Асинхронные сообщения: RabbitMQ
- Веб-фреймворк: Chi
- Аутентификация: JWT
- Реалтайм коммуникация: Gorilla WebSocket
- Мониторинг: Prometheus, Grafana
- Документация API: Swagger
- Контейнеризация: Docker, Docker Compose
- Логирование: Zap
- Склонируйте репозиторий:
git clone https://github.com/Voreger/TaskTracker- Установите зависимости:
go mod tidy- Запустите приложение с помощью Docker Compose:
docker-compose -f deploy/docker-compose.yml up --build- Приложение будет доступно по адресу
http://localhost:8080 - Документация API доступна по адресу
http://localhost:8080/swagger/ - Панель мониторинга Grafana доступна по адресу
http://localhost:3000
POST /auth/register- регистрация нового пользователяPOST /auth/login- аутентификация пользователяGET /users/{id}- получить информацию о пользователеPUT /users/{id}- обновить информацию о пользователеDELETE /users/{id}- удалить пользователя
GET /tasks- получить список задачPOST /tasks- создать новую задачуGET /tasks/{id}- получить информацию о задачеPUT /tasks/{id}- обновить информацию о задачеDELETE /tasks/{id}- удалить задачу
GET /ws- подключение к WebSocket для реалтайм обновлений
Система включает JWT-аутентификацию для защиты API-эндпоинтов. Все запросы к защищенным маршрутам должны содержать корректный заголовок авторизации с JWT-токеном.
Все запросы и ошибки логируются с использованием библиотеки Zap для возможности аудита и диагностики проблем в работе системы.
Система собирает метрики производительности и доступна для мониторинга через Prometheus. Графики и дашборды доступны через Grafana.
Миграции базы данных управляются через SQL-файлы в папке migrations. При запуске приложения миграции применяются автоматически.