Initial backend structure

This commit is contained in:
Markov 2026-02-15 11:57:18 +01:00
commit 438a8aaa88
7 changed files with 158 additions and 0 deletions

56
README.md Normal file
View File

@ -0,0 +1,56 @@
# Team Board — Backend
API сервисы для Team Board. Python + FastAPI, микросервисная архитектура.
## Сервисы
| Сервис | Порт | Описание |
|--------|------|----------|
| gateway | 8000 | API Gateway, аутентификация |
| projects | 8001 | Проекты, Git интеграция |
| tasks | 8002 | Задачи, канбан, подзадачи |
| agents | 8003 | AI агенты |
| chat | 8004 | Чаты проектов |
## Структура
```
backend/
├── services/
│ ├── gateway/
│ ├── projects/
│ ├── tasks/
│ ├── agents/
│ └── chat/
├── docker-compose.yml
└── README.md
```
## Запуск
```bash
# Development
cd services/tasks
pip install -r requirements.txt
uvicorn app:app --reload --port 8002
# Docker
docker-compose up -d
```
## Стек
- Python 3.12
- FastAPI
- PostgreSQL
- Redis
- SQLAlchemy
## Переменные окружения
```env
DATABASE_URL=postgresql://team_board:password@localhost:5432/team_board
REDIS_URL=redis://localhost:6379
AUTHENTIK_CLIENT_ID=...
AUTHENTIK_CLIENT_SECRET=...
```

102
docker-compose.yml Normal file
View File

@ -0,0 +1,102 @@
version: "3.8"
services:
# API Gateway
gateway:
build: ./services/gateway
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://team_board:${DB_PASSWORD}@postgres:5432/team_board
- REDIS_URL=redis://redis:6379
- AUTHENTIK_CLIENT_ID=${AUTHENTIK_CLIENT_ID}
- AUTHENTIK_CLIENT_SECRET=${AUTHENTIK_CLIENT_SECRET}
depends_on:
- postgres
- redis
# Projects Service
projects:
build: ./services/projects
ports:
- "8001:8001"
environment:
- DATABASE_URL=postgresql://team_board:${DB_PASSWORD}@postgres:5432/team_board
- GITEA_URL=https://git.uix.su
- GITEA_TOKEN=${GITEA_TOKEN}
depends_on:
- postgres
# Tasks Service
tasks:
build: ./services/tasks
ports:
- "8002:8002"
environment:
- DATABASE_URL=postgresql://team_board:${DB_PASSWORD}@postgres:5432/team_board
- REDIS_URL=redis://redis:6379
depends_on:
- postgres
- redis
# Agents Service
agents:
build: ./services/agents
ports:
- "8003:8003"
environment:
- DATABASE_URL=postgresql://team_board:${DB_PASSWORD}@postgres:5432/team_board
- REDIS_URL=redis://redis:6379
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- OPENAI_API_KEY=${OPENAI_API_KEY}
depends_on:
- postgres
- redis
# Chat Service
chat:
build: ./services/chat
ports:
- "8004:8004"
environment:
- DATABASE_URL=postgresql://team_board:${DB_PASSWORD}@postgres:5432/team_board
- REDIS_URL=redis://redis:6379
depends_on:
- postgres
- redis
# Frontend
frontend:
build: ./frontend
ports:
- "3000:3000"
environment:
- NEXT_PUBLIC_API_URL=http://gateway:8000
depends_on:
- gateway
# PostgreSQL (используем существующий на хосте)
# postgres:
# image: postgres:16
# environment:
# - POSTGRES_USER=team_board
# - POSTGRES_PASSWORD=${DB_PASSWORD}
# - POSTGRES_DB=team_board
# volumes:
# - postgres_data:/var/lib/postgresql/data
# Redis для очередей и pub/sub
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data
volumes:
# postgres_data:
redis_data:
networks:
default:
name: team-board

0
services/agents/.gitkeep Normal file
View File

0
services/chat/.gitkeep Normal file
View File

View File

View File

0
services/tasks/.gitkeep Normal file
View File