Theory

Final submission and where next

The final submission — demonstrate Cosmos and describe what you built.

What to submit:

  1. A working app (deployed). The TypeScript build live on the internet (a URL). The full flow: gallery → search → detail → collection (sort/paginate) → forms → modals.
  2. Both builds. Briefly show you have both the vanilla and TypeScript versions — the same app twice.
  3. At least one challenge from step 3 (A, B or C) — implemented in the TypeScript build.
  4. Proof of the migration. npm run typecheck on one file before you fix the guards — show at least one real error (TS2551 or TS18048) the compiler found in working vanilla code.
  5. 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.