JobStash, the project's square imageWorkBud, the project's square imageLiturgyGen, the project's square imageCartCheck, the project's square image

2026-11-04

Fifteen full-stack apps from a semester I almost did not survive

students student-work fullstack react hau apsi

Four sections, three of them inherited, one very tired instructor

I will start with the unflattering part. This semester I taught four sections of full-stack JavaScript, and three of them I picked up partway through, from another instructor, at midterms. I built a whole grading platform mostly so the grading would stop burying me. It mostly worked.

Then the final projects came in, and I stopped being tired for about a week.

The brief: a React front end, an Express API, a PostgreSQL database, deployed somewhere a stranger can reach, with a security checklist and an honest write-up of how AI was used. Around a hundred and twenty-seven projects came in across the four sections, a snapshot count of what I graded.

The ones on this page are not here for being the biggest. They are here because somebody picked a real person with a real problem, a campus ministry office, a family aircon shop, a small landlord, every org officer with a Google Form, and built the thing that person needed.

Ten times zero is still zero. These students brought something to multiply.

A few honest notes before you click. Most of these apps sit behind a sign-in, so several pages use the students' own screenshots of the inside. A couple of them run on free servers that nap, so give them a minute. Each card opens a page for the project.

The apps

What they taught me back

The strongest write-ups on this page are the AI-usage notes. Students said, plainly, which parts Claude or ChatGPT or Codex wrote, where it got things wrong, and what they changed. That is the habit I most want them to keep, and several of them already do it better than people I work with.

Thank you for letting me show your work. I am genuinely proud of this semester, and almost all of that is your doing.

The judgment is human. The typing, by design, is not.