Capstone outcomes: By the end, describe one design decision, one observed failure and one limitation using your own project evidence.
02
π§Choose a Small Useful Project
Use a study-task tracker as the reference project: a learner can list tasks, create a bounded title, mark a task complete and filter pending work.
Start with one user journey before adding accounts, reports or file uploads.
A local practice prototype and a shared private application have different requirements.
As a learner, I can add a study task and see it in my list.
Acceptance: valid title creates one task; invalid input creates none.
Out of scope initially: payments, uploads and notifications.
User story and scope: Pick a scope you can finish and explain.
A class team may choose a workshop-registration or reading-list project with similarly explicit operations.
03
π§±Map Responsibilities Before Coding
The browser provides presentation and interaction.
A backend is needed to enforce shared/private operations beyond a single browser.
The database stores durable relationships under application constraints.
A static page can demonstrate local state, but hidden buttons cannot enforce multi-user authorization.
browser: render + collect input + show outcomes
backend: validate + authorize + apply allowed operation
store: persist accepted data with constraints
Architecture worksheet: The planner offers static, PHP and Java paths to organize responsibilities.
It does not generate or deploy a backend.
Assign the three responsibilities
πͺBrowser
Interaction and outcomes
π‘οΈBackend
Allowed application operations
ποΈStore
Durable accepted data
04
π§ΎSpecify the Data Contract
For a shared task tracker identify task ID, trusted owner ID, bounded title and completion flag.
Give fields explicit types and constraints.
Let the server assign identifiers and ownership from trusted identity; writable JSON should contain only the fields the caller is allowed to change.
tasks(id PRIMARY KEY, owner_id FOREIGN KEY,
title NOT NULL, completed NOT NULL)
Writable create fields: title
Writable complete field: completed
Driver-neutral schema sketch: Choose the actual database types, title bounds and boolean representation for your platform.
Document what happens if a requested ID does not exist or belongs to another user.
05
πͺBuild a Semantic and Responsive Interface
Use meaningful headings, labels and buttons with visible focus.
Show loading, empty, success and failure states in readable text.
Keep essential actions available on a small screen and through the keyboard.
Stable layout and contrast matter as much as decorative polish.
Plain text presentation fragment: Choose an ID allocation policy and a maximum task count for your prototype.
Explain whether a page reload discards state; do not claim durability if you only use an in-memory array.
07
π¨Define Backend Request Outcomes
For the shared project define collection and item routes, allowed methods, input shape and response behavior before writing handlers.
A client must handle denial and failure explicitly.
Avoid assuming every response contains JSON, especially a completed204 operation.
GET /api/tasks β caller-owned tasks
POST /api/tasks {title} β created task
PATCH /api/tasks/:id {completed} β changed owned task
DELETE /api/tasks/:id β completed empty response
Example contract β project-specific: Unlike an executable lab API, this is a specification you must implement.
Document actual statuses, serialization, bounds and retry behavior in your chosen backend.
08
πProtect Ownership and State Changes
Resolve identity with maintained authentication/session infrastructure.
Authorize each read and change against the requested object, then validate the exact writable fields.
Apply suitable framework CSRF protection for cookie-authenticated writes.
Render task titles as text and bind database values.
UPDATE tasks SET completed = :completed
WHERE id = :task_id AND owner_id = :trusted_owner;
Authorized update β conceptual SQL: Use real driver parameters, check affected rows and implement appropriate atomic behavior.
A valid session or CSRF token never grants ownership of another userβs task.
09
ποΈMake Persistence and Failures Explicit
A shared persistence layer must preserve accepted changes according to a documented transaction boundary.
Roll back failed grouped operations.
Treat browser storage as a local convenience with failure handling, not a cross-device database or proof of identity.
Decide how a client recovers from an uncertain request outcome.
operation accepted? response lost?
retry may duplicate creation?
state read back? conflict handled?
Failure worksheet: For a create operation, define any retry/idempotency policy and enforce it on the backend.
Do not silently retry mutations while assuming that a lost response means nothing changed.
10
π§ͺWrite Tests That Check Behavior
Give each test its initial state, action, expected outcome and observed result.
Check empty/valid/boundary/invalid inputs, owner and other-user access, persistence and error display.
Snapshot data around denied changes so a displayed error cannot hide a partial mutation.
Initial: two tasks owned by A; one task owned by B.
Action: A attempts to complete B task.
Expected: denied; B task unchanged; no private details returned.
Observed: record actual status/body/store and tested release.
Task case example: A checklist is not test execution.
Retain the commands, fixtures or manual reproduction that a reviewer can run.
Make evidence reproducible
πInitial state
Known fixtures
π§ͺAction
Specified input
πObservation
Outcome plus state
11
π οΈDebug Across the Whole Request Journey
Locate the first boundary with an unexpected observation: control value, browserevent, network request, handler, query or rendered outcome.
Compare expected input/output at that boundary.
Do not edit every layer at once or remove a permission check merely to make the happy path pass.
reproduce β inspect actual input β locate divergence
make focused change β rerun affected positive/negative cases
Debugging sequence: Keep secrets and private data out of screenshots and public logs.
Include enough sanitized evidence to explain a failure without publishing real credentials.
12
πVerify the Release You Demonstrate
Record the commit, build, domain and backendcontract used for the demonstration.
Smoke-test required routes and interactions on that deployed release.
Check small screens, keyboard use and representative loading behavior.
Keep a compatible rollback target.
commit identifier
frontend and backend version
serving domain
smoke results + measurement conditions
Release evidence: A successful build alone does not verify the application.
If an update is invisible, identify the serving release and cache layer as practised in Level29.
13
πPrepare a Reviewable Project Portfolio
Provide a README with purpose, features, setup, architecture, test instructions, screenshots and limitations.
Separate your own work from team responsibilities and third-party components.
Explain tradeoffs using observed behavior rather than claiming a technology is always best.
Problem and user journey
Local setup and configuration names (no secret values)
Architecture and data contract
Tests and observed results
Limitations and next improvements
README outline: A link to a running demo helps only when the reviewer can also understand how to reproduce the important behavior.
14
π¬Explain the Project in an Interview
Start with the user problem, describe one end-to-end operation and explain one decision.
Be ready to show the data model, validation, object permission and error handling for that operation.
Discuss what you personally implemented and what is still incomplete.
problem β user action β browser/backend/data flow
decision β alternative considered β evidence β limitation
A concise explanation structure: Do not memorize a claim you cannot demonstrate.
If asked about an unimplemented feature, explain the planned boundary and label it as future work.
Use the course as a map: HTML and CSS for structure/layout; JavaScript and DOM for interaction; HTTP and backend lessons for contracts; SQL for stored relationships; security and performance for protected reliable delivery.
Static + shared: backend blocker and persistence/contract evidence gaps.
π
Private scope
Static + private: backend blocker and access/contract evidence gaps.
βοΈ
Backend path
PHP or Java + shared/private: no static blocker, but required backend/data/access evidence still needed.
π
Deployed target
Choose production: release evidence becomes required, even for static practice.
π
Scope counts
Public memory backend still needs a backend contract; data/access remain outside that declared scope.
π§ͺ
Self-report
Check applicable reminders: ready for self-review; no actual test/certification occurs.
π€
Literal input
Use title <Demo> & tasks with a valid brief: display stays text. Edit clears the report; reset clears checkboxes.
22
πQuick Revision
π―Scope: One useful complete journey.
π§±Architecture: Responsibilities match requirements.
π§ΎData: Types, constraints and trusted ownership.
πͺUI: Readable keyboard/mobile outcomes.
π¨Contract: Accepted and rejected operations.
πProtection: Authorization before mutation.
π§ͺEvidence: Reproducible actual observations.
πRelease: Identify the demonstrated version.
πPortfolio: Setup, design, tests and limits.
π¬Explain: Your contribution and tradeoffs.
23
πGlossary β Flip to Learn
TERM
Capstone
Click to see meaning
DEFINITION
Capstone
A project bringing together concepts from the learning journey.
TERM
Vertical slice
Click to see meaning
DEFINITION
Vertical slice
A complete user action implemented across its required layers.
TERM
Acceptance criterion
Click to see meaning
DEFINITION
Acceptance criterion
An observable condition defining the intended feature behavior.
TERM
Application contract
Click to see meaning
DEFINITION
Application contract
The agreed operations, inputs, outputs and failure behavior.
TERM
Invariant
Click to see meaning
DEFINITION
Invariant
A condition that must remain true across permitted operations.
TERM
Negative test
Click to see meaning
DEFINITION
Negative test
A case verifying rejection or safe behavior for an invalid/disallowed action.
TERM
Test fixture
Click to see meaning
DEFINITION
Test fixture
Known starting data or conditions used to reproduce a test.
TERM
Evidence
Click to see meaning
DEFINITION
Evidence
Recorded observations supporting a project claim.
TERM
Tradeoff
Click to see meaning
DEFINITION
Tradeoff
A choice balancing benefits and costs under specific constraints.
TERM
Self-review
Click to see meaning
DEFINITION
Self-review
A deliberate assessment of declared work before independent verification.
24
πFinal Challenge β Build and Defend a Study-Task Tracker
Implement list, create, complete and pending-filter actions with bounded titles, stable IDs and explicit empty/error states.
For local practice, state clearly that memory is temporary.
For shared private operation, implement maintained identity/session protection, per-owner read/write authorization, writable-field validation and driver-bound persistence.
Retain tests for valid creation, empty/overlong input, repeated/uncertain requests, owner versus other-owner operations, persistence and failure recovery.
Record initial state, expected/observed outcomes and unchanged data after rejection.
Test the actual implementation rather than merely checking planner reminders.
Provide a README with setup, architecture, data/request contracts, your contribution, actual tests and limitations.
Identify the release you demonstrate, check keyboard/mobile behavior and prepare a short explanation of one tradeoff and one failure you diagnosed.
Success criterion: another reviewer can run the project, repeat its important tests and understand the decisions.
All30 lesson pages are now available in the course; this pageβs completion marker records only this lesson on this device.
π―
Feature
A small working task journey.
π§ͺ
Evidence
Reproducible outcomes and state checks.
π¬
Explanation
Own decisions and honest limitations.
25
β Level 30 Complete?
Describe your scoped capstone, trace one operation, identify its test evidence and explain its limits. Marking this lesson does not mark previous lessons complete or verify a project. Return to the roadmap for revision and use the existing Placement resources for further practice.