Skip to content

Task Tracker with PostgreSQL, Redis, RabbitMQ, JWT authentication, WebSocket real-time update, Grafana + Prometheus monitoring, and Swagger documentation.

Notifications You must be signed in to change notification settings

Voreger/TaskTracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TaskTracker

TaskTracker — это современное веб-приложение для управления задачами с поддержкой аутентификации, реалтайм обновлений, асинхронной обработки задач и мониторинга. Проект реализован на языке Go с использованием множества современных технологий.

Описание

TaskTracker представляет собой систему управления задачами, которая позволяет пользователям создавать, редактировать, отслеживать и удалять задачи. Приложение включает в себя:

  • Аутентификацию пользователей с использованием JWT
  • Реалтайм обновления через WebSocket
  • Асинхронную обработку задач через RabbitMQ
  • Кеширование данных через Redis
  • Мониторинг производительности через Prometheus и Grafana
  • Автоматическую генерацию документации API через Swagger

Архитектура

Проект состоит из следующих компонентов:

API-сервер

  • REST API для работы с задачами и пользователями
  • Использует PostgreSQL для хранения данных
  • Включает систему аутентификации на основе JWT
  • Обеспечивает реалтайм обновления через WebSocket
  • Обрабатывает CORS и стандартные middleware для логирования

Worker

  • Отдельный сервис для асинхронной обработки задач
  • Получает сообщения из очереди RabbitMQ
  • Обрабатывает события жизненного цикла задач (создание, обновление, удаление)
  • Логирует события в систему

Кеширование

  • Использует Redis для кеширования часто запрашиваемых данных
  • Ускоряет доступ к информации и снижает нагрузку на базу данных

Мониторинг

  • Интеграция с Prometheus для сбора метрик
  • Визуализация метрик через Grafana
  • Логирование событий через Zap

Сущности

Система работает с двумя основными сущностями:

  1. User - информация о пользователе (имя, email, пароль)
  2. Task - задача с описанием, статусом, приоритетом и другими атрибутами

Технологии

  • Язык программирования: Go
  • База данных: PostgreSQL
  • Кеширование: Redis
  • Асинхронные сообщения: RabbitMQ
  • Веб-фреймворк: Chi
  • Аутентификация: JWT
  • Реалтайм коммуникация: Gorilla WebSocket
  • Мониторинг: Prometheus, Grafana
  • Документация API: Swagger
  • Контейнеризация: Docker, Docker Compose
  • Логирование: Zap

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

  1. Склонируйте репозиторий:
git clone https://github.com/Voreger/TaskTracker
  1. Установите зависимости:
go mod tidy
  1. Запустите приложение с помощью Docker Compose:
docker-compose -f deploy/docker-compose.yml up --build
  1. Приложение будет доступно по адресу http://localhost:8080
  2. Документация API доступна по адресу http://localhost:8080/swagger/
  3. Панель мониторинга Grafana доступна по адресу http://localhost:3000

API Endpoints

Пользователи

  • 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} - удалить задачу

WebSocket

  • GET /ws - подключение к WebSocket для реалтайм обновлений

Безопасность

Система включает JWT-аутентификацию для защиты API-эндпоинтов. Все запросы к защищенным маршрутам должны содержать корректный заголовок авторизации с JWT-токеном.

Логирование

Все запросы и ошибки логируются с использованием библиотеки Zap для возможности аудита и диагностики проблем в работе системы.

Мониторинг

Система собирает метрики производительности и доступна для мониторинга через Prometheus. Графики и дашборды доступны через Grafana.

Миграции

Миграции базы данных управляются через SQL-файлы в папке migrations. При запуске приложения миграции применяются автоматически.

About

Task Tracker with PostgreSQL, Redis, RabbitMQ, JWT authentication, WebSocket real-time update, Grafana + Prometheus monitoring, and Swagger documentation.

Topics

Resources

Stars

Watchers

Forks