From 438a8aaa88dac51437c5664212ca8bd306953d75 Mon Sep 17 00:00:00 2001 From: Markov Date: Sun, 15 Feb 2026 11:57:18 +0100 Subject: [PATCH] Initial backend structure --- README.md | 56 ++++++++++++++++++++ docker-compose.yml | 102 +++++++++++++++++++++++++++++++++++++ services/agents/.gitkeep | 0 services/chat/.gitkeep | 0 services/gateway/.gitkeep | 0 services/projects/.gitkeep | 0 services/tasks/.gitkeep | 0 7 files changed, 158 insertions(+) create mode 100644 README.md create mode 100644 docker-compose.yml create mode 100644 services/agents/.gitkeep create mode 100644 services/chat/.gitkeep create mode 100644 services/gateway/.gitkeep create mode 100644 services/projects/.gitkeep create mode 100644 services/tasks/.gitkeep diff --git a/README.md b/README.md new file mode 100644 index 0000000..3d3f9a0 --- /dev/null +++ b/README.md @@ -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=... +``` diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..a2d7819 --- /dev/null +++ b/docker-compose.yml @@ -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 diff --git a/services/agents/.gitkeep b/services/agents/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/services/chat/.gitkeep b/services/chat/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/services/gateway/.gitkeep b/services/gateway/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/services/projects/.gitkeep b/services/projects/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/services/tasks/.gitkeep b/services/tasks/.gitkeep new file mode 100644 index 0000000..e69de29