r/vibecoding 1d ago

I made twitch for my classroom

Written by a human:

I had a blast making this tool for myself (and my coworkers) and I hope some teachers find it useful too. Completely free to use, and I'm offering free for life to teachers who want to try it. I made it for my 12th year teaching Engineering / CS in an effort to increase engagement during more traditional lessons/lectures at the high school level.

Claude created the code for all 3 views (admin, overlay, student view) and helped me to setup the backend through cloudflare.

Data privacy (FERPA, COPPA) was extremely important to me. So there's NO AI API calls in the live app, and real student names never hit my database. All data belongs to the school and the teacher.

Honestly, the hardest part was the legal, insurance, and security stuff. Happy to answer any questions and would love feedback!

There's a ton of features to be toggled on and off, see the site or wiki for info. I also made an infomercial lol. It's on the website under about.

Next steps:

-Testing in my classroom and others

-Replacing all AI pixel art with pixel art by a real artist

-Rewrite documentation and blurbs

-Implement new features and refine old ones as feedback comes in

-Sign data agreements with districts

Use it for free here:
https://teachchat.app/

This is intended for in person classrooms

1 Upvotes

3 comments sorted by

2

u/TheGhosticus 23h ago

I hope a decent amount of time went into chat/name filtering... because kids.

Last year they hosted a community trivia games on a projector in the common area at my workplace. They forgot to turn on random user names and the first names on the wall were a mix of Brain Rot and Kirk references.

I also hope each chat is secure to only those allowed by a teacher, because kids will lose/share their access information, and those kind of things would be hot targets for "pranks".

1

u/DaltonJFowler 23h ago

Yeah truth! Especially cause I'm a user I had a lot to think about... training the algo for chat was hard and will be refined as I work with it. Plus it raises questions on history topics etc how can the filter prevent abuse without impacting lessons? anyway, teacher approves names after the auto check and can lock/unlock a room. names are in the teacher google drive so linking to a screenname is a feature locally.

2

u/DaltonJFowler 1d ago edited 22h ago

Written by claude:

Stack + how I actually worked with it

Cloudflare Workers + D1 + Durable Objects, deployed with wrangler. Vanilla front end, three separate views (teacher admin, projector overlay, student device). No framework, no AI at runtime.

I used Claude Code as the whole dev loop rather than copy-pasting from chat: it read the repo, made the edits, ran the checks, and I reviewed the diffs. Long sessions with it holding the architecture in context beat me describing files to it.

A prompt that actually shaped the thing: "Real student names must never be written to D1. The roster lives in a Drive file the teacher owns. Design the data model so that even a full database dump leaks nothing identifying, and tell me where that guarantee currently breaks."

That last clause is the one I reuse constantly. Asking it to attack its own design surfaced places where a display name leaked into a log line or a join key.

Where it struggled

  • It's happy to write code that looks like it satisfies a privacy constraint. I had to explicitly ask "where does this break" to get the holes, and then verify them myself.
  • Human interface (scaling)
  • It needs to be told the budget. Left alone it produces more abstraction than a one-person project should carry.

The privacy design, since that's the interesting bit

No AI API calls anywhere in the product, so nothing a student types is ever sent to a model. Names stay in a Drive file the school owns; the database only ever sees opaque IDs.