All projects
Open source · Built with a team of 6

Penny Wise

A financial-literacy app for pre-teens and teens, built to teach money the way they meet it — counting it, making change from it, and budgeting it.

Penny Wise's sign-in screen, with the app's dark rounded shell and the Penny Wise mark in the top-left.
2026Education · K–12

Most money apps assume you already know what you are looking at. Penny Wise starts where a kid actually is: what a coin is worth, how to hand someone the right change, how to spread a fixed amount across a week. Short two-minute Tutorials walk through it, then open-ended Labs let them play with the idea until it sticks.

The important design decision is what it refuses to do. It is not a fixed curriculum and it does not drift into investing, credit or taxes — it stays at everyday basics, because that is the layer where the confusion actually starts.

A lesson in progress: a single multiple-choice activity about what money is, with a course outline listing the next modules.

Workflow decisions:

  • One activity at a time — Lessons are deliberately small — a single question on screen, check the answer, move on. For a twelve-year-old who has never thought about what a coin is worth, a wall of text is a wall of nothing.
  • Tutorials and Labs — Tutorials are two-minute guided steps; Labs are open-ended sandboxes. The split lets a beginner be walked through the basics and then poke at the idea without a script telling them what to do next.
  • Progress that persists — XP, lessons completed, courses enrolled and courses completed are all tracked server-side, so progress survives closing the tab and carries across sessions on the dashboard.
  • Stays at the basics — Counting money, making change, simple budgeting. No investing, credit or taxes — the scope is everyday money, and staying inside it is what makes the rest land.
The learning dashboard showing continue-learning state and stats for XP, lessons completed, and courses enrolled.

Architecture choices:

  • Frontend: Next.js (App Router), React, Tailwind CSS
  • API: Node.js, Express, Mongoose
  • Database: MongoDB
  • Auth: JWT, bcrypt
  • Tests: Jest, Supertest, Testing Library

Impact:

  • A twelve-year-old can count a pile of coins correctly after the first module.
  • Making change stops being a guess and becomes something they can work out.
  • A first budget is something they build themselves, not one handed down.
  • The same content scales across a class, since progress is tracked per account.

A note on credit: this was open-source team work, and my GitHub history on the repository shows what I contributed against a shared codebase. The frontend and API split into their own frontend/ and backend/ packages so several people could work in parallel without stepping on each other, with Jest and Supertest on both sides to keep the seams honest.

Other Projects