Серверная часть приложения «Активиум» с Activium API, фоновыми процессами, Telegram-ботом и сайтом
- Пользование ребенком и родителем
- Просмотр открытого рейтинга в классе по каждому предмету и общего
- Просмотр любых оценок всего класса
- Уведомления о новых оценках, внеурочных занятиях для детей и их родителей
- Создание заметок к уроку с напоминанием на любое время
- Написание отзывов с модерацией и открытый просмотр на сайте с возможностью поставить реакцию
- Публикация школьных постов с мероприятиями для всех обучающихся
- Отправка похвалы от родителя за полученные оценки
Полная реализация возможностей сервера доступна в мобильном приложении «Активиум»
Официальный сайт доступен по адресу activium.tgmaksim.ru
- Python 3.12
- FastAPI
- Pydantic
- Docker
- SQLAlchemy 2.x (async)
- Alembic
- PostgreSQL
- Pytest
- Aiogram
- Firebase
- src — Основное приложение FastAPI
- src.config — Конфигурация проекта, OpenAPI и настройки базы данных
- src.dependencies — Зависимости FastAPI
- src.middlewares — Промежуточное ПО для мониторинга, валидации и логирования
- src.models, src.schemas — Модели SQLAlchemy и схемы Pydantic
- backgrounds, crons — Фоновые задачи и периодические скрипты для работы уведомлений, статистики и других задач
- dnevnikru — SDK для интеграции с API Дневника.ру
- ai — SDK для интеграции OpenRouter API
- firebase — SDK для интеграции с API Firebase
- tgbot — Telegram-бот для администрирования образовательных организаций
- tests — Тестирование с Pytest
- templates — Шаблоны HTML для сайта и школьных постов
- www — Статические файлы для сайта, школьных постов и картинок уведомлений
- Установить Docker
- Скопировать репозиторий и открыть директорию
git clone https://github.com/tgmaksim/ActiviumServer cd ActiviumServer - Переименовать файлы-шаблоны
cp .example.env .env cp .example.debug.env .debug.env cp .example.tests.env .tests.env cp firebase-adminsdk.example.json firebase-adminsdk.json cp alembic.example.ini alembic.ini
- Для локального запуска заменить ключи в .debug.env
DNEVNIK_CLIENT_ID=key OPENAI_URL=https://example.com/v1 # Необязательно OPENAI_API_KEY=key # Необязательно AI_STATISTICS_ANALISE=0 # Или выключить использование ИИ для анализа статистики BOT_TOKEN=bot_id:token # API-ключ бота от @BotFather ADMIN_CHAT_IDS='[0]' # User_id пользователя с правами администратора в боте BOT_URL=https://t.me/username # Заменить на username бота START_TGBOT_WORKER=0 # Или выключить бота полностью
- Для работы уведомлений на клиентское приложение заменить конфигурацию в firebase-adminsdk.json
- Запустить Docker
docker-compose up --build
После запуска
- pgAdmin доступен по адресу http://localhost:5050 с логином и паролем
admin@admin.comadmin_password - База данных развернута на хосту
postgres_dbс логином и паролемdb_userdb_password - Сайт и сервер доступны по адресу http://localhost:8000
- Документация Activium API - Swagger доступна по адресу http://localhost:8000/api/v2/docs
- Установить Docker
- Скопировать репозиторий и открыть директорию
git clone https://github.com/tgmaksim/ActiviumServer cd ActiviumServer - Переименовать файлы-шаблоны
cp .example.env .env cp .example.debug.env .debug.env cp .example.tests.env .tests.env cp firebase-adminsdk.example.json firebase-adminsdk.json cp alembic.example.ini alembic.ini
- Запустить тесты в Docker
docker-compose -f docker-compose.test.yml up --build
Note
Для production-запуска также требуется настроить NGINX для передачи статических файлов из директории www и CRON-задания на нужное время
python cron.py statistics
python cron.py clear
python cron.py reloadNote
Для полноценного тестирования в любом случае кроме DNEVNIK_CLIENT_ID требуется профиль в Дневнике.ру.
Если Вы хотите протестировать Activium Server, то обратитесь к @tgmaksim_company.
Я помогу с ключом к API Дневника.ру и предоставлю аккаунт в нем
Работа некоторых основных сущностей и процессов сервера описана в документации
Проект распространяет под лицензией GNU GPLv3, доступной в файле LICENSE