4ccf4b718499dd9e6855929edf204f64af60aff5
- backend/app/schemas/auth.py, ai_match.py, escrow.py (схемы) - frontend/components/ui/button.tsx (UI компонент) - email-validator в requirements.txt - frontend/tsconfig.json, tailwind.config.js, postcss.config.js - frontend: login page, projects/[id] page, ai-match page - Dockerfile для backend и frontend - docker-compose.yml с app-контейнерами и healthcheck - .env.example с полными переменными окружения - backend/tests/ — pytest тесты (conftest + test_health) - .drone.yml — CI/CD пайплайн для Drone CI - README.md — полный гайд по деплою
Freelancer Match — Умная площадка для фрилансеров
Площадка для фрилансеров и заказчиков с AI-подбором, escrow-гарантом сделок и рейтинговой системой.
🚀 Быстрый старт
Требования
- Docker + Docker Compose
- Python 3.12+ (для локальной разработки)
- Node.js 20+ (для фронтенда)
- PostgreSQL 16+
- Redis 7+
Запуск через Docker Compose
# 1. Скопируйте .env.example в .env и заполните переменные
cp backend/.env.example backend/.env
# 2. Запустите стек
docker compose up -d --build
# 3. Примените миграции БД
docker compose exec backend alembic upgrade head
# 4. Проверьте что всё работает
curl http://localhost:8000/api/health
Локальная разработка
Backend
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --reload --port 8000
Frontend
cd frontend
npm ci
npm run dev
📁 Структура проекта
freelancer-match/
├── backend/ # FastAPI бэкенд
│ ├── app/
│ │ ├── api/ # API endpoints
│ │ ├── models/ # SQLAlchemy модели
│ │ ├── schemas/ # Pydantic схемы
│ │ ├── services/ # Бизнес-логика
│ │ └── core/ # Базовые модули (БД, безопасность)
│ ├── alembic/ # Миграции БД
│ ├── tests/ # Тесты pytest
│ ├── Dockerfile
│ └── requirements.txt
├── frontend/ # Next.js фронтенд
│ ├── app/ # App Router (pages)
│ ├── components/ui/ # UI компоненты
│ ├── lib/ # Утилиты и провайдеры
│ ├── Dockerfile
│ └── package.json
├── docker-compose.yml # Стек сервисов
└── .drone.yml # CI/CD для Drone CI
🔑 Переменные окружения
| Переменная | Описание | Пример |
|---|---|---|
DATABASE_URL |
Подключение к PostgreSQL | postgresql+asyncpg://user:pass@host/db |
REDIS_URL |
Подключение к Redis | redis://localhost:6379/0 |
SECRET_KEY |
Ключ для JWT токенов | Сгенерируйте через openssl rand -hex 32 |
OPENAI_API_KEY |
API ключ OpenAI для AI-матчинга | sk-... |
STRIPE_SECRET_KEY |
Ключ Stripe для escrow | sk_test_... |
SMTP_* |
Настройки email | smtp.gmail.com:587 |
🧪 Тесты
# Backend (pytest)
cd backend && pytest tests/ -v
# Frontend (linting)
cd frontend && npx next lint
🔒 Безопасность
- JWT аутентификация с refresh токенами
- Хеширование паролей через bcrypt
- CORS middleware
- Escrow-гарант сделок (Stripe интеграция)
- AI-матчинг с pgvector эмбеддингами
📊 API Endpoints
| Метод | Endpoint | Описание |
|---|---|---|
| POST | /api/auth/register |
Регистрация пользователя |
| POST | /api/auth/login |
Вход (JWT) |
| GET | /api/projects |
Список проектов |
| POST | /api/projects |
Создать проект |
| POST | /api/ai/match-project |
AI-подбор фрилансеров |
| POST | /api/escrow/create |
Создать escrow-транзакцию |
🚀 Деплой на сервер
# 1. Настройте .env.production
cp backend/.env.example backend/.env.production
# 2. Обновите docker-compose.yml для продакшена (уберите порты, добавьте healthcheck)
# 3. Запустите через Docker Compose
docker compose -f docker-compose.prod.yml up -d --build
# 4. Примените миграции
docker compose exec backend alembic upgrade head
🤖 CI/CD (Drone CI)
Проект настроен для автоматического деплоя через Drone CI:
.drone.yml— пайплайн с тестами, сборкой и деплоем- Настроен на Gitea (
ms.webhop.me) - Автоматический запуск при push в main
📝 Лицензия
MIT © 2026 Freelancer Match
Description
Languages
Python
75.5%
TypeScript
23.4%
Dockerfile
0.4%
CSS
0.4%
JavaScript
0.3%