Files
microdao-daarion/docs/cursor/06_tasks_onboarding_mvp.md

8.9 KiB
Raw Blame History

06 — Tasks: Onboarding & MVP Core (for Cursor)

Цей документ містить чіткі технічні задачі для Cursor. Кожна задача сформульована у форматі, який Cursor розуміє найкраще:

  • контекст
  • специфікації
  • API
  • acceptance criteria
  • очікуваний вивід (list of files + diff)

Всі задачі беруть дані з:

  • 01_product_brief_mvp.md
  • 02_architecture_basics.md
  • 03_api_core_snapshot.md
  • 04_ui_ux_onboarding_chat.md
  • 05_coding_standards.md

BLOCK A — ONBOARDING (5 кроків)

Task A1 — Create route /onboarding + base layout

Context: Onboarding складається з 5 кроків. Потрібен базовий контейнер зі state machine.

Specs:

  • Створити сторінку /onboarding.
  • Додати компонент OnboardingLayout.
  • Зберігати поточний крок у локальному стані.
  • Кроки: welcome, team, privacy, channel, agent, invite.
  • У верхній частині: step indicator.

Acceptance Criteria:

  • /onboarding відкривається без помилок.
  • Є stepper з актуальною позначкою (15).
  • Немає реальних API-викликів (тільки каркас).

Cursor Output:

  • Список файлів для змін.
  • Код.

Task A2 — Onboarding Step 1: Welcome Screen

Specs:

  • Заголовок: "Створимо твою MicroDAO".
  • Підзаголовок: "5 кроків — і твоя спільнота буде готова до роботи."
  • Кнопка: "Почати".
  • При натисканні — перехід на Step 2.

Acceptance Criteria:

  • Стиль згідно з 04_ui_ux_onboarding_chat.md.
  • Робоча кнопка.

Task A3 — Step 2: Create Team (API: POST /teams)

Specs:

  • Форма:
    • Назва спільноти (required)
    • Опис (optional)
  • Виклик: POST /teams
  • Результат: зберегти teamId у state onboarding.

Acceptance Criteria:

  • Форма валідна: без назви кнопка disabled.
  • Після успішного виклику → Step 3.
  • Обробка помилок через toast.

Task A4 — Step 3: Privacy mode (PATCH /teams/{id})

Specs: UI: дві великі карточки:

  • PUBLIC:

    • Текст: "Є публічний канал. Гості можуть читати та приєднатися."
  • CONFIDENTIAL:

    • Текст: "Тільки запрошені учасники. Чати зашифровані."

При натисканні — PATCH /teams/{teamId}.

Acceptance Criteria:

  • Виділяється вибраний режим.
  • Успішний PATCH → Step 4.

Task A5 — Step 4: Create first channel (POST /channels)

Specs:

  • Поля:
    • Назва каналу
    • Тип: public | group
  • Виклик:
    {
      "team_id": "...",
      "type": "...",
      "title": "...",
      "mode": "public" | "confidential"
    }
    

Acceptance Criteria:

  • Після успіху → Step 5.
  • Канал створений і додається до списку каналів у state.

Task A6 — Step 5: Agent & memory settings (POST /agents)

Specs: UI:

  • toggle: "Увімкнути приватного агента"
  • select: мова агента
  • select: профіль агента
  • select: memory depth

API:

  1. Якщо toggle ON → POST /agents body:
{
  "owner_kind": "team",
  "owner_id": "t_123",
  "name": "Team Assistant",
  "role": "general",
  "scopes": ["chat"]
}
  1. Якщо OFF → skip

Acceptance Criteria:

  • Вибір зберігається в onboarding state.
  • API викликається тільки якщо агент включений.
  • Після успіху → Step 6.

Task A7 — Step 6: Invite (UI only)

Specs: UI:

  • Заголовок: "Спільнота створена!"
  • Показати посилання-запрошення (stub: /invite?t=ID).
  • Кнопка: "Перейти в чат".

Acceptance Criteria:

  • Немає API.
  • При натисканні — redirect до /t/:teamId/c/:channelId.

BLOCK B — CHAT CORE

Task B1 — Channel List in Sidebar

Specs:

  • Зробити компонент SidebarChannels.

  • Отримати список каналів командою:

    • Використати локальний state (оновлює онбординг).
    • У реальному додатку — GET /teams/{id}/channels (можна додати).
  • Показати активний канал.

Acceptance Criteria:

  • Sidebar показує всі канали.
  • Active канал підсвічений.

Task B2 — Messages Stream (GET /channels/{id}/messages)

Specs:

  • Компонент: MessagesStream.
  • Пагінація: cursor-based scroll.
  • Рендер: avatar + name + time + text.
  • Confidential → body_enc (можна stub дешифрування).

Acceptance Criteria:

  • Стрічка відображає повідомлення.
  • При скролі догори → підвантаження старих.

Task B3 — Composer (POST /messages)

Specs:

  • Компонент: MessageComposer.
  • Input + кнопка "Надіслати".
  • Enter → відправка.
  • Shift+Enter → новий рядок.

Acceptance Criteria:

  • Повідомлення додається в стрічку без перезавантаження.
  • Порожній інпут → заборонити надсилання.

Task B4 — Follow-up creation (POST /followups)

Specs:

  • Контекстне меню у повідомленні: "Створити follow-up".
  • Модалка: назва (автоматично), assignee (список членів), due.
  • API: POST /followups.

Acceptance Criteria:

  • Follow-up створюється успішно.
  • Помилки показуються через toast.

BLOCK C — PROJECTS & TASKS

Task C1 — Project List (GET /projects)

Specs:

  • Вкладка "Проєкти".
  • Список проєктів (назва).
  • Кнопка "Створити проєкт".

Acceptance Criteria:

  • Працює рендер списку.
  • Порожній стан: "Проєкти ще не створені".

Task C2 — Create Project (POST /projects)

Specs:

  • Модалка → створення нового проєкту.
  • Поля: назва, visibility (public/confidential).
  • API: POST /projects.

Acceptance Criteria:

  • Новий проєкт зʼявляється в списку.

Task C3 — Tasks Board (GET/POST /projects/{id}/tasks)

Specs:

  • 3 колонки: backlog, in_progress, done.
  • Карточка задачі: title + status.
  • При кліку → змінити статус.

Acceptance Criteria:

  • Задачі змінюють статус (PATCH можна stub: просто оновлювати client state).
  • Мінімальний Kanban працює.

BLOCK D — AGENTS

Task D1 — Agents List (GET /agents)

Specs:

  • Вкладка "Агенти".
  • Показати всіх агентів команди.

Acceptance Criteria:

  • Один агент "Team Assistant" відображається.

Task D2 — Agent Chat (stub)

Specs:

  • Створити окремий чат з агентом:

    • MessageComposer
    • потік повідомлень (локальний state)
  • В API-запиті викликати зовнішній LLM (можна mock)

  • Зберігати історію до reload.

Acceptance Criteria:

  • Агент відповідає у вигляді тексту.
  • Історія видно в UI.

BLOCK E — FINALIZATION

Task E1 — Route redirect after onboarding

Specs:

  • Після Step 6 redirect: /t/:teamId/c/:channelId

Acceptance Criteria:

  • Після онбордингу користувач потрапляє у свій перший канал.

Task E2 — Mobile adaptation

Specs:

  • Sidebar → Drawer
  • Composer sticky bottom
  • Onboarding → одна колонка

Acceptance Criteria:

  • Мобільна версія не ламається.

Task E3 — Error Handling Audit

Specs: Перевірити всі виклики API:

  • login
  • teams
  • channels
  • messages
  • followups
  • projects
  • tasks
  • agents

Acceptance Criteria:

  • Усі помилки показуються через toast.
  • Немає uncaught exceptions у консолі.

Кінець документа

Цей файл є головним TODO для Cursor.

Кожна задача може бути надіслана як окремий prompt, Cursor повинен завжди відповідати:

  • списком файлів,
  • diff,
  • коротким summary.