HTTP API - это RESTful веб-сервис для системы единого входа (Single Sign-On) с управлением пользователями, очередями на консультации и группами студентов. Проект реализован на Go с использованием архитектуры Clean Architecture.
Проект следует принципам Clean Architecture с четким разделением слоев:
├── cmd/ # Точка входа в приложение
├── configs/ # Конфигурационные файлы
├── migrations/ # SQL миграции базы данных
├── models/ # Модели данных (DTO)
├── pkg/ # Основная бизнес-логика
│ ├── config/ # Управление конфигурацией
│ ├── handler/ # HTTP обработчики (Presentation Layer)
│ ├── repository/ # Слой доступа к данным (Data Layer)
│ └── services/ # Бизнес-логика (Use Cases)
├── testing/ # Функциональные тесты
└── README.md # Документация API
- Язык: Go 1.19+
- Веб-фреймворк: Gin
- База данных: PostgreSQL
- ORM: sqlx
- Аутентификация: JWT токены
- Хеширование паролей: bcrypt
- Конфигурация: Viper
- Контейнеризация: Docker
- Тестирование: Go testing package
- User - пользователи системы
- Group - группы студентов
- Queue - очереди на консультации
- QueueParticipant - участники очередей
- Config - конфигурация приложения
- handler.go - основные маршруты и middleware
- user.go - управление пользователями
- queue.go - управление очередями
- groups.go - управление группами
- service.go - интерфейсы и основная логика
- jwt.go - работа с JWT токенами
- users.go - логика работы с пользователями
- queue.go - логика работы с очередями
- repository.go - интерфейсы репозитория
- repository_postgres.go - подключение к PostgreSQL
- users.go - операции с пользователями
- groups.go - операции с группами
- queue.go - операции с очередями
- queue_participants.go - операции с участниками очередей
- JWT токены для аутентификации
- bcrypt для хеширования паролей
- Middleware для проверки токенов
- Роли пользователей (обычный пользователь/администратор)
POST /auth/sign-up- регистрация пользователяPOST /auth/sign-in- вход в систему
GET /api/profile- профиль пользователяPUT /api/profile- обновление профиляGET /api/admin- проверка статуса админаGET /api/admin/users- список пользователей (админ)DELETE /api/admin/users/:id- удаление пользователя (админ)
GET /api/queues- список очередейPOST /api/queues- создание очереди (админ)GET /api/queues/:id- получение очередиPUT /api/queues/:id- обновление очереди (админ)DELETE /api/queues/:id- удаление очереди (админ)POST /api/queues/:id/join- присоединение к очередиDELETE /api/queues/:id/leave- покидание очередиGET /api/queues/:id/participants- участники очередиPOST /api/queues/:id/shift- сдвиг очереди (админ)
GET /api/groups- список группPOST /api/groups- создание группы (админ)GET /api/groups/:id- получение группыPUT /api/groups/:id- обновление группы (админ)DELETE /api/groups/:id- удаление группы (админ)
- users - пользователи системы
- groups - группы студентов
- queues - очереди на консультации
- queue_participants - участники очередей
000001_create_initial_tables.up.sql- создание таблиц000001_create_initial_tables.down.sql- удаление таблиц
Проект включает полный набор функциональных тестов:
- 65 тестов покрывающих все 21 endpoint
- Позитивные и негативные сценарии
- Проверка авторизации и прав доступа
- Граничные случаи и валидация данных
functional_test.go- базовые функцииauth_functional_test.go- тесты аутентификацииuser_functional_test.go- тесты пользователейqueue_functional_test.go- тесты очередейgroup_functional_test.go- тесты группapi_status_test.go- тесты статуса API
- Go 1.19+
- PostgreSQL 12+
- Docker (опционально)
# Установка зависимостей
go mod download
# Настройка базы данных
# Создать базу данных и применить миграции
# Запуск приложения
go run cmd/main.go# Запуск с Docker Compose
docker-compose up -dКонфигурация приложения находится в configs/config.yml:
port: "8080"
db:
host: "localhost"
port: "5432"
username: "postgres"
password: "password"
dbname: "sso_db"
sslmode: "disable"- Чистая архитектура с разделением слоев
- Интерфейсы для всех основных компонентов
- Dependency Injection для тестируемости
- Подробные комментарии на русском языке
- Go fmt для форматирования
- Go vet для статического анализа
- Комментарии для всех публичных функций
- Обработка ошибок на всех уровнях
- README.md - подробная документация API с примерами
- Комментарии в коде - описание всех функций и структур
- Тесты - примеры использования API
- JWT токены с временем истечения
- Хеширование паролей с bcrypt
- Валидация входных данных
- Проверка прав доступа
- Connection pooling для PostgreSQL
- Эффективные SQL запросы
- Минимальное использование памяти
- Graceful shutdown
- Обработка ошибок на всех уровнях
- Валидация данных
- Логирование операций
- 21 endpoint для полного CRUD функционала
- 65 функциональных тестов с 100% покрытием endpoints
- 4 основных сущности (пользователи, группы, очереди, участники)
- Clean Architecture с четким разделением ответственности
- Полная документация API и кода
Проект готов к развертыванию в продакшене и включает:
- ✅ Полную документацию API
- ✅ Функциональные тесты
- ✅ Docker контейнеризацию
- ✅ Graceful shutdown
- ✅ Обработку ошибок
- ✅ Валидацию данных
- ✅ Безопасность (JWT, bcrypt)
- ✅ Логирование
- ✅ Конфигурацию через файлы
Проект демонстрирует профессиональный подход к разработке веб-API с использованием современных практик Go разработки.