SafeYak : Anonymous Campus Chats, Reinvented for Safety
Built with KiroChat · Next.js · Supabase · Perspective API
Inspiration
YikYak was iconic — but it also died for the same reason it went viral: hate, bullying, and unchecked toxicity.
We asked a simple question:
“What if anonymous campus chat could exist again — but without the hate?”
SafeYak is the answer: a complete rebuild of YikYak, redesigned from day one around AI-powered moderation, safety-by-default, and real-time community protection.
What It Does
SafeYak is a location-based anonymous chat for campuses that:
✅ Uses AI to moderate every post and comment before it appears
Blurs toxic content
Hides severe content
Auto-locks unsafe threads
Tracks user reputation (“Yakarma 2.0”)
Issues automated safety actions
✅ Prevents bypassing moderation
Edited posts are re-evaluated
Comments can be hidden or blurred
Failure mode is secure (if AI fails → treat as unsafe)
✅ Allows anonymous but consistent identity
Every user gets a private author_hash, which gives them:
A ghost avatar
A reputation badge
Ability to edit & delete their own posts
✅ Real-time feed
Posts, votes, replies, and moderation effects update instantly across all clients.
How We Built It
Tech Stack
Next.js 14 / App Router
Supabase (DB, auth, realtime)
KiroChat (AI coding automation)
Perspective API (toxicity detection)
Tailwind + Neon dark UI (inspired by YikYak 2014)
🤖 How We Used Kiro (The Required Section) 1️⃣ Vibe Coding — Fast Iteration
We structured conversations in a “build → test → refine” loop. Kiro generated:
the entire feed client
real-time subscription logic
voting system
reputation engine
edit/delete post workflow
bottom composer redesign
the moderation pipeline + blur/hide system
The most impressive moment: Kiro wrote a 350-line full SafeYak moderation engine including RPCs, SQL schema, triggers, and safe-fail defaults — in one pass, fully correct.
2️⃣ Agent Hooks — Automated Development Workflows
We used Kiro’s hooks to:
auto-run migrations on Supabase
generate Vitest tests after every feature
create/update multiple files simultaneously
generate & validate TypeScript types
lint & refactor UI components
This turned hours of manual debugging into seconds.
3️⃣ Spec-Driven Development — Large Features in One Shot
We wrote detailed specs for:
Reputation system
Comment locking
Edit/delete flow
Safe composer behavior
Moderation decision tree
Kiro took these and produced: the full backend + API routes + UI components, consistently aligned across files.
Compared to vibe coding, spec-driven development let us build entire features at once instead of incremental pieces.
4️⃣ Steering Docs — Custom Behavioral Control
We used steering prompts so Kiro:
Always followed SafeYak UI style
Never created unsafe moderation holes
Prioritized security in all pipelines
Ensured YikYak-matching UX components
The biggest improvement came from a Moderation Steering Doc, which forced Kiro to:
avoid fail-open moderation
remove hover-to-reveal
enforce comment hiding
re-moderate edited posts
5️⃣ MCP Extensions — Powerful File-Level Workflows
MCP let Kiro:
read, diff, and modify multiple files
generate migrations AND apply them
detect missing types or mismatched fields
keep our entire app consistent automatically
This eliminated 95% of “where is this file?” or “what did I break?” problems.
🔐 Moderation System
SafeYak uses a multi-layered safety stack:
AI Moderation (Pre-Submission)
Toxicity
Threats
Insults
Identity attacks
Severe toxicity
Automatic Actions
Blur mild toxicity
Hide severe toxicity
Lock threads after 3 toxic replies
Issue strike-based penalties
Remove “hover to reveal” exploits
Re-moderate all edited posts
Hide unsafe comments (newly added)
🏆 Final Features Implemented
✔ Fully anonymous posting ✔ Real-time feed ✔ Reputation system ✔ Editable/deletable posts ✔ Ghost avatars ✔ AI moderation engine ✔ Blurring + hiding ✔ Thread auto-locking ✔ Bottom composer ✔ Neon-dark YikYak UI ✔ Zone tabs (Campus, Dorm, etc) ✔ Bookmarks ✔ Voting with optimistic UI
🚀 What’s Next
Geo-fenced zones
Heatmap of campus buzz
Friend groups (anonymous circles)
Event-mode (real-time campus events)
Log in or sign up for Devpost to join the conversation.