https://github.com/bomjkee/hackathonapp
Backend часть приложения HackathonMiniApp, написанная на асинхронном фреймворке FastAPI + Aiogram + Redis + PostgreSQL + SQLAlchemy с валидацией от Pydantic
https://github.com/bomjkee/hackathonapp
aiogram docker docker-compose fastapi postgresql pydantic redis sqlalchemy telegram-bot telegram-mini-app
Last synced: 12 months ago
JSON representation
Backend часть приложения HackathonMiniApp, написанная на асинхронном фреймворке FastAPI + Aiogram + Redis + PostgreSQL + SQLAlchemy с валидацией от Pydantic
- Host: GitHub
- URL: https://github.com/bomjkee/hackathonapp
- Owner: bomjkee
- Created: 2024-03-05T14:17:55.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-04-08T16:04:14.000Z (about 1 year ago)
- Last Synced: 2025-06-07T12:07:06.002Z (about 1 year ago)
- Topics: aiogram, docker, docker-compose, fastapi, postgresql, pydantic, redis, sqlalchemy, telegram-bot, telegram-mini-app
- Language: Python
- Homepage:
- Size: 3.16 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Hackathon MiniApp Backend
Бэкенд часть приложения для регистрации и управления хакатонами РТУ МИРЭА. Проект реализован с использованием FastAPI и aiogram.
## 🚀 Возможности
- Управление хакатонами (создание, редактирование, удаление)
- Регистрация и управление командами
- Система приглашений участников
- Кэширование данных с использованием Redis
- Административная панель в Telegram
- Интеграция с PostgreSQL для хранения данных
## 🛠 Технологический стек
- **Backend Framework**: FastAPI
- **Telegram Bot**: aiogram 3.x
- **База данных**: PostgreSQL
- **Кэширование**: Redis
- **Аутентификация**: Telegram
- **Документация**: Swagger/OpenAPI
- **Логирование**: loguru
- **Тестирование**: pytest
## 📋 Требования
- Python 3.12+
- PostgreSQL 15+
- Redis 7+
## 🚀 Установка и запуск
1. Клонируйте репозиторий:
```bash
git clone https://github.com/your-username/HackathonMiniApp.git
cd HackathonMiniApp
```
2. Установите зависимости:
```bash
poetry install
```
3. Создайте файл `.env` в корневой директории и заполните его :
```env
DATABASE_URL=postgresql+asyncpg://user:password@localhost:5432/hackathon_db
REDIS_URL=redis://localhost:6379/0
BOT_TOKEN=your_telegram_bot_token
ADMIN_IDS=123456789,987654321 # ID администраторов через запятую
```
4. Примените миграции:
```bash
alembic upgrade head
```
5. Запустите приложение:
```bash
uvicorn app.main:app --reload
```
## 📚 Структура проекта
```
HackathonMiniApp/
├── app/
│ ├── api/ # API эндпоинты
│ ├── bot/ # Telegram бот
│ ├── db/ # Работа с базой данных
│ ├── redis/ # Redis операции
│ └── main.py # Точка входа
├── migrations/ # Миграции базы данных
├── tests/ # Тесты
├── alembic.ini # Конфигурация Alembic
├── pyproject.toml # Зависимости проекта
└── README.md # Документация
```
## 🔐 Аутентификация и авторизация
- Администраторы определяются по их Telegram ID
- Telegram init data для API аутентификации
- Роли пользователей: администратор, лидер команды, участник
## 📊 База данных
Основные сущности:
- Хакатоны
- Команды
- Пользователи
- Приглашения
- Уведомления
## 🔄 Redis кэширование
Используется для:
- Кэширования данных хакатонов
- Хранения временных данных приглашений
- Управления состоянием бота
## 📝 API документация
После запуска приложения документация доступна по адресу:
- Swagger UI: `http://localhost:8000/docs`
- ReDoc: `http://localhost:8000/redoc`
## 🧪 Тестирование
```bash
pytest tests/
```
## 🤝 Вклад в проект
1. Форкните репозиторий
2. Создайте ветку для новой фичи (`git checkout -b feature/amazing-feature`)
3. Закоммитьте изменения (`git commit -m 'Add some amazing feature'`)
4. Запушьте ветку (`git push origin feature/amazing-feature`)
5. Откройте Pull Request
## 📄 Лицензия
MIT License - смотрите файл [LICENSE](LICENSE) для подробностей