Skip to content

anatoliiii/FlowTime

Repository files navigation

FollowTime — персональный планировщик на основе учебного расписания

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

  • При первом входе в обновлённый планер автоматически открывается тур с тремя шагами: категории и фильтры, быстрые напоминания и новая сводка.
  • Прогресс сохраняется в браузере по ключу followtime_planner_onboarding. Чтобы сбросить тур вручную, очистите это значение в localStorage или нажмите «Пройти онбординг» во вкладке «Общая сводка».
  • Ссылка «Открыть гайд» ведёт на документ «Что нового на этапе 4» — его можно открыть прямо из интерфейса и поделиться обновлениями с командой.

Сборка фронтенда

Новый интерфейс FollowTime живёт в каталоге frontend/src/followtime и использует только базовые зависимости React. Для локальной проверки выполните:

cd frontend
npm install
npm run build

npm 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 запускает тот же цикл внутри контейнера и делит базу данных с основным сервисом.

PyInstaller-бинарник бэкенда

Для удобного развёртывания без Python-окружения проект собирает исполняемый файл с помощью PyInstaller. Готовый архив появляется как артефакт GitHub Actions (workflow «Build backend binary») и как release asset для тэгов v*.

  1. Откройте вкладку Actions в репозитории и выберите workflow «Build backend binary». После успешного прогона скачайте артефакт flowtime-backend или одноимённый release-asset.

  2. Распакуйте архив:

    tar -xzf flowtime-backend.tar.gz
    cd flowtime
  3. Запустите бинарник, чтобы поднять сервер Socket.IO на порту 8000:

    ./flowtime
  4. Проверьте, что процесс слушает порт и готов принимать соединения:

    lsof -i :8000
    curl -f http://127.0.0.1:8000/health || true

    Конечная точка /health возвращает служебный ответ, если конфигурация окружения задана корректно.

Docker Compose этапа 3

Для локальной проверки полной сборки (бэкенд, фронтенд, 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.

About

личный трекер

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors