FollowTime — это постепенная адаптация бывшего «shedules-app» под личный планировщик. Проект стартует с аудита существующей кодовой базы и поэтапно будет трансформировать учебные сущности в персональные события пользователя.
- Добавлен личный кабинет FollowTime: авторизация и регистрация работают через новые JWT-эндпоинты, экран «Моё расписание» показывает категории и события пользователя, позволяет быстро создавать задачи и управлять напоминаниями.
- Завершены этапы 1–2 адаптационного плана: проведён аудит, подготовлены миграции и полностью удалены учебные модели (
Schedule,Teachers,Groupsи т.п.) после переноса данных в персональные события. - Этап 3 завершён: современный фронтенд, система уведомлений и упаковка оформлены в «Отчёте о завершении этапа 3».
- Завершение миграции расписаний на этапе 3 задокументировано в журнале изменений.
- Старый интерфейс учебного расписания удалён: React-проект очищен от legacy-компонентов, список зависимостей сокращён до минимально необходимого и описан в документации.
- Добавлена базовая модель уведомлений и JWT-эндпоинты
/api/notifications, которые рассчитывают время отправки с учётом часового пояса пользователя и покрыты smoke-тестами. Напоминания теперь можно создавать и отменять напрямую из нового интерфейса. - Появился сервис фоновой доставки уведомлений: CLI-команда
notifications-dispatchи docker-воркер отмечают отправленные напоминания и готовят почву для интеграции каналов доставки. - CLI-скрипт
schedule_to_eventsчитает legacy-таблицы через сырые SQL-запросы, поэтому им можно пользоваться на резервных копиях до применения миграции003_drop_legacy_schedule.sql. - Smoke-тесты
tests/test_schedule_migration.pyпроверяют перенос занятий, режим dry-run и корректное завершение при отсутствии legacy-таблиц. - Бэкенд предоставляет JWT-защищённые API
/api/register,/api/users,/api/categories,/api/eventsдля работы с персональным расписанием.
- Техническое задание FollowTime
- План адаптации (актуальная дорожная карта)
- Отчёт по этапу 1: аудит текущего состояния
- План миграции данных этапа 2
- Отчёт о завершении этапа 2
- План этапа 3
- Отчёт о завершении этапа 3
- Журнал изменений FollowTime
- Уведомления и напоминания этапа 3
- Стартовый интерфейс этапа 3
- PyInstaller-сборка и релизы этапа 3
- Руководство по переносу
Schedule→events - Дизайн-система этапа 4
- Что нового на этапе 4
- При первом входе в обновлённый планер автоматически открывается тур с тремя шагами: категории и фильтры, быстрые напоминания и новая сводка.
- Прогресс сохраняется в браузере по ключу
followtime_planner_onboarding. Чтобы сбросить тур вручную, очистите это значение вlocalStorageили нажмите «Пройти онбординг» во вкладке «Общая сводка». - Ссылка «Открыть гайд» ведёт на документ «Что нового на этапе 4» — его можно открыть прямо из интерфейса и поделиться обновлениями с командой.
Новый интерфейс FollowTime живёт в каталоге frontend/src/followtime и использует только базовые зависимости React. Для локальной проверки выполните:
cd frontend
npm install
npm run buildnpm install создаст минимальный набор зависимостей (react, react-dom, react-router-dom, web-vitals).
Для локальных проверок можно разово прогнать отправку напоминаний:
cd backend
flask --app app notifications-dispatch --dry-runЧтобы запустить постоянный воркер, используйте модуль:
python -m backend.services.notifications.dispatcher --loop --interval 60Команда docker compose up notification_worker запускает тот же цикл внутри контейнера и делит базу данных с основным сервисом.
Для удобного развёртывания без Python-окружения проект собирает исполняемый файл с помощью PyInstaller. Готовый архив появляется как артефакт GitHub Actions (workflow «Build backend binary») и как release asset для тэгов v*.
-
Откройте вкладку Actions в репозитории и выберите workflow «Build backend binary». После успешного прогона скачайте артефакт
flowtime-backendили одноимённый release-asset. -
Распакуйте архив:
tar -xzf flowtime-backend.tar.gz cd flowtime -
Запустите бинарник, чтобы поднять сервер Socket.IO на порту 8000:
./flowtime
-
Проверьте, что процесс слушает порт и готов принимать соединения:
lsof -i :8000 curl -f http://127.0.0.1:8000/health || true
Конечная точка
/healthвозвращает служебный ответ, если конфигурация окружения задана корректно.
Для локальной проверки полной сборки (бэкенд, фронтенд, PostgreSQL и Nginx) используйте docker compose up --build. Детали конфигурации описаны в README.Docker.md.
При первом запуске docker compose up --build автоматически применяет sql/schema.sql. Скрипт создаёт таблицы users, categories, events, notifications, добавляет триггеры обновления временных меток и тестовую учётную запись администратора (admin / admin123). Бэкенд дополнительно проверяет схему при старте контейнера: если таблицы отсутствуют (например, том был очищен) или тестовый администратор удалён, приложение пересоздаёт таблицы и повторно добавляет аккаунт, чтобы избежать ошибок 500 на входе или регистрации.
Мы постепенно адаптируем кодовую базу под личное использование. Если вы хотите помочь, начните с чтения текущего плана, выбирайте открытые задачи и предлагайте улучшения через пулреквесты.
Проект распространяется под лицензией MIT License.