đ Turning the feeling into a product
The vision was simple: match someone who needs to vent with someone whoâs willing to listenâprivately, anonymously, and without judgment. That meant intentional constraints:
Textâonly chat to reduce misuse and keep focus.
Usernames instead of real names, with guidance to avoid real photos.
Alwaysâvisible End Chat and a Report flow that captures the session ID for quick review.
Spam protection via rate limiting to prevent rapidâfire floods and keep conversations readable.
đâď¸ The 3âweek sprint
My teammate and I worked closely on all aspects to make sure we were on the same page, be it the design or the features. We chose a stack built for speed and clarity: React 18 with TypeScript, Tailwind, and Socket.IO on the client; and Node/Express, Socket.IO, and Redis for session logic on the server. I treated UX like guardrails: calm surface, obvious exits, and safety tools you canât miss, and the UI like a welcoming mat: cozy and welcoming.
The first time we saw messages travel across our chat UI, it felt like proof the idea workedânot just the code. Early demos with friends validated the vibe we were aiming for: âcozy.â
đ¤ Using Kiro (and learning to manage an AI teammate)
We had a 3rd teammate with us this time aroundâKiro, which helped accelerate implementation. It was undeniably helpful for scaffolding the realâtime chat loop, wiring Socket.IO events, and drafting Tailwind layouts we could refine. But it also needed a lot of supervision. We found ourselves repeating instructionsâsometimes the same onesâso it would actually implement what we intended, and once it nearly deleted a large chunk of code during âcleanupâ (thankfully it asked for confirmation and Sanyam caught it). The lesson: AI can boost productivity, but only with to-the-point prompts, small steps, and human review at every step.
What worked best with Kiro:
Small, directive tasks (âAdd a Report modal that autoâcaptures session ID and posts to /reportsâ) instead of broad requests.
Clear acceptance criteria (âButton always visible; modal blocks until reason is selected; server logs timestamp + session IDâ).
đ¨ Designing for safety over flash
We consciously avoided voice/video in the first version despite receiving that suggestion from quite some people. That decision shaped everythingâfrom the compact message composer to the prominent âEnd Chatâ and âReportâ controls. Rate limiting became a mustâhave, not a niceâtoâhave: it keeps conversations humane, preserves attention, and blocks botâlike bursts before they overwhelm a listener.
đ What changed me as a builder
Teamwork is an important takeaway for sure. There were multiple times when there were disagreements on designs, but you should know when to back down and accept the suggestion and when to urge for a change when you feel it's important to do what you are thinking. Apart from this, I learned about new frameworks and building tools like Tailwind and Vite.
The most important takeaway has to be that AI is more of a force multiplier and not an autopilot that can do everything by itself. It has a lot of areas of improvement, but it certainly makes implementation and the tedious things easy to do.
Top comments (0)