Roadmap DPline
Ориентиры по времени — не дедлайны под давление, а рамка для приоритизации. Ритм: вертикальные срезы (UI → API → БД → деплой), после каждого — ревью и короткая запись в plan/sessions/.
Фаза 0 — Каркас репозитория (1 спринт)
Цель: открыть монорепу, пустой health-check API, пустой экран фронта, CI «зелёный».
- Монорепа (например pnpm + Turborepo — решение в ADR).
apps/web (Vite+React+TS), apps/api (Node).
- PostgreSQL локально (Docker) или облачный free-tier — зафиксировать в ADR.
- ESLint + Prettier +
tsc --noEmit в CI.
- Conventional Commits (хук по желанию).
Готово, когда: один merge в main с проходящим CI и инструкцией «как поднять локально» в корневом README.
Фаза 1 — MVP таск-менеджер (ядро продукта)
Цель: неделю реально пользоваться.
- Сущности минимум: задача (название, статус, важность/приоритет, дедлайн опционально), список/контекст (хотя бы «проект» или «инбокс»).
- REST (или tRPC — только если явно решишь в ADR) + миграции БД.
- Аутентификация для одного пользователя: email+пароль или иной простой вариант — ADR.
- Деплой web + api на бесплатный tier (конкретика в ADR).
Готово, когда: с телефона/ПК заходишь в прод/стейдж и ведёшь задачи без обхода через SQL.
Фаза 2 — Расписание вуза + посещаемость
- Пары по неделе, отметка «был / не был» (или статусы).
- Минимальная связь с задачами по желанию (не обязательно в первой итерации).
Фаза 3 — Учёба: предметы, лабы, баллы, документы, критерии экзамена
- Модель «предмет» и привязанные сущности; отчёты простые (счётчики, суммы).
Фаза 4 — Микродела, оценка дня, привычки
- Отдельные потоки UI или вкладки, чтобы не смешать с «глубоким» таск-трекингом.
Фаза 5 — Режим учёбы + музыка по настроению
- Сущность «ссылка на волну/плейлист» + тег настроения; открытие в новой вкладке / deep link.
- Без серверной интеграции с каталогом Яндекс.Музыки до появления легального и технически стабильного варианта.
Фаза 6 — Конспекты + поиск
- Хранение конспектов (markdown + вложения позже).
- Полнотекстовый поиск в PostgreSQL (
tsvector) как бесплатный первый шаг.
Фаза 7 — ИИ-поиск (бесплатный контур)
- Локальный эмбеддинг + вектор в PG (pgvector) или отдельный лёгкий self-host — только после стабильного поиска без LLM.
Фаза 8 — Офлайн и синхронизация
- Очередь изменений, идемпотентность, конфликты — после того, как онлайн-модель стабильна.
Фаза 9 — Telegram Mini App
- Тот же API; адаптация UI под WebView; валидация
initData — отдельный блок безопасности.
Параллельно всегда
- ADR под нетривиальные решения.
- Тесты: немного Vitest на чистую логику + 1–3 интеграционных на API по мере появления эндпоинтов.
- Event-driven (очередь, outbox) — учебный спринт после первого «скучного» CRUD, не в день ноль.