Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


Activium Server

Activium Server

Серверная часть приложения «Активиум» с Activium API, фоновыми процессами, Telegram-ботом и сайтом


Python 3.12 GNU GPL v3
Docker FastAPI PostgreSQL Pydantic Pytest Firebase

▶ Возможности

  • Пользование ребенком и родителем
  • Просмотр открытого рейтинга в классе по каждому предмету и общего
  • Просмотр любых оценок всего класса
  • Уведомления о новых оценках, внеурочных занятиях для детей и их родителей
  • Создание заметок к уроку с напоминанием на любое время
  • Написание отзывов с модерацией и открытый просмотр на сайте с возможностью поставить реакцию
  • Публикация школьных постов с мероприятиями для всех обучающихся
  • Отправка похвалы от родителя за полученные оценки

📱 Мобильное приложение

Полная реализация возможностей сервера доступна в мобильном приложении «Активиум»

🌐 Сайт

Официальный сайт доступен по адресу 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 — Статические файлы для сайта, школьных постов и картинок уведомлений

🚀 Быстрый запуск

  1. Установить Docker
  2. Скопировать репозиторий и открыть директорию
    git clone https://github.com/tgmaksim/ActiviumServer
    cd ActiviumServer
  3. Переименовать файлы-шаблоны
    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
  4. Для локального запуска заменить ключи в .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  # Или выключить бота полностью
  5. Для работы уведомлений на клиентское приложение заменить конфигурацию в firebase-adminsdk.json
  6. Запустить Docker
    docker-compose up --build

После запуска

  • pgAdmin доступен по адресу http://localhost:5050 с логином и паролем admin@admin.com admin_password
  • База данных развернута на хосту postgres_db с логином и паролем db_user db_password
  • Сайт и сервер доступны по адресу http://localhost:8000
  • Документация Activium API - Swagger доступна по адресу http://localhost:8000/api/v2/docs

🚀 Быстрый запуск тестов

  1. Установить Docker
  2. Скопировать репозиторий и открыть директорию
    git clone https://github.com/tgmaksim/ActiviumServer
    cd ActiviumServer
  3. Переименовать файлы-шаблоны
    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
  4. Запустить тесты в Docker
    docker-compose -f docker-compose.test.yml up --build

Note

Для production-запуска также требуется настроить NGINX для передачи статических файлов из директории www и CRON-задания на нужное время

📅 Запуск CRON-задач

python cron.py statistics
python cron.py clear
python cron.py reload

Note

Для полноценного тестирования в любом случае кроме DNEVNIK_CLIENT_ID требуется профиль в Дневнике.ру. Если Вы хотите протестировать Activium Server, то обратитесь к @tgmaksim_company. Я помогу с ключом к API Дневника.ру и предоставлю аккаунт в нем

📖 Документация

Работа некоторых основных сущностей и процессов сервера описана в документации

📄 Лицензия

Проект распространяет под лицензией GNU GPLv3, доступной в файле LICENSE

About

Серверная часть (API, сайт, Telegram-бот) приложения Активиум для школьников и их родителей

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Contributors

Languages