Final submission and where next
The final submission — demonstrate Cosmos and describe what you built.
What to submit:
- A working app (deployed). The TypeScript build live on the internet (a URL). The full flow: gallery → search → detail → collection (sort/paginate) → forms → modals.
- Both builds. Briefly show you have both the vanilla and TypeScript versions — the same app twice.
- At least one challenge from step 3 (A, B or C) — implemented in the TypeScript build.
- Proof of the migration.
npm run typecheckon one file before you fix the guards — show at least one real error (TS2551orTS18048) the compiler found in working vanilla code. - A write-up (½–1 page): pick one feature and describe how it looks in the vanilla and TypeScript versions. What enforces correctness in each? Where did the types turn "have to remember" into "can't forget"?
Grading criteria:
| Area | What's expected |
|---|---|
| Working app | Deployed, the full flow works |
| Types | Discriminated union, type guard, Readonly, strict |
| Migration | You can show a real error the compiler found |
| Extension | At least one challenge, type-driven |
| Understanding | You can explain what the types added (not "they're good") |
Where next.
You built everything by hand — the DOM, state (pub/sub), a router, validation. That's exactly why you'll now understand a framework (React, Vue, Svelte): it does the same things — reactive state, components, routing — just for you. It's the natural next step; you won't fear it, because you know what it hides.
And the server. Lesson 19 showed the line: a secret key can't live in the browser. Everything that must be trusted — secrets, real validation, data ownership, authentication — belongs on a server. That's where the server-side course fits: not "instead of" the client, but beyond the line the browser can't cross.
Congratulations. From an empty HTML page with no tooling to a deployed, typed app built twice — and an understanding of not just "how" but why. That's the whole journey: platform → pain → tool → types → production.