Skip to content

Repository files navigation

Neiro

CI Релиз Android 7.0+ Kotlin Compose Лицензия MIT

Приложение для педагога: расписание занятий, деньги за них и уведомления о том, что в расписании поменялось. Данные приходят из YClients — той же системы, где центр ведёт запись, — но живут на телефоне и открываются мгновенно, без ожидания сети.

Главное отличие от кабинета YClients в браузере: приложение считает деньги педагога, а не выручку филиала, и знает про перенос, отмену и «не пришёл» раньше, чем об этом успеют сказать. Расписание на неделю, сколько выйдет за месяц, что изменилось со вчера — на одном экране.


Установка

Требования: Android 7.0 и новее.

Готовые сборки — на странице релизов: скачать neiro-<версия>.apk, открыть на телефоне, один раз разрешить установку из этого источника. Дальше приложение обновляет себя само — как именно. Что изменилось от версии к версии — CHANGELOG.md.

Начиная с 0.1.1 приложение обновляет себя само: замечает новую версию, сообщает уведомлением и по согласию ставит её одним нажатием. Версии старше обновляются файлом со страницы релизов — поверх старой, данные сохраняются.

Сборка из исходников — Android Studio или ./gradlew assembleDebug; что нужно положить рядом, описано в быстром старте.

Что умеет

  • Календарь месяца — занятия, суммы по дням, быстрый переход к сегодня, выбор месяца оверлеем.
  • День целиком — таймлайн занятий, статусы «подтвердил / пришёл / не пришёл», правка вручную, перенос.
  • Деньги — расчёт по ставкам с учётом налога, годовая статистика и графики по месяцам, разделение факта и прогноза.
  • Уведомления — напоминание перед занятием, утренний и вечерний дайджест, и главное: push о новой записи, отмене и переносе — их присылает собственный сервис событий, приложение не опрашивает YClients само.
  • Архив — своя история занятий помимо YClients: офлайн-правки, экспорт и импорт JSON, журнал уведомлений.
  • Офлайн — всё читается из локального хранилища; синхронизация нужна для обновления, а не для запуска.

Что сделано и что в планах — TODO.md.

Обновления

Релиз выпускается сам при слиянии PR в main: версия поднимается, тег ставится, GitHub Actions собирает подписанный APK, считает контрольную сумму и публикует релиз с описанием изменений. Разряд версии задаётся меткой PR — как это устроено.

О вышедшей версии приложение узнаёт сразу: сервер neiro-push рассылает push в ту же минуту, когда релиз опубликован. Push не дошёл — приложение и само спрашивает GitHub раз в сутки и при открытии. Нашло — показывает уведомление; по согласию скачивает APK, сверяет SHA256 и подпись со своей, и ставит поверх. Настройки, календарь и архив остаются на месте. На Android 12+ обновление приложения самого себя проходит без системного диалога — согласия, которое пользователь уже дал, достаточно.

Механика целиком — docs/updater/: архитектура, релизы, ограничения.

Быстрый старт (разработка)

  1. local.properties — SDK, адрес и ключ сервиса Neiro (см. yclients-integration.md):

    NEIRO_PUSH_API_BASE_URL=https://push.neiro.greemlab.ru
    NEIRO_PUSH_API_KEY=<API_KEY из ~/neiro-push/.env>
  2. app/google-services.json — для FCM (push-setup.md § Firebase).

  3. Сборка — Android Studio / Gradle на машине разработчика.

Без local.properties приложение соберётся, но вход не пройдёт: сервис неизвестен. Без google-services.json соберётся тоже — с выключенным FCM, локальный режим и синхронизация при этом работают.

Push-сервер

Публичный URL: https://push.neiro.greemlab.ru

Приложение работает с третьим поколением сервиса — neiro-push (маршрут /v1, порт 8012). Два прежних поколения погашены: server/ — 02.08.2026, neiro-push-events (/v2) — 13.08.2026. Их код лежит в истории git (разбор работ).

Сервис и его эксплуатация — docs/neiro-push/.

Приватность

Приложение работает с чужими данными — расписанием и именами учеников, — и поэтому важно, где они лежат.

На телефоне: расписание, имена учеников, статусы занятий, ставки и расчёт денег, архив и журнал уведомлений. Всё это локальное хранилище приложения; оно не выгружается никуда, кроме экспорта в JSON, который вы делаете сами и сами решаете, куда положить файл.

На сервере владельца: токены YClients (partner_token, user_token) и FCM-токены устройств. Сервер — Raspberry Pi владельца проекта, не облако: именно он ходит в YClients вместо телефона и присылает push об изменениях. Пароль от YClients не хранится нигде — он используется один раз при входе. Устройство отзывается кнопкой в дашборде, после чего его токен перестаёт работать.

Чего нет вовсе: аналитики, трекеров, рекламы, сбора статистики использования. Из сторонних SDK в приложении только Firebase Cloud Messaging — он нужен, чтобы доставлять push, и знает лишь токен устройства, а не содержимое расписания.

Устройство целиком — docs/neiro-push/ARCHITECTURE.md.

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

Тема Документ О чём
Релизы и самообновление docs/updater/ Версии, выпуск по тегам, как приложение обновляет себя, риски и план работ
Сервис neiro-push (текущий) docs/neiro-push/ Токены YClients на сервере, приложение ходит через прокси: архитектура, API, деплой, порядок запуска
YClients API docs/yclients-integration.md Вход, сетевой слой, синхронизация, local.properties
Архив docs/archive/ Закрытые аудиты, старая переработка и оба погашенных поколения push-сервиса — история, не руководство
Скриншоты docs/screenshots.md Что снимать, требования README и RuStore, скрипт разбора кадров
Боковая панель docs/profile-drawer.md Drawer профиля, жесты, файлы в коде
Оформление docs/appearance.md Тема, палитры, семантические цвета и стеклянный вид: что где живёт и почему
Аудит docs/audit/METHODIKA.md Как проводить аудит: границы, чек-листы по областям, формат пакета, история прошлых аудитов
Последний аудит docs/archive/audit-14.08.26/ Пакет от 14.08.2026: 18 находок, все закрыты; отчёт о прогоне, архитектура на дату
Что осталось доделать docs/next/ Доводка после перехода на neiro-push: шесть этапов с планом работ
Дорожная карта TODO.md Что сделано и что в планах

Структура репозитория

app/                 Android-приложение (Kotlin, Compose)
app/.../push/        Регистрация FCM, приём push
app/.../update/      Самообновление (по плану docs/updater/)
neiro-push/          Сервис на Pi: токены и прокси YClients (по плану docs/neiro-push/)
scripts/             Версия, скриншоты, генерация иконки
docs/                Документация

Секреты (не в git)

Файл Содержимое
local.properties SDK, NEIRO_PUSH_*, подпись release
app/google-services.json Firebase
.signing/ Ключи публикации
~/neiro-push/.env на Pi API_KEY, ADMIN_API_KEY, шифрование токенов, YCLIENTS_PARTNER_TOKEN
~/neiro-push/secrets/ на Pi FCM service account JSON

Ключей YClients в сборке нет: partner_token и user_token живут только на Pi, приложение ходит к ним через прокси (docs/neiro-push/).

Те же значения, что нужны сборке релиза, лежат в секретах GitHub Actions — список в docs/updater/RELEASE.md. Ключ подписи (.jks) незаменим: без него обновить уже установленное приложение нечем.

Автор

Пишет и ведёт проект Greem4. Приложение личное, сделано под конкретную работу конкретного педагога — но исходники открыты, разбор устройства есть в docs/.

Как помочь

Приложение личное, но исходники открыты: сообщения о проблемах и предложения приветствуются. Как собрать, как оформить коммит и что стоит обсудить до кода — CONTRIBUTING.md.

Нашли дыру в безопасности — не в публичный issue, а приватно, кнопкой «Report a vulnerability» во вкладке Security: SECURITY.md.

Лицензия

Код распространяется по лицензии MIT — брать, менять и использовать можно, сохранив уведомление об авторстве. Полный текст — LICENSE.

About

Android-приложение для педагога: расписание из YClients, деньги за занятия и push об изменениях

Topics

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages