RiddleFlow — это платформа для организации и проведения хакатонов и контестов. Она включает в себя систему проверки решений и ролевую модель (участник/создатель). Платформа позволяет пользователям регистрироваться, участвовать в хакатонах, создавать задания и отправлять решения.
- Backend: Python, FastAPI, SQLAlchemy, Alembic
- База данных: PostgreSQL
- Кеширование: Redis
- Фоновые задачи: Celery
- Контейнеризация: Docker
- Установите Docker и Docker Compose.
git clone https://github.com/yourusername/RiddleFlow.git
cd RiddleFlowСоздайте виртуальное окружение и выполните миграции
cd services/backend/src
pip install -r requirements.txt
alembic upgrade head- Соберите и запустите контейнеры:
docker-compose up -d --build- После успешного запуска, приложение будет доступно по адресу:
http://localhost:5000.
Для мониторинга фоновых задач Celery, вы можете получить доступ к Flower по адресу: http://localhost:5555.
При первом запуске приложения, необходимо выполнить миграции базы данных:
docker-compose exec backend alembic upgrade headЧтобы остановить приложение, выполните:
docker-compose down- Зарегистрируйтесь как участник или создатель.
- Создавайте хакатоны и задания.
- Участвуйте в хакатонах, отправляя свои решения.
Этот проект лицензирован под лицензией GNU General Public License v3.0. Подробности можно найти в файле LICENSE.
При разработке проекта на FastAPI мы опирались на официальную документацию, статьи и обучающие материалы, чтобы обеспечить корректную реализацию ключевых компонентов системы.
-
FastAPI
- Документация FastAPI
- Основной источник информации по построению API, работе с зависимостями (Dependency Injection), валидации данных через Pydantic и автоматической генерации OpenAPI-документации.
-
Celery
- Документация Celery
- Использовалась для настройки фоновых задач. Особое внимание уделялось интеграции с FastAPI и мониторингу через Flower.
-
SQLAlchemy
- Документация SQLAlchemy
- Применялась для работы с реляционными базами данных в сочетании с FastAPI (через
SQLAlchemy ORMиasyncpgдля асинхронных запросов).
-
Redis
- Документация Redis
- Использовался как брокер сообщений для Celery, а также для кэширования часто запрашиваемых данных.
-
Статья "Developing a Single-Page App with FastAPI and Vue.js" (testdriven.io)
- Ссылка
- Помогла в настройке взаимодействия бэкенда (FastAPI) с фронтендом (Vue.js), включая CORS и асинхронные HTTP-запросы.
-
Обучающий плейлист по FastAPI (YouTube)
- Ссылка
- Разбор архитектурных решений, работы с Pydantic, SQLAlchemy и построения REST API.
-
Статья "Celery + Flower: асинхронные задачи в Python" (Habr)
- Ссылка
- Практическое руководство по настройке Celery и визуализации задач через Flower.