First profile card
A semantic, responsive card with one clear interaction.
Start here
Learn what code is, how your computer and the web work, how to debug a small website, and how to publish it safely.
By the end
Navigate files, VS Code, and a terminal without panic.
Explain how source code becomes visible output.
Understand the frontend, API, database, and cloud flow.
Build a small HTML, CSS, and JavaScript website.
Investigate errors with logs and browser tools.
Use basic Git, accessibility, security, and deployment checks.
The lesson rhythm
Every lesson follows the same calm loop, so new concepts feel familiar.
Start with one plain-English mental model.
Compare a real example with its visible result.
Make one small change and predict what happens.
Repair a mistake and prove the fix with evidence.
Project ladder
Each project produces something you can show, test, explain, and improve.
A semantic, responsive card with one clear interaction.
A published mini-site with progress, accessibility checks, Git history, and a README.
Complete course map
Open one level at a time. Only the first published lesson is marked Start; the rest are being written and tested.
Separate written instructions, a running program, and visible output.
Predict and run one tiny Python instruction, then change its message.
Thinking code is the finished app—or that AI-generated code is automatically correct.
Understand the edit, save, run, and observe loop.
Change a greeting, save the file, run it again, and confirm the output changed.
Editing without saving or looking at an older running version.
See the layers between a physical machine and the software you use.
Sort a keyboard, Windows, Chrome, and a website into the correct layers.
Calling Windows the computer or confusing a browser with a website.
Create a tidy project and recognize common file types.
Create my-first-site/index.html and confirm the editor recognizes HTML.
Creating index.html.txt or scattering project files across Downloads.
Read relative and absolute paths and know which folder a command uses.
Connect index.html to images/logo.svg and make the image load.
Using the wrong slash, letter case, or working directory.
Use Explorer, Search, Problems, the editor, and the integrated terminal.
Open a whole project folder and make one saved heading change.
Opening one loose file instead of the project folder.
Read a shell prompt and run safe navigation commands.
Use pwd, ls, mkdir, and cd to create and enter a practice folder.
Copying the $ prompt, using the wrong shell command, or assuming silence means failure.
See variables as clear names attached to values of different kinds.
Store a score and add two, then compare the number 3 with the text "3".
Expecting text and numbers to behave exactly the same.
Recognize conditions, loops, and reusable actions.
Write pseudocode that returns Pass when a score reaches five.
Confusing assignment with comparison or creating an endless loop.
Trace what software receives, changes, remembers, and displays.
Follow a counter click from zero to one and label each stage.
Thinking the screen changes without underlying data changing.
Understand that languages have different jobs and grammar rules.
Match an HTML tag, a CSS selector, and a JavaScript statement to their files.
Mixing syntax from different languages in the same file.
Understand what turns source code into work the computer can perform.
Match browser to JavaScript, Python to its runtime, and a compiled app to machine instructions.
Assuming a computer directly understands every source file.
Understand reused code and why projects lock compatible versions.
Find a package name, version, and lockfile in a sample project.
Blindly installing the newest or an invented package.
Build one complete mental picture of a modern app.
Trace a button through the frontend, API, database, response, and updated screen.
Putting secrets in frontend code or treating an API as a database.
Distinguish the network, the web, a browser, and a server.
Arrange browser, internet, server, and response in the correct order.
Treating Chrome, Google, the internet, and the web as synonyms.
Read a web address one part at a time.
Label the protocol, domain, path, query, and fragment in a sample URL.
Confusing a domain name with a complete URL.
Understand how a browser asks a server for something and receives a result.
Match status 200, 404, and 500 to success, missing resource, and server failure.
Treating every failed page as the same type of coding error.
Use Elements, Console, and Network as evidence.
Temporarily change a heading in Elements and watch it reset after refresh.
Believing a DevTools edit changed the real source file.
Create a valid page with a title, heading, and paragraph.
Write and open a complete index.html document in the browser.
Incorrect nesting, missing closing tags, or the wrong file extension.
Choose elements for meaning, not just appearance.
Build a profile card with a heading, paragraph, link, image text, and button.
Making everything a div or using a button where a link belongs.
Style the page predictably with small reusable rules.
Add colour, padding, and a border to a card class.
A missing stylesheet link, selector mismatch, or forgotten unit.
Create a layout that adapts instead of breaking.
Use max-width, padding, auto margins, and wrapping at phone size.
Fixed desktop widths, unnecessary absolute positioning, or clipped text.
Add one interaction you can explain from click to screen update.
Make a button increment a visible count from zero to one to two.
Selecting the wrong element or loading the script too early.
Organize code, assets, and simple project instructions.
Build a clear file tree and explain the job of every file.
Names such as final-final2.js or no instructions at all.
Know which local version you are looking at and when a browser may reuse old files.
Open the correct local project and compare a normal refresh with a hard refresh.
Wrong folder, wrong port, unsaved file, or cached output.
Extract the message, file, line number, and useful stack frame.
Fix a missing parenthesis using the exact reported location.
Reading only the words something went wrong.
Reproduce, isolate, form a hypothesis, change one thing, and verify.
Repair a broken button through one controlled experiment.
Random edits or changing five things at once.
Pause and inspect what the program believed at one moment.
Compare a counter value before and after a click.
Logging passwords or burying useful evidence in noisy logs.
Inspect a request's URL, method, status, payload, and response.
Find a 404 caused by one incorrect endpoint path.
Blaming the interface before checking the server response.
Understand what each check proves and what it cannot prove.
Run mobile, keyboard, empty-input, console, lint, test, and build checks.
Assuming works on my machine or a green build proves everything.
Give backups, local history, and remote collaboration their correct jobs.
Classify a zip backup, local Git repository, and GitHub remote.
Assuming GitHub replaces every backup or that Git and GitHub are identical.
Understand Git's three everyday file states.
Edit, inspect, stage, commit, and return to a clean status.
Staging secrets or committing without reviewing the diff.
Inspect added and removed lines before accepting or undoing work.
Explain a tiny diff and locate its commit in project history.
Running destructive recovery commands copied from AI.
Understand the parts of a public open-source project.
Find source files, README, Issues, Actions, license, and history.
Thinking a public repository lets strangers overwrite main.
Follow a safe collaboration path from branch to reviewed merge.
Create one focused branch and review its pull-request diff.
Working directly on main or merging failed checks.
Make functionality usable without a mouse or sight.
Repair an unlabeled input and a clickable div that cannot be reached by keyboard.
Treating placeholders as labels or accessibility as a later extra.
Keep interfaces readable, calm, and usable when text grows.
Test focus, zoomed text, and a reduced-motion fallback.
Colour-only status, faint text, removed focus outlines, or forced motion.
Protect secrets, validate input, check permissions, and review dependencies.
Move a demo API key out of browser code and into a server environment variable.
Believing .env repairs a key already committed to Git history.
Separate experimental work from the system real users depend on.
Choose the preview environment for a risky change and explain why.
Mixing test and production credentials or data.
Publish deliberately and inspect the experience users actually receive.
Push, inspect a preview, test mobile and links, then promote or revert.
Assuming a successful deployment means the feature works.
Define the user, outcome, files, and six clear requirements.
Write Given/When/Then checks for a learning-progress button.
Asking AI for a complete app before deciding what complete means.
Create meaningful page structure and real content first.
Make the page understandable even with its stylesheet disabled.
Designing empty containers before writing the content.
Add hierarchy, spacing, focus states, and a mobile layout.
Make the page work around 320 pixels wide and on desktop.
Overdecorating before layout and readability are stable.
Handle a click, update state, and render the result.
Mark one of three learning quests complete and update the count.
Letting AI add a framework for a tiny interaction.
Collect evidence for function, mobile, keyboard, accessibility, and security.
Complete a release checklist with a result for every check.
Asking whether it looks okay instead of testing defined behaviour.
Create a useful commit, README, deployment, and honest reflection.
Publish a working URL and explain every file plus one bug you fixed.
Shipping code you cannot explain or failing to verify production.
Evidence, not internet soup
These links are starting points, not decoration. Model and software details are rechecked against official documentation before a lesson is published.
Developer Foundations · Level 0 + Level 1
0 of 14 published lessons completed.
0% of the published path complete
Keep free learning visible
A GitHub star is a tiny thank-you that helps the next vibe coder discover these free lessons.