Created by Laurence Svekis. Read, apply and record evidence in the interactive workbook. Course completion is not an audit of your external project.
Foundations
Understand the workflow and establish a safe practice space.
1. Start with a user problem
A useful app begins with a person trying to do something, not a list of technologies. Describe the current problem and the smallest improvement you can observe. An AI coding assistant can help draft options, but it cannot decide what your users actually need without evidence. Use a fictional task board in this studio, then transfer the same questions to your own idea.
Worked example
For a student who forgets study tasks, the first outcome is recording one task and seeing it after a reload. “A productivity platform” does not identify a testable first outcome.
Guided practice
Name one user, one problem and one useful outcome.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Which brief gives the clearest starting point?
Build something amazing
Help students track three study tasks without an account
Use every new framework
Answer and explanation
Help students track three study tasks without an account. A specific user and outcome make scope and testing possible.
2. Know the assistant’s role
An AI coding assistant proposes or applies changes based on the context and tools available to it. It can misunderstand requirements, overlook files or describe checks it has not actually run. Your role is to define the goal, review consequences and ask for evidence. Capability varies by tool and configuration, so establish what it can read, edit, execute and publish before granting broad access.
Worked example
For a local task board, let the assistant propose code and run local checks. Keep publishing and any external data access as separate, reviewed actions. A sentence saying “deployed” is not a deployment record.
Guided practice
Write an action boundary: what may be drafted, changed, tested and published.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What establishes that a check ran?
A confident statement
A relevant execution result you can inspect
A large code block
Answer and explanation
A relevant execution result you can inspect. Evidence must correspond to the actual action and environment.
3. Prepare a disposable workspace
Use a practice folder and data you can afford to lose while learning. Identify where source files live, how to start the preview and how to stop it. Keep credentials and unrelated private files outside the exercise. A tool’s preview may differ from production, so record its address and limitations. This is preparation for understandable work, not a request to install every available tool.
Worked example
A practice folder contains index.html, style.css and app.js. Its preview serves that folder; edits to another folder do not affect it. A backup copy or version-control checkpoint protects the starting state.
Guided practice
Record your source location, preview method and recovery point.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Why identify the served folder?
To make files bigger
To avoid editing a copy that the preview does not use
To bypass permissions
Answer and explanation
To avoid editing a copy that the preview does not use. A correct edit in the wrong location will not change the visible app.
4. Learn the vocabulary you need
A file is stored source; a runtime executes code; a dependency supplies code from elsewhere; a build step transforms source; deployment makes a version available in a target environment. These terms explain different parts of the workflow. Ask what each part does in your project rather than memorizing product names. A simple static site may not need a build step or server application.
Worked example
HTML describes the interface, CSS styles it and JavaScript updates behavior in the browser. Hosting serves those files. That arrangement is different from a backend process that stores shared data.
Guided practice
Draw the route from source files to a visitor’s browser and name each step.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Which term means making a version available in its target environment?
Refactoring
Deployment
Indentation
Answer and explanation
Deployment. Deployment concerns where a built or source application is made available.
5. Choose a proportional starting stack
Choose tools based on what the app must do and where it will run. A browser-only exercise may need plain HTML, CSS and JavaScript, while shared accounts and server-controlled data require more architecture. Ask the assistant to explain each dependency and deployment assumption. Do not add a backend merely because one is fashionable.
Worked example
A local task board can use HTML, CSS and JavaScript without accounts. If private team sharing becomes required, reconsider storage, server authorization and deployment instead of pretending browser storage is shared.
Guided practice
State your hosting and dependency constraints.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
When is a backend a meaningful requirement?
For every button
When trusted shared data or server-side behavior is needed
Only for dark mode
Answer and explanation
When trusted shared data or server-side behavior is needed. Architecture should follow the behavior and trust boundaries.
A testable brief
Define scope, state, data and acceptance criteria.
6. Separate essentials from possibilities
Ideas tend to grow faster than working software. A first version should complete one useful path, while later features wait in a separate list. A feature is not essential just because it is attractive. Use the scope exercise to decide which features support the stated brief and which would introduce unrelated complexity.
Worked example
The first task board includes add, complete and delete. Notifications and team invitations wait. Keyboard operation remains part of the core, because a working flow must be operable by its intended users.
Guided practice
Define three must-have behaviors and two explicit exclusions.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What belongs in a first version?
Everything suggested by AI
The smallest useful end-to-end workflow
Only a polished logo
Answer and explanation
The smallest useful end-to-end workflow. A small complete workflow is easier to test and learn from.
7. Write observable acceptance criteria
Acceptance criteria describe behavior someone can verify. “Modern and intuitive” is a design intention, not a sufficient test. “An empty task is rejected with a visible message” is observable. Include invalid input and empty-state behavior, not only the successful path. These criteria become the shared reference when the assistant proposes a change.
Worked example
Given a title containing only spaces, submitting shows an error and leaves the task count unchanged. Given “Read chapter 1”, submitting adds one task and clears the input.
Guided practice
Write a successful case and an invalid-input case.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Which criterion is testable?
The app feels magical
The code is clever
An empty task shows an error and is not added
Answer and explanation
An empty task shows an error and is not added. A defined input and expected result support a repeatable check.
8. Map screens and state
A screen is a view of application state. For a small task board, state might be a list of task objects plus an input field. Identify empty, populated, completed and error states before asking for layout. This prevents a visually polished happy path from hiding missing behavior. A simple sketch or list is enough to begin.
Worked example
Sketch four views: no tasks, three active tasks, one completed task, and an invalid title with a message. The same state model should explain how the app moves between them.
Guided practice
Describe the empty, populated and error states.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Why plan an empty state?
The app may have no records on first use
It replaces validation
It prevents every bug
Answer and explanation
The app may have no records on first use. First use and cleared data need a useful interface too.
9. Define a data contract
A data contract states the expected fields, types and rules. Decide whether identifiers are strings, whether an empty title is allowed and what completed means. UI code and storage code must agree on that shape. Changing the shape without migration can break saved work. A tiny explicit contract is better than several functions making incompatible assumptions.
Worked example
A task is {id:"t1",title:"Read notes",completed:false}. The id stays stable, title is nonempty after trimming and completed is boolean. An older record missing completed needs an explicit default or rejection policy.
Guided practice
Write your record shape, two valid examples and one invalid example.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Why keep a stable task id?
To identify a record even when order changes
To replace validation
To guarantee encryption
Answer and explanation
To identify a record even when order changes. Position is a display detail; identity should survive sorting and filtering.
10. Create a complete build brief
Combine purpose, scope, state, constraints and acceptance criteria into a concise brief. Name what is excluded so the assistant does not expand the project unnecessarily. Keep unknowns visible. The brief is a working agreement to refine as evidence changes, not a promise that one prompt will produce finished software.
Worked example
The brief names one learner, one-browser storage, add/complete/delete, blank-input handling and keyboard controls. It excludes accounts and states how persistence failure is explained.
Guided practice
Build a brief that includes scope and verification.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What should happen to an unresolved requirement?
Make it explicit and ask a targeted question
Invent an answer silently
Hide it in a long prompt
Answer and explanation
Make it explicit and ask a targeted question. Visible unknowns prevent accidental assumptions becoming product behavior.
Working with an assistant
Provide focused context and keep changes reviewable.
11. Ask for a plan before broad changes
For unfamiliar code, ask the assistant to identify relevant files, explain the proposed change and name the checks it will run. Keep the plan proportional: a tiny text change does not need a long design document. Review the proposed scope before allowing a large rewrite. A plan is useful only if it helps you understand what will change.
Worked example
Before a storage fix, ask the assistant to identify the load/save functions, propose a small change and name tests for valid data, malformed JSON and unavailable storage.
Guided practice
Ask for affected files and a small implementation plan.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What is a useful plan for a small fix?
Rewrite the whole app
Name the affected behavior, files and checks
List unrelated technologies
Answer and explanation
Name the affected behavior, files and checks. A bounded plan makes changes reviewable.
12. Assemble a focused context pack
An assistant needs the relevant goal, files, existing behavior, constraints and evidence. It does not need an indiscriminate copy of everything. Include exact error text and current code when debugging, and explain which material is source evidence rather than instructions. Remove secrets and verify that you are authorized to share the content. Refresh the pack when the project changes.
Worked example
For an empty-task defect, provide the submit handler, render function, reproduction and expected result. A screenshot alone cannot show the validation branch or stored values.
Guided practice
Prepare a minimal context pack for one change.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Which context is most useful for a specific defect?
All unrelated project history
The relevant code, reproduction and expected behavior
Only the app name
Answer and explanation
The relevant code, reproduction and expected behavior. Relevant evidence reduces guessing without burying the task.
13. Request small, explicit changes
Describe the exact behavior to change and what should remain true. A narrow request makes the resulting diff easier to inspect and reduces unrelated changes. Avoid asking the assistant to “improve everything” while debugging one issue. When a broader refactor is justified, separate it from the behavior fix and test both carefully.
Worked example
“Reject trimmed empty titles in the submit handler; preserve the stored task shape and current layout.” Review the diff to confirm those boundaries were respected.
Guided practice
Ask for one behavior change with a clear boundary.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Why separate a bug fix from a broad refactor?
To make evidence and review clearer
Because refactoring is forbidden
To avoid testing
Answer and explanation
To make evidence and review clearer. Smaller changes make cause and effect easier to assess.
14. Set a change budget
A change budget names the allowed behavior and files, plus conditions that require pausing for clarification. It is a scope-control technique, not a security boundary. Ask the assistant to explain any necessary expansion. Inspect the actual diff afterward: the request alone does not prove that changes stayed within scope.
Worked example
Fix task validation in app.js and its test. Do not redesign navigation or change storage format. If the bug depends on the format, report that finding before migrating data.
Guided practice
Write an allowed-change list and two out-of-scope changes.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Does a narrow prompt prove the diff stayed narrow?
Yes
No, inspect the actual changes
Only if it mentions files
Answer and explanation
No, inspect the actual changes. Instructions express intent; the diff is evidence of what changed.
15. Use checkpoints and version history
Save a known working version before a risky change. Version control helps you inspect differences and restore earlier work, but only if changes are understandable and committed appropriately. Never assume an AI assistant has created a backup unless you verify it. In this studio, comparison snapshots preserve prompts and pasted evidence, not your actual application repository.
Worked example
Save the working task board before changing storage. Note the checkpoint identifier and restore method, then review the diff after the change rather than relying on memory.
Guided practice
Add a checkpoint and rollback instruction to your workflow.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What should you verify before a risky change?
That a recoverable checkpoint exists
That the prompt is long
That every file was renamed
Answer and explanation
That a recoverable checkpoint exists. A real checkpoint makes recovery concrete.
Understand the implementation
Follow behavior through code and inspect dependencies.
16. Read the code that matters
You do not need to memorize every line, but you should understand the main data flow and the parts you will change. Ask for the entry point, state representation and important functions. Then explain one path back in your own words. A confident generated explanation should still be compared with the actual code.
Worked example
Trace Add from the form submit handler to title validation, creation of a task record and renderTasks. Explain where an invalid title stops before state changes.
Guided practice
Trace one click through event, state and render.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What demonstrates understanding better than copying?
Explaining how one action changes state and the UI
Counting files
Reading only the README title
Answer and explanation
Explaining how one action changes state and the UI. Following a concrete path connects code to behavior.
17. Trace events through the interface
An event handler connects a user action to code. For forms, submission can happen through Enter as well as a button click. Choose an event that represents the behavior instead of adding disconnected handlers for each input method. Follow the sequence from event to validation, state update and render. Native controls provide useful semantics you should preserve.
Worked example
A form submit handler prevents navigation, trims the title, rejects an empty result, adds one task and rerenders. A click-only handler may miss Enter or produce duplicate paths.
Guided practice
Trace a submit event and identify where invalid input stops.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Why handle form submission rather than only a button click?
It includes keyboard submission paths
It removes the need for labels
It makes every request secure
Answer and explanation
It includes keyboard submission paths. The form event better represents the intended submit action.
18. Model state and derived values
State is the information needed to determine the current interface. Derived values can be computed from that state. Storing both a task list and a separate completed count creates two things that may drift apart. Prefer one source of truth unless there is a deliberate reason to cache derived data. Explain how a render reads state after every update.
Worked example
Store tasks and a selected filter. Compute the completed count from tasks.filter(t=>t.completed).length. Deleting a completed task then updates the count without a second manual decrement.
Guided practice
List stored state and derived values separately for your app.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Which value can usually be derived from the task list?
A task’s stable id
The count of completed tasks
A user-entered title
Answer and explanation
The count of completed tasks. Derived values should not create unnecessary duplicate state.
19. Validate forms without trapping users
Validation should explain what needs fixing and let the user recover. Check constraints at the appropriate boundary and keep entered values when helpful. Place messages near the relevant control and make them understandable without color alone. Browser-side validation improves usability but cannot enforce server trust boundaries. Test keyboard submission and repeated attempts.
Worked example
A blank title produces “Enter a task title” near the input, leaves the list unchanged and returns focus appropriately. It does not erase all existing tasks or silently ignore the action.
Guided practice
Write the invalid-input message and expected recovery behavior.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What should an invalid submission preserve?
Useful user work and existing valid state
Only the page colors
No information
Answer and explanation
Useful user work and existing valid state. Recoverable errors help the person complete the task.
20. Review dependencies and generated commands
Generated installation or terminal commands are actions, not harmless prose. Understand what they download, modify or expose before running them. Check package identity and official documentation when adding a dependency. Do not paste secrets into prompts or commit credential files. Prefer a small dependency set you can maintain.
Worked example
If the assistant proposes a package for trimming a title, ask why native String.trim is insufficient. For a justified dependency, inspect its identity and the installation command before running it.
Guided practice
Ask why each proposed dependency is necessary.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What should you do with an unfamiliar generated command?
Run it because it looks technical
Understand its effects before execution
Share credentials to simplify it
Answer and explanation
Understand its effects before execution. Commands can change your environment; review their purpose and effects.
Your first working slice
Connect behavior, data and recovery in a small app.
21. Build a vertical slice
A vertical slice completes one behavior from interface to state and visible result. For example, typing a title and adding a task is more useful than building all styling before any behavior works. Ask the assistant to implement that path first, then test it before adding more features. Small complete slices expose integration problems early.
Worked example
Implement one complete route: type a title, submit, create a record and render it. Then test that route before adding sorting, filtering or animations.
Guided practice
Request one working user path before the next feature.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Which is a vertical slice?
A folder full of unused components
All color choices
Enter a task, add it and see it in the list
Answer and explanation
Enter a task, add it and see it in the list. A vertical slice connects the parts needed for a real action.
22. Render untrusted content as text
User-entered strings are data, not HTML instructions. In browser interfaces, prefer textContent for plain text rather than inserting it through innerHTML. Escaping for one context does not automatically make a string safe in another. Rich text requires a deliberate sanitization policy and maintained tools. Do not turn an ordinary task title into executable markup.
Worked example
A task titled <img src=x onerror=...> should appear as literal text. Creating a text node preserves that intent without interpreting the string as an element.
Guided practice
Identify every place your app displays user or imported text and how it is rendered.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Which API is appropriate for a plain task title?
innerHTML with raw input
textContent
eval
Answer and explanation
textContent. Text rendering avoids interpreting the string as markup.
23. Handle local storage honestly
Browser storage is convenient for a local app but can be cleared, blocked or unavailable. It is not a multi-device database or a secure secret store. Parse stored JSON defensively and decide what to show if saved data is malformed. A local-only product should explain its limits and offer export if the data matters.
Worked example
If JSON.parse fails on saved tasks, show a recovery message instead of silently claiming all data loaded. If storage writes fail, keep the session usable and explain the persistence limitation.
Guided practice
Define behavior for unavailable or malformed storage.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Does localStorage automatically sync all devices?
No
Yes
Only for arrays
Answer and explanation
No. Local browser storage is not a cloud synchronization service.
24. Export and restore user work
An export is useful only if it can be restored reliably. Include a version, validate types and limits on import, and ask before replacing existing work. Treat imported files as untrusted data. A successful JSON parse does not prove the file belongs to your application. Test a round trip and a malformed file, not just the download button.
Worked example
A task backup contains version:1 and an array of task records. Restore rejects unknown versions and invalid completed values, then preserves the current list until validation and confirmation succeed.
Guided practice
Design the backup shape and record a round-trip test.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
When should existing data be replaced?
Before reading the import
After validation and deliberate confirmation
Whenever the filename ends in .json
Answer and explanation
After validation and deliberate confirmation. Validate first so a bad import cannot destroy working data.
25. Finish a small working slice
A milestone should demonstrate a complete useful behavior and document known limitations. For this first capstone, add, complete and delete tasks in a disposable local app. Keep optional features out until the core works. Record the observed result of each acceptance test rather than simply marking all boxes because the interface looks finished.
Worked example
The first slice accepts a valid title, rejects spaces, marks one chosen task complete and deletes that same task. A short test record includes input, expected result and actual result for each action.
Guided practice
Build or inspect the task-board slice and write evidence for all four behaviors.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What is sufficient evidence for a completed slice?
A screenshot alone
Observed outcomes for the defined user flow
The assistant’s enthusiasm
Answer and explanation
Observed outcomes for the defined user flow. A useful milestone is demonstrated through behavior.
Debugging with evidence
Reproduce, investigate, repair and verify.
26. Reproduce the problem precisely
A useful bug report names the starting state, exact steps, expected result and actual result. Include the error message as text where possible. “It is broken” forces the assistant to guess. Try to reproduce the issue with the smallest relevant input and record whether it happens consistently.
Worked example
Start with an empty list. Enter three spaces. Submit once. Expected: an error and no task. Actual: one blank task. Record the browser and version where you observed it.
Guided practice
Write a repeatable bug report.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Which report is most actionable?
The page is bad
Something happened
After adding a blank title, an empty row appears instead of an error
Answer and explanation
After adding a blank title, an empty row appears instead of an error. A concrete trigger and expected behavior narrow the investigation.
27. Inspect evidence before editing
Console errors, network failures and state values can narrow a hypothesis. Ask the assistant to distinguish observed facts from guesses and suggest the next observation that would help. Avoid changing multiple unrelated parts before identifying a plausible cause. Logs should not expose private information or remain unnecessarily verbose in production.
Worked example
A console log shows the raw title has length three while title.trim() has length zero. That supports a validation hypothesis; it does not justify rewriting the entire rendering system.
Guided practice
Separate observed evidence from a proposed cause.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Is an assistant’s first diagnosis proof?
Yes
No, it is a hypothesis to test
Only if it is detailed
Answer and explanation
No, it is a hypothesis to test. A plausible explanation still needs confirming evidence.
28. Test the boundary cases
Many defects appear at boundaries: empty strings, long text, zero records, repeated clicks or missing stored data. Choose tests based on the behavior you changed. A passing happy path does not establish that the app handles invalid input. Define expected outcomes before deciding whether a result is correct.
Worked example
Try empty text, spaces, a normal title, a long title and repeated submission. Write expected outcomes first so you are not redefining success after seeing the result.
Guided practice
List normal, empty and repeated-action cases.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Why test a repeated click?
It can reveal duplicate actions or state problems
It guarantees security
It changes the language
Answer and explanation
It can reveal duplicate actions or state problems. Repeated actions can expose assumptions hidden in a single successful run.
29. Verify the fix with a regression check
A regression check confirms that the bug no longer occurs and that important existing behavior still works. Ask the assistant to show the test result rather than merely assert success. A test that repeats the implementation without testing behavior can miss the same mistake. Prefer observable inputs and outcomes.
Worked example
After the trim validation change, repeat the original spaces-only case, then add a normal task and complete/delete it. Preserve the observed results, not just “tests passed”.
Guided practice
Specify a regression test for the original failure.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What is strong evidence that a fix works?
The code became longer
The assistant says fixed
The original reproduction now passes and related behavior remains correct
Answer and explanation
The original reproduction now passes and related behavior remains correct. Verification must connect back to the actual problem.
30. Use the assistant to explain a fix
After a repair, ask what changed, why it addresses the cause and what was tested. Then explain the change without looking at the generated summary. If you cannot connect it to the reproduction, investigate further. The goal is to build your ability to maintain the app, not accumulate opaque patches.
Worked example
Explain that trimming happens before the emptiness check and before state mutation. If the explanation says rendering fixes the bug but the diff changes validation, investigate the mismatch.
Guided practice
Explain the fix in your own words.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What should a repair explanation connect?
The cause, change and verification
Only the file size
Only the assistant’s confidence
Answer and explanation
The cause, change and verification. That chain makes the fix understandable and reviewable.
Usability and boundaries
Review access, errors and data handling.
31. Review accessibility as behavior
Accessibility includes keyboard operation, visible focus, labels, readable contrast and meaningful structure. A polished screenshot cannot establish these behaviors. Use semantic controls and manually test important flows. Automated checks can help find selected problems, but they do not prove complete accessibility or replace testing with people.
Worked example
Tab to the title field and submit with Enter. Reach Complete and Delete with the keyboard, confirm visible focus and ensure each control identifies the relevant task.
Guided practice
Add keyboard and label checks to your review.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Can a screenshot prove keyboard accessibility?
Yes
No
Only on desktop
Answer and explanation
No. Keyboard interaction must be exercised, not inferred from appearance.
32. Test responsive and zoomed layouts
A narrow viewport and browser zoom expose different layout pressures. Test real text, long labels and empty/error states, not just an ideal screenshot. Avoid hiding horizontal overflow as a universal fix because it can conceal content or focus indicators. Record which widths and zoom settings you actually checked; do not claim devices you did not test.
Worked example
At a narrow width the task title wraps and controls remain reachable. At increased browser zoom, labels and error messages are still readable without overlapping the form.
Guided practice
Test a narrow layout and increased zoom with long content.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Why is overflow:hidden not a universal repair?
It can conceal useful content and focus
It always breaks CSS
It creates a backend
Answer and explanation
It can conceal useful content and focus. Clipping can hide the symptom without making the interface usable.
33. Design loading, empty and error states
Applications need feedback while work is pending and when it fails. Avoid showing old data as though it were a fresh successful result. Decide whether retries are safe and whether a partial result should remain visible. An empty successful response is different from a network failure. Clear states reduce the temptation to treat every blank panel as a bug in rendering.
Worked example
The status area distinguishes “Loading tasks”, “No tasks yet” and “Could not load tasks; retry”. A retry does not duplicate a write that might already have succeeded.
Guided practice
Define loading, empty, success and error messages for one operation.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Is an empty successful result the same as an error?
Yes
No
Only on mobile
Answer and explanation
No. The state needs to communicate what actually happened.
34. Protect trust boundaries
Browser code is under the user’s control. Real authorization, trusted prices and private shared data need appropriate server-side enforcement. Do not treat hiding a button as access control. For the local task-board exercise, avoid adding accounts or pretending that browser storage is secure. If scope changes, revisit the architecture deliberately.
Worked example
Hiding Delete for a non-owner is a UI choice. A shared backend must also reject unauthorized delete requests even if someone constructs the request manually.
Guided practice
Identify which decisions must not rely on browser-only checks.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Is hiding an admin button sufficient authorization?
Yes
Only with CSS
No
Answer and explanation
No. Users can alter client code; protected actions need trusted enforcement.
35. Review data crossing a boundary
Consider where data enters, where it is interpreted and who may control it. Form input, imported files, URLs and external responses all need appropriate validation. The browser interface is not trusted enforcement for protected actions. A simple boundary map helps an AI assistant suggest controls in the right place instead of adding superficial warnings.
Worked example
Imported task titles are checked for shape and rendered as text. If shared accounts are added later, authorization belongs on the server for each protected action, not in a hidden button.
Guided practice
Map one input from entry through validation, storage and display.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Where must authorization for a protected shared record be enforced?
Only in CSS
At the trusted server boundary
Only in a button label
Answer and explanation
At the trusted server boundary. Client interfaces can be modified and cannot be the sole authority.
Connected app decisions
Understand APIs, async behavior and shared systems.
36. Read an API contract before calling it
An API contract describes the endpoint, request method, required fields, response shape and error behavior. Do not infer all of this from a sample URL. Check official documentation and use a disposable environment when possible. A successful HTTP response can still contain data that violates your application assumptions, so validate the response you consume.
Worked example
A task-list endpoint returns an object with an items array, not the array directly. Code that immediately calls response.map fails even though the request succeeded.
Guided practice
Write a request/response contract and one failure case for a proposed integration.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Does HTTP success prove the response matches your expected shape?
No
Yes
Only for JSON
Answer and explanation
No. Transport status and application data validity are separate checks.
37. Handle asynchronous work deliberately
Promises represent work that may finish later or fail. Await the result where appropriate, handle rejection and consider what happens when requests finish out of order. A slower old search should not overwrite newer results. A timeout or abort can help resource management, but the UI must still represent the final state honestly.
Worked example
Search A starts, then Search B starts and finishes first. A request identifier or cancellation policy prevents A’s later response from replacing B’s current results.
Guided practice
Describe pending, success, failure and stale-result behavior for one request.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What can happen when requests finish out of order?
An older result can overwrite a newer one
JavaScript becomes JSON
The network guarantees ordering
Answer and explanation
An older result can overwrite a newer one. UI state needs a policy for stale completions.
38. Decide when a backend is needed
A backend is useful when the application requires trusted shared state, protected credentials or server-side actions. It adds deployment, authentication, monitoring and data responsibilities. Do not simulate these guarantees by storing secrets in browser code. Keep a browser-only prototype clearly labeled until the required server behavior exists and is tested.
Worked example
A personal task list can be local. A team task list with private membership needs a trusted service that verifies the requesting user’s access to each team record.
Guided practice
Explain which proposed feature changes the trust or storage architecture.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Where should a private server credential live?
In public frontend JavaScript
In an appropriate protected server environment
In a hidden HTML input
Answer and explanation
In an appropriate protected server environment. Hidden client content is still available to users.
39. Distinguish identity from permission
Authentication answers who a requester is; authorization answers what that requester may do. A signed-in user is not automatically allowed to access every record. Design ownership and membership checks before building shared data screens. Use established mechanisms appropriate to the platform, and test both allowed and denied cases with separate test accounts.
Worked example
User A can read their own task. Changing a task ID in a request must not reveal User B’s private task simply because User A is signed in.
Guided practice
Write one allowed-access case and one denied-access case.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Does being signed in grant access to every record?
Yes
No
Only if the record id is known
Answer and explanation
No. Every protected operation needs the relevant permission check.
40. Set limits and operational budgets
Connected systems have limits: request size, rate, execution time, provider quotas and cost. Establish a small test budget and avoid uncontrolled retry loops. A retry policy should distinguish temporary failures from permanent ones and avoid repeating non-idempotent actions blindly. Check current platform limits in official documentation rather than hard-coding a remembered number into a tutorial.
Worked example
A failed read may be retried with a bounded policy. A payment or message send should not be repeated automatically without a reliable deduplication strategy.
Guided practice
Define a maximum retry count and a safe stopping condition for one operation.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Why bound retries?
To avoid uncontrolled repeated work or cost
To guarantee all requests succeed
To bypass provider limits
Answer and explanation
To avoid uncontrolled repeated work or cost. Failure handling needs limits and visible stopping behavior.
Release and recovery
Verify the deployed environment and prepare maintenance.
41. Check the deployed environment
A local preview and production may differ in paths, configuration, permissions or caching. Test the actual deployed URL after release and verify important actions there. Do not claim a site is live merely because a package exists. Keep credentials out of public code and documentation, and record any setup assumptions.
Worked example
The local preview works, but a production asset path is wrong. Open the deployed URL and inspect loading errors; do not describe the upload as verified merely because the ZIP was created.
Guided practice
Write a post-deployment smoke test.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What confirms a deployment works?
A ZIP file exists
The actual deployed URL passes key checks
A local screenshot only
Answer and explanation
The actual deployed URL passes key checks. Production behavior needs direct verification in its real environment.
42. Separate configuration from source
Configuration may vary by environment, but secrets must not become public client code. Identify which values are safe to expose and which are server-only. Document required variables without publishing their real values. A deployment can fail because configuration differs even when the source code is unchanged. Verify how your chosen hosting platform supplies configuration.
Worked example
A public API base URL can appear in client configuration. A private signing key cannot. A sample environment file lists variable names with placeholders, not production secrets.
Guided practice
Classify each required configuration value as public or protected.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Is every environment variable automatically secret in a frontend build?
Yes
No, build tools may embed values in public output
Only on Tuesdays
Answer and explanation
No, build tools may embed values in public output. The delivery context determines whether a value is exposed.
43. Run a production smoke test
A smoke test checks a small set of critical behaviors in the actual deployed environment. Use safe test data and verify the URL, version and relevant permissions. Confirm persistence and error behavior where appropriate. Passing locally is useful but cannot prove that production paths, caching and configuration are correct.
Worked example
After release, load the real URL, add a test task, reload, complete it and remove it. Record the version and whether each action behaved as expected, then clean up the test data.
Guided practice
Create and record a concise post-deployment test sequence.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Where must a production smoke test run?
Only in a local preview
At the actual deployed environment
Only in a screenshot editor
Answer and explanation
At the actual deployed environment. It checks the environment the users will actually reach.
44. Prepare recovery and maintenance
A useful release includes a way to roll back and a note about known limitations. Record who owns the app and how dependencies or hosting will be maintained. Avoid implying that generated software maintains itself. A smaller app you understand is often easier to support than a large collection of features you cannot explain.
Worked example
Record the previous deployed version, how to restore it, and whether stored data remains compatible. A rollback plan that restores code but cannot read migrated data is incomplete.
Guided practice
List rollback steps and known limitations.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What belongs in a release note?
Only praise
No limitations
Changes, checks, known limits and recovery steps
Answer and explanation
Changes, checks, known limits and recovery steps. Clear release notes support future maintenance.
45. Test with someone else
Someone unfamiliar with the build can reveal unclear labels, missing feedback and assumptions you stopped noticing. Give them a task rather than telling them which buttons to click. Observe where they hesitate and distinguish a real usability issue from a personal preference. Use the findings to choose the next small improvement.
Worked example
Ask “Track and finish one study task” without pointing to controls. Observe hesitation, keyboard use and error recovery, then record a concrete improvement.
Guided practice
Write a user test task without revealing the steps.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Which instruction is a better usability test?
Add a study task, mark it done, then remove it
Click the green button on the left
Tell me the app is good
Answer and explanation
Add a study task, mark it done, then remove it. A goal-based task lets you observe whether the interface communicates its own use.
Independent practice
Evaluate, document, reflect and demonstrate.
46. Evaluate AI-assisted work consistently
Evaluate the assistant’s output against the same requirements and evidence you would apply to a human change. Record what context was supplied, what changed and which checks ran. Faster generation is not the same as lower total effort if review and repair increase. Compare repeated tasks cautiously and keep quality criteria stable.
Worked example
For two validation patches, compare the same reproduction and regression cases. Record whether either patch changed unrelated code, not just how quickly the response appeared.
Guided practice
Compare two iterations using consistent acceptance tests and review criteria.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What makes an iteration comparison useful?
Consistent tasks and verification criteria
Always preferring more code
Only measuring response length
Answer and explanation
Consistent tasks and verification criteria. Stable criteria make differences interpretable.
47. Turn one build into a reusable workflow
Keep a concise record of the brief, prompts, changes, tests and lessons learned. Reuse the process, not every design decision: a different app can have different risks and architecture. Decide the next feature from user evidence rather than adding everything an assistant suggests. A working first version is a foundation for deliberate iteration.
Worked example
Keep a template containing the goal, context, scope, acceptance checks, checkpoint and review evidence. Replace project-specific decisions rather than copying a previous architecture blindly.
Guided practice
Write your next iteration using evidence from testing.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What should guide the next feature?
The largest generated feature list
User evidence and the product goal
Whatever creates the most files
Answer and explanation
User evidence and the product goal. Useful iteration follows observed needs and a clear purpose.
48. Document for the next maintainer
Write enough context for someone to run, test and change the app without reading your chat history. Include setup, data model, key flows, configuration names and known limitations. Documentation should describe the current implementation, not abandoned plans. Ask the assistant to verify commands and file paths against the actual project before presenting them as working instructions.
Worked example
A README states how to start the local preview, where tasks are stored, how to run the checks and that there is no cloud sync. It does not claim a backend that was only discussed.
Guided practice
Write a short handoff document based on the actual files and behavior.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What should documentation describe?
The current verified implementation
Every abandoned idea
Only the original prompt
Answer and explanation
The current verified implementation. Future maintainers need reliable information about what exists.
49. Reflect on the process, not just the result
A retrospective identifies what helped, what caused confusion and what you will change next time. Separate the assistant’s limitations from missing requirements or weak testing. Keep one concrete improvement rather than a vague promise to be more careful. Reflection is most useful when linked to an actual incident and its consequences.
Worked example
The assistant repeatedly changed styling while fixing validation. Next time, include an explicit change budget and inspect the diff before rerunning all checks.
Guided practice
Record one incident, its cause and one process change.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
Which retrospective action is most useful?
Be better somehow
Add a specific scope boundary after observing unrelated changes
Avoid all future testing
Answer and explanation
Add a specific scope boundary after observing unrelated changes. A concrete action tied to evidence can improve the next build.
50. Present an independently reviewed capstone
A capstone combines your brief, implementation, evidence and explanation. Choose a small app you can demonstrate without relying on a hidden sequence of lucky steps. Ask another person to try a goal-based task, record findings and revise. Completion in this academy records your submitted evidence and self-review; it does not audit your external app or certify production readiness.
Worked example
A learner demonstrates adding, persisting, completing and deleting a task; shows an invalid-input case; explains the state model; and lists the remaining limitations and rollback procedure.
Guided practice
Prepare a demo, test record, brief, code explanation and known-limits note.
Apply the idea to the fictional study-task board or a disposable project you control. Record the actual artifact or observation below.
Compare your work with the worked example. Note one difference, one limitation and the next check you would perform.
Knowledge check
What does this academy’s completion record establish?
That your external app is certified secure
That you recorded learning work and passed the course checks
That every deployment was audited
Answer and explanation
That you recorded learning work and passed the course checks. The course can track its exercises, not automatically verify an external application.