MyHerzen
MyHerzen — независимое приложение с открытым исходным кодом для студентов РГПУ им. А. И. Герцена. Оно объединяет расписание, учебные группы, домашние задания, уведомления и необязательных AI-помощников на iOS, Android и в веб-интерфейсе.
Репозиторий подготовлен так, чтобы проект могли сопровождать студенты Герцена. Новую установку можно запустить с пустой базой данных — перенос существующих аккаунтов пользователей не требуется.
Проект открыт для использования и продолжения
MyHerzen открыт для использования, самостоятельного размещения, изучения, изменения и дальнейшей разработки по лицензии Apache License 2.0. Студенты и студенческие команды могут клонировать или форкать репозиторий, разворачивать собственную установку и продолжать работу официального студенческого сервиса после ухода первоначального сопровождающего.
Проект документирован так, чтобы новая команда могла начать с пустой базы данных, собственного сервера, доменов, приложений OAuth, модели Ollama и почтового провайдера. Для продолжения разработки не требуются исходная база пользовательских аккаунтов или доступ к инфраструктуре прежнего владельца.
Состав проекта
-
API/— backend на FastAPI, SQLAlchemy и PostgreSQL; -
Android/— приложение на Kotlin и Jetpack Compose; -
iOS/— приложение на SwiftUI, виджеты и Live Activities; -
Web/— статический сайт и страницы аккаунта; -
tests/— тесты backend.
Локальный запуск backend
Требования:
- Docker Desktop, Docker Engine или другая среда с поддержкой Docker Compose;
- Git;
- свободный порт
8000и доступная внутренняя сеть контейнеров PostgreSQL.
git clone https://github.com/MoonbayStudio/MyHerzen.git
cd MyHerzen
make setup
Откройте .env и последовательно заполните его разделы. В нём перечислены все
внешние зависимости: PostgreSQL, публичные адреса, API Герцена, Apple/Google
OAuth, Ollama, SMTP, функциональные переключатели и проверки целостности
мобильных приложений. Как минимум замените DATABASE_PASSWORD, JWT_SECRET,
FRONTEND_BASE_URL, OWNER_EMAILS и ADMIN_EMAILS. Необязательные интеграции
можно оставить пустыми или выключенными. После этого запустите сервисы:
make up
curl http://127.0.0.1:8000/health
Ожидаемый ответ:
{"status":"healthy"}
Документация API будет доступна по адресу http://127.0.0.1:8000/docs. В базовой локальной конфигурации AI, SMTP и вход через сторонние сервисы можно не настраивать.
На сервере, доступном из интернета, открывайте только TCP-порты 80 и 443
через reverse proxy с TLS. Не открывайте в интернет порт API 8000, PostgreSQL
и Ollama. Полная инструкция по серверу и firewall находится в
SETUP.md.
Полезные команды:
make status
make logs
make down
make backup
make restore FILE=backups/myherzen-YYYYMMDD-HHMMSS.sql
Документация
- Установка и настройка
- Эксплуатация, резервное копирование и восстановление БД
- Чек-лист передачи проекта
- Как участвовать в разработке и делать форки
- Текущий прогресс разработки
Разработка
Если вы хотите улучшить общий проект, сделайте fork, создайте отдельную ветку и
откройте Pull Request. Если вы создаёте на основе MyHerzen самостоятельный
проект, сохраните файлы LICENSE и NOTICE и укажите ссылку на исходный
репозиторий. Подробный порядок работы и готовый текст для указания авторства
приведены в CONTRIBUTING.md.
Тесты backend используют изолированную базу SQLite и не требуют запуска контейнеров:
python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txt
pytest
Для Android требуются JDK 17 и Android SDK 34:
cd Android
./gradlew assembleDebug
Проект iOS открывается из iOS/MyHerzen.xcodeproj. Для сборки распространяемого
приложения потребуются команда Apple Developer и собственные bundle identifiers.
Примечание о production-развёртывании
По умолчанию Compose привязывает API к 127.0.0.1. На production-сервере
сохраните эту привязку и установите перед API reverse proxy с TLS, например
Caddy или nginx. Не добавляйте в Git файл .env, дампы базы данных, данные OAuth
или ключи подписи.
Лицензия
Проект распространяется по лицензии Apache License 2.0. Информация об исходном проекте и его авторстве находится в файле NOTICE.