# Freelancer Match — Умная площадка для фрилансеров Площадка для фрилансеров и заказчиков с AI-подбором, escrow-гарантом сделок и рейтинговой системой. ## 🚀 Быстрый старт ### Требования - Docker + Docker Compose - Python 3.12+ (для локальной разработки) - Node.js 20+ (для фронтенда) - PostgreSQL 16+ - Redis 7+ ### Запуск через Docker Compose ```bash # 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 ```bash cd backend python -m venv .venv source .venv/bin/activate pip install -r requirements.txt uvicorn app.main:app --reload --port 8000 ``` #### Frontend ```bash 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 | ## 🧪 Тесты ```bash # 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-транзакцию | ## 🚀 Деплой на сервер ```bash # 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