Skip to content

kurnosovmak/test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Мессенджер (Backend)

Бэкенд-часть мессенджера, реализованная на 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 (запускается в контейнере)

Запуск проекта

Через Docker Compose

  1. Клонируйте репозиторий:
git clone <repository-url>
cd messenger
  1. Создайте и настройте конфигурационный файл:
cp .yaml.example .yaml
# Отредактируйте .yaml файл, установив необходимые значения для JWT секрета и других параметров
  1. Запустите приложение:
docker-compose up -d

Приложение будет доступно по адресу http://localhost:8080

Локальный запуск

  1. Установите зависимости:
go mod download
  1. Создайте и настройте конфигурационный файл:
cp .yaml.example .yaml
# Отредактируйте .yaml файл, установив необходимые значения для JWT секрета и других параметров
  1. Запустите PostgreSQL:
docker-compose up -d postgres
  1. Запустите сервер:
go run cmd/server/main.go

Миграции

Через Docker

Миграции автоматически применяются при запуске через 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors