Phase 00 · Lesson 02

TaskFlow Blueprint

≈ 3 min core reading · 709 source/companion words
Learning contract

What you should be able to do after this

  • Explain TaskFlow Blueprint without relying on framework buzzwords.
  • Connect the lesson to the phase outcome: Explain the complete TaskFlow request path and identify which layer owns presentation, transport, business rules, persistence, identity, and operations.
  • Reproduce the relevant behavior and verify it with evidence.
  • Diagnose at least one representative failure instead of guessing.
Figure 0.2 — TaskFlow boundary map
Browser interaction
Next.js presentation boundary
HTTP request
NestJS controller/guard
Service/business rules
Prisma persistence
PostgreSQL
HTTP response
UI update
This lesson belongs to Phase 00. Keep the full request/data path visible even when today's code changes only one box.
Instructor workflow: predict first → implement the smallest slice → run it → inspect evidence → break one assumption → diagnose → explain it back. Do not copy the whole code block before understanding the first failing boundary.

Phase 00

TaskFlow Production System Blueprint The product we will grow throughout the course - scope, domain model, vertical slices, security boundaries and final production architecture.

Book 2 · Capstone system blueprint Course baseline: September 17, 2026 · Windows-first · Project-driven · Production-oriented

Contents 1. Why TaskFlow 7. Security model preview

2. Product capabilities 8. Frontend information architecture

3. Domain vocabulary 9. Operational capabilities

4. Growth stages 10. What is intentionally excluded early

5. Core data model 11. Enterprise transfer

6. API surface preview

Phase 00 | Page 2 of 7

Why TaskFlow instead of a giant enterprise domain on day one? The project must be complex enough to teach production engineering, but simple enough that architecture remains visible. TaskFlow starts with a personal Todo feature, then grows into a workspace-based collaboration system. Each expansion introduces one new class of engineering problem.

Product capabilities at graduation

Identity Organizations Signup, login, logout, session refresh, Workspaces, membership, invitations, roles protected routes and profile basics. and ownership.

Projects Tasks Project lifecycle, status, metadata and Create, assign, prioritize, filter, paginate, membership-aware access. complete and archive.

Collaboration Operations Comments, activity history, notifications and Audit logs, testing, structured logs, health carefully selected realtime. checks, CI/CD and deployment.

Domain vocabulary

Concept Meaning in TaskFlow Why it matters architecturally

User Authenticated identity represented by Supabase Identity must be trusted from a verified token, Auth plus application profile data. not a browser-supplied userId.

Workspace Tenant/team boundary containing projects and Introduces multi-tenant authorization. members.

Membership Relationship between a user and workspace with Introduces many-to-many modeling and RBAC. a role.

Project Container for collaborative work. Introduces parent-child resource ownership.

Phase 00 | Page 3 of 7

Task Unit of work with status, priority and Exercises CRUD, validation, filtering and assignment. optimistic updates.

Activity Immutable description of important domain Introduces audit/history thinking. events.

User Membership Workspace

Project

Comment / Activity Task

Figure 1 - Domain relationship preview - This is a conceptual map, not yet a final database schema.

Growth stages

We do not create the final schema on day one. The product grows in vertical slices so the learner can see cause and effect.

Phase 00 | Page 4 of 7

Health check

Personal Todo CRUD

Validated Todo API

Authenticated personal Todos

Workspace membership

Projects + collaborative Tasks

Permissions + activity

Production capabilities

Figure 2 - Vertical-slice growth - Each stage should produce a usable, testable application state.

API surface preview

Code
GET    /health
GET    /todos
POST   /todos
PATCH /todos/:id
DELETE /todos/:id
Code
# Later
GET     /workspaces
POST    /workspaces
GET     /workspaces/:workspaceId/projects
POST    /projects/:projectId/tasks
PATCH /tasks/:taskId
POST    /tasks/:taskId/comments

THE CONTRACT GROWS WITH THE DOMAIN

We start with resource-oriented REST endpoints because they keep the HTTP boundary visible. More advanced patterns are introduced only if a concrete problem appears.

Phase 00 | Page 5 of 7

Security boundary preview

Browser signs in

Supabase Auth issues session

Next.js attaches access token

NestJS verifies token

Membership/ownership checked

Authorized service operation

Figure 3 - Trusted identity path - Never use a raw browser-supplied user id as proof of identity.

Frontend information architecture

TaskFlow App Shell

Dashboard Projects My Tasks Workspace Settings

Project Detail Task Detail

Figure 4 - Future application navigation - A practical shell that will exercise layouts, routing, forms, tables and responsive UI.

Phase 00 | Page 6 of 7

Operational capabilities we will eventually add

  • Structured logging and request correlation.
  • Health/readiness endpoints.
  • Environment separation.
  • Database migrations as a controlled deployment step.
  • Unit and integration tests for business behavior.
  • Playwright end-to-end flows.
  • CI quality gates.
  • Production deployment and rollback thinking.

What is intentionally excluded early

Microservices, Kubernetes, Kafka, CQRS, event sourcing, GraphQL, distributed caches and complex domain-driven architecture are not prerequisites for learning to build a high-quality production application. They can be valuable in the right system, but adding them before the application has demonstrated the problem they solve makes the architecture harder to understand.

Enterprise transfer

TaskFlow concept HRIS analogue Procurement analogue

Workspace Company / business unit Organization / department

Membership + role Employee + role/position Requester / approver authority

Project Leave cycle / HR process Procurement request / sourcing event

Task status Workflow state Approval / PO / receiving state

Activity log HR audit history Procurement audit trail

DESIGN PRINCIPLE

The course teaches patterns through TaskFlow, but every architecture explanation asks how the same responsibility would appear in a larger business system.

Phase 00 | Page 7 of 7

Executable lesson studio · architecture

Now turn the explanation into engineering skill.

TaskFlow Blueprint matters because it changes a real boundary in TaskFlow. The goal is to understand the inputs, owner, observable output, and failure modes before adding more abstraction.

By the end, you should be able to

  • Explain TaskFlow Blueprint in terms of concrete inputs, ownership, outputs, and evidence.
  • Implement or reproduce the smallest TaskFlow slice that demonstrates this architecture concept.
  • Diagnose one representative architecture failure using observable evidence instead of trial-and-error.
Figure 0.2B — Mental model
User intent
UI boundary
API contract
business rule
persistence
observable result
Read left-to-right while implementing. When debugging, walk right-to-left until the first observed fact differs from your prediction.
Code-along sequence

One coherent change at a time

  1. 01

    Restate the goal of “TaskFlow Blueprint” as one observable behavior. Write the success signal before touching code.

  2. 02

    Trace the boundary map: User intent → UI boundary → API contract → business rule → persistence → observable result. Mark the one boundary this lesson changes.

  3. 03

    Inspect the current repository state and record the exact files, route, table, or runtime involved. Avoid creating an abstraction before you can name the existing owner.

  4. 04

    Implement the smallest vertical slice. Add one coherent change, run the narrowest verification command, and read the output before continuing.

  5. 05

    Connect the slice to TaskFlow’s phase artifact: A one-page architecture map plus an ADR-style note describing the responsibilities of Next.js, NestJS, Prisma, PostgreSQL/Supabase, and supporting infrastructure.. Verify behavior from the outside as a user or API client would.

  6. 06

    Create one controlled failure that is safe to reproduce. Predict the symptom first, capture evidence, locate the earliest broken boundary, then fix only that cause.

  7. 07

    Close the reference and rebuild or explain the core change from memory. Record what you would monitor or test before trusting the same change in production.

txtBoundary trace
Input -> owner -> transformation -> observable output -> failure evidence

Do not copy this as a finished answer. Predict what each boundary does, type the smallest useful slice, run it, then compare the result with your prediction.

Verification

Prove the happy path

  1. Run the narrowest relevant command or request and require a clean exit/status.
  2. Inspect the boundary-specific evidence: terminal output, Network panel, database row/query plan, test report, container health, or deployment logs.
  3. Repeat the behavior once after the change so a one-off cached or stale result cannot masquerade as success.
Break it on purpose

Build debugging memory

  1. Letting controllers call the database directly everywhere
  2. Change one assumption in the architecture example—identity, input, configuration, ordering, connectivity, or state—and predict the exact symptom before running it.
SymptomInvestigation path
Expected result does not appear

Return to the nearest observable boundary: input, network, process log, database, or rendered UI. Compare actual evidence with the predicted path.

A shortcut appears to fix it

Change one variable at a time and reproduce the original failure after the fix; otherwise you have correlation, not diagnosis.

Closed-reference challenge

Can you transfer the idea?

Without copying the final source, create a second small scenario that applies “TaskFlow Blueprint” to a different TaskFlow resource or input. Write the acceptance criteria first, implement it, and provide the evidence that each criterion is satisfied.

Explain-back

Answer these without reopening the solution

  1. What problem does TaskFlow Blueprint solve in TaskFlow, and what would be observably wrong without it?
  2. Which part of the architecture boundary owns the decision, and which neighboring layer must not own it?
  3. What evidence proves the happy path instead of merely suggesting it worked?
  4. Name one realistic failure or abuse case and the first place you would inspect.
  5. If requirements doubled tomorrow, which part of this design should stay stable and which part is allowed to change?
Lesson studio

Turn the reading into skill

01

Do it

Label every arrow with what crosses it: props, HTTP JSON, verified identity, Prisma calls, SQL results.

Use the smallest change that demonstrates this lesson. Stop after it works and capture evidence.
02

Break it safely

Letting controllers call the database directly everywhere

Predict the symptom before causing the failure. Then locate the earliest boundary where reality diverges from expectation.
03

Explain it back

Why does this responsibility live here, what input does it trust, what output proves success, and what would go wrong if another layer owned it?

If your explanation is vague, repeat the boundary trace before moving on.
Exit ticket

Before marking complete

Close the reference. Reproduce the core idea from memory or explain the exact request/data flow aloud. Then check your diff or notes for accidental shortcuts that bypass validation, authorization, error handling, or verification earned in earlier phases.