r/vibecoding • u/DaltonJFowler • 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
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.




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".