46 lines
1.6 KiB
Markdown
46 lines
1.6 KiB
Markdown
# tgex-backend
|
||
|
||
## Быстрый старт
|
||
|
||
```bash
|
||
# Установить зависимости
|
||
uv sync
|
||
|
||
# Скопировать примеры конфигов
|
||
cp docker-compose.yml.example docker-compose.yml
|
||
cp .env.example .env
|
||
|
||
# Поднять Postgres и сервисы
|
||
make up
|
||
|
||
# (первый запуск) проинициализировать базу и таблицы aerich
|
||
make migrate-init
|
||
|
||
# Применить актуальные миграции
|
||
make migrate-up
|
||
```
|
||
|
||
Открыть:
|
||
- API: http://localhost:8000
|
||
- Swagger: http://localhost:8000/docs
|
||
|
||
## Полезные команды
|
||
|
||
```bash
|
||
make up # поднять приложение и Postgres
|
||
make down # остановить контейнеры
|
||
make migrate-init # однократная инициализация базы (aerich init-db)
|
||
make migrate-up # применить миграции (aerich upgrade)
|
||
make migrate-create # сгенерировать новую миграцию (aerich migrate)
|
||
make test # pytest
|
||
uv run ruff check . # линтер
|
||
uv run mypy . # типизация
|
||
```
|
||
|
||
## Архитектура
|
||
|
||
- FastAPI + PostgreSQL + Tortoise ORM, aiogram 3.x для бота
|
||
- Слои: `domain` (модели/правила), `usecase` (бизнес-логика), `adapter` (БД/бот/JWT), `controller` (HTTP + Telegram), `dto`
|
||
- Все use case оборачиваются в `self.database.transaction()` и проверяют права через `domain.WorkspacePermissions`
|
||
- Миграции и схема БД управляются aerich (`migrations/models`)
|