Skip to content

[Feature] Реализация модуля проектов команды и проектных страниц в Next.js приложении #55

@kapitulin24

Description

@kapitulin24

Контекст

В текущей ветке реализуется крупный функциональный блок для управления проектами внутри команды: список проектов, карточки, проектные страницы (overview/boards/settings), действия с проектом (создание, шаринг, архивирование, удаление), а также интеграция в боковую навигацию.
Задача важна для перехода от отдельных UI-экранов к полноценному пользовательскому потоку работы с проектами и унифицированной архитектуре (entities/features/pages/widgets/shared) с поддержкой наблюдаемости фронтенда.


Технические требования

  • Локация логики:
    app/(protected)/team/(team)/projects/page.tsx,
    app/(protected)/team/projects/[projectId]/page.tsx,
    app/(protected)/team/projects/[projectId]/settings/page.tsx,
    app/projects/[projectId]/page.tsx,
    src/pages/team/ui/projects/*,
    src/pages/project/ui/boards/*,
    src/pages/project/ui/settings/*,
    src/widgets/app-sidebar/ui/Projects.tsx,
    src/features/projects/*,
    src/entities/project/*,
    src/shared/config/metrics/FrontendObservability.tsx.
  • Инструменты: Next.js App Router, React, TypeScript, TanStack Query, zod, shadcn/ui, внутренняя API-обвязка в src/shared/api/*.
  • Логика работы:
    1. Реализовать маршруты и страницы проектов с разделением по доменным сценариям: список проектов команды, карточка проекта, публичная/общая страница проекта, настройки проекта, борды.
    2. Подключить доменные операции через features: create, archive/restore, share, remove с едиными контрактами entities/project/model/schemas.ts и entities/project/api/*.
    3. Интегрировать отображение проектов в sidebar (src/widgets/app-sidebar/ui/Projects.tsx) с действиями управления и корректной обработкой edge-cases: пустой список, состояние загрузки, недоступный проект, ошибка API, устаревшие данные в кэше.

Цель и критерии приемки (Definition of Done)

  • База: актуализированы/добавлены экспорты модулей (index.ts), типы и схемы (zod) для project/team/user; маршруты проекта подключены в app/*.
  • Функционал: пользователь может просматривать проекты команды, открывать проект, переходить в boards/settings, выполнять действия create/share/archive/remove и видеть консистентные состояния UI.
  • Лимиты/SLA: целевые переходы между проектными экранами не деградируют UX; операции мутаций не приводят к множественным лишним refetch; ошибки API отображаются предсказуемо без падения страницы.
  • Интеграция: обновлены конфиги/инструменты наблюдаемости (FrontendObservability), проверены lint/typecheck, при необходимости синхронизированы .env и CI-скрипты для новых переменных/потоков.

Важные указания

  • Производительность: минимизировать ререндеры карточек проектов и sidebar; использовать кэширование и точечную инвалидацию query-ключей вместо полного сброса состояния.
  • Ошибки: централизованно обрабатывать сетевые и валидационные ошибки через src/shared/api/error-utils.ts; для пользовательского слоя использовать унифицированные сообщения и fallback-состояния.
  • Безопасность: валидировать входные данные (projectId, payload мутаций) через схемы; исключить выполнение действий без контекстной проверки команды/проекта; не логировать чувствительные токены/идентификаторы в клиентские метрики.

Metadata

Metadata

Assignees

Labels

No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions