Бэкенд-часть мессенджера, реализованная на Go.
На данный момент реализованы:
- Базовая инфраструктура проекта
- Работа с базой данных (PostgreSQL)
- Система аутентификации и авторизации (JWT)
- Базовая конфигурация Docker
Подробный список задач и их статус можно найти в документации по задачам.
Проект следует принципам чистой архитектуры и имеет следующую структуру:
├── api/ # API спецификации и документация
├── cmd/ # Точки входа приложения
│ ├── migrator/ # Утилита для миграций БД
│ └── server/ # Основной сервер приложения
├── internal/ # Внутренняя логика приложения
│ ├── auth/ # Аутентификация и авторизация/регистрация
│ ├── config/ # Конфигурация приложения
│ └── database/ # Работа с базой данных
├── migrations/ # SQL миграции
└── pkg/ # Переиспользуемые пакеты
├── jwt/ # Работа с JWT токенами
└── logger/ # Логирование
- Docker и Docker Compose
- Go 1.20 или выше (для локальной разработки)
- PostgreSQL (запускается в контейнере)
- Клонируйте репозиторий:
git clone <repository-url>
cd messenger- Создайте и настройте конфигурационный файл:
cp .yaml.example .yaml
# Отредактируйте .yaml файл, установив необходимые значения для JWT секрета и других параметров- Запустите приложение:
docker-compose up -dПриложение будет доступно по адресу http://localhost:8080
- Установите зависимости:
go mod download- Создайте и настройте конфигурационный файл:
cp .yaml.example .yaml
# Отредактируйте .yaml файл, установив необходимые значения для JWT секрета и других параметров- Запустите PostgreSQL:
docker-compose up -d postgres- Запустите сервер:
go run cmd/server/main.goМиграции автоматически применяются при запуске через Docker Compose. Для ручного запуска:
docker-compose run --rm migratorДля применения миграций локально:
go run cmd/migrator/main.goОсновные настройки приложения находятся в файле .yaml. Пример конфигурации:
# Server Configuration
app:
host: localhost
port: 8080
# Database Configuration
db:
host: localhost
port: 5432
user: postgres
password: postgres
name: messenger
sslmode: disable
# JWT Configuration
jwt:
secret: your-secret-key
expiration: 24hМигратор поддерживает следующие параметры командной строки:
--config- путь к конфигурационному файлу (по умолчанию.yaml)--action- действие для выполнения (по умолчаниюup)up- применить все новые миграцииdown- откатить все миграцииversion- показать текущую версию миграций
Примеры использования:
# Применить все миграции
go run cmd/migrator/main.go --action up
# Откатить все миграции
go run cmd/migrator/main.go --action down
# Показать текущую версию миграций
go run cmd/migrator/main.go --action version
# Использовать другой конфигурационный файл
go run cmd/migrator/main.go --config config.yaml --action upСервер поддерживает следующие параметры командной строки:
--config- путь к конфигурационному файлу (по умолчанию.yaml)
Примеры использования:
# Запуск сервера с конфигурацией по умолчанию
go run cmd/server/main.go
# Запуск сервера с указанным конфигурационным файлом
go run cmd/server/main.go --config prod.yamlПроект использует:
- Go для бэкенда
- PostgreSQL для хранения данных
- JWT для аутентификации
- WebSocket для real-time коммуникации
- Docker для контейнеризации
- Swagger для документации API