Add Projects MVP — directory, workspace, sprints/tasks/epics, settings#562
Draft
Kiran-Jones wants to merge 4 commits into
Draft
Add Projects MVP — directory, workspace, sprints/tasks/epics, settings#562Kiran-Jones wants to merge 4 commits into
Kiran-Jones wants to merge 4 commits into
Conversation
Adds the full member-facing Projects workspace on top of the v0 schema: - /projects directory with Mine / Active / Past+Archived sections - New project create modal (Core / Admin / Partner Relations Lead) - Per-project workspace with Overview (collab doc), People, Sprints, Tasks (Kanban + list toggle), Backlog, Settings tabs - Epic CRUD + Tasks-tab grouping/filter by sprint or epic - Sprint close confirm: open tasks → Backlog (default) or next Active sprint - Task drag-and-drop board with realtime peer-revalidation via Hocuspocus awareness on a per-project presence room - TaskComment CRUD + checklist JSON column - Settings: rename / calendarEmail / isContinuing toggle / ProjectRoleRequest CRUD / partner link-unlink / Archive+Pause (Core/Admin) - Project Brief PageTemplate seeded with a real body that's cloned into every new project's Overview doc on create - Extends app/collab/persistence.ts + app/lib/collabAuth.ts with project/sprint/epic/task entity branches - Emits NotificationEvent rows for task.assigned, task.unassigned, task.commented, project.archived, project.paused - Sidebar: rename "List" → "Projects" (→ /projects), drop the Staffing placeholder; Staffing lives under Core Hub per the revised roadmap - Vitest units for projectAuth + sprintClose (19 tests); Playwright happy-path E2E No new Prisma migrations — all schema is from v0. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The Education-track route entries were carried over from local WIP and reference files (app/education/routes/*) that don't exist on this branch, breaking Build API + e2e-api on CI. Drop those entries so the route registry only references files that exist here. The Education track will reintroduce them on its own branch. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Contributor
Author
|
Fixed Build API + e2e-api: |
Three issues caught by the first CI run:
1. Build API: emitEvent + isCore weren't exported on dev (only in WIP I
excluded from my commit). My Projects MVP code calls both. Add them
directly as small, scope-limited additions:
- lib/notifications.ts: emitEvent (NotificationEvent producer; writes
optional Notification rows when an inbox affordance is supplied).
Matches the v0 plan stub.
- lib/roles.ts: isCore (Admin OR CoreAssignment; mirrors isHiringLead
semantics but reads cleaner at call sites that gate on Core access).
2. Build API also failed because the collabAuth.ts I committed carried
Education-track entity branches (education-offering, education-session,
etc.) that depended on isInstructorFor — also WIP-only. Restore
collabAuth.ts to the clean origin/dev version, then re-apply only the
project/sprint/epic/task project-membership branches.
3. e2e-api: projects.spec.ts was looking at the top-level page, but the
Layout renders each section inside an iframe titled with the sidebar
label ("Projects"). Route all assertions/interactions through
iframe[title="Projects"] (matches the smoke.spec / domain-lead.spec
pattern).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Contributor
|
Preview API deployed — https://dali-api-pr-562.fly.dev
|
- app/collab/persistence.ts: remove the 5 education-* entity branches (education-offering / -session / -assignment / -submission / -application) that were carried over from local WIP. These belong on the Education track's branch. - app/components/Layout.tsx: drop the Education sidebar area (educationSections, GraduationCap area, isCore/isEducationLead/ isInstructor props, AreaKey 'education', and the related lucide-react icon imports). Education routes don't exist on this branch so the sidebar links were 404s. - app/projects/components/ProjectDirectory.tsx: on successful create, navigate the iframe to /projects/:id so the test (and users) land on the new workspace instead of staying on the directory. Previously the onCreated handler only revalidated, which is what made the e2e happy path fail at the projectName heading assertion. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds the full member-facing Projects workspace on top of the v0 schema:
No new Prisma migrations — all schema is from v0.