<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Koushik Raghavan</title>
    <description>The latest articles on DEV Community by Koushik Raghavan (@koushik_raghavan_15bce601).</description>
    <link>https://dev.to/koushik_raghavan_15bce601</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3781280%2F86182731-3f76-4d23-8d5a-9346cb59e6a6.jpg</url>
      <title>DEV Community: Koushik Raghavan</title>
      <link>https://dev.to/koushik_raghavan_15bce601</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/koushik_raghavan_15bce601"/>
    <language>en</language>
    <item>
      <title>From Bugs to Better: Improving My Project with Sentry</title>
      <dc:creator>Koushik Raghavan</dc:creator>
      <pubDate>Thu, 20 Aug 2026 16:21:31 +0000</pubDate>
      <link>https://dev.to/koushik_raghavan_15bce601/from-bugs-to-better-improving-my-project-with-sentry-31h3</link>
      <guid>https://dev.to/koushik_raghavan_15bce601/from-bugs-to-better-improving-my-project-with-sentry-31h3</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/bugsmash"&gt;DEV's Summer Bug Smash: Smash Stories&lt;/a&gt; powered by &lt;a href="https://sentry.io/" rel="noopener noreferrer"&gt;Sentry&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>bugsmash</category>
    </item>
    <item>
      <title>Fixing Critical Bugs and Improving Reliability with Sentry</title>
      <dc:creator>Koushik Raghavan</dc:creator>
      <pubDate>Thu, 20 Aug 2026 16:01:03 +0000</pubDate>
      <link>https://dev.to/koushik_raghavan_15bce601/fixing-critical-bugs-and-improving-reliability-with-sentry-39if</link>
      <guid>https://dev.to/koushik_raghavan_15bce601/fixing-critical-bugs-and-improving-reliability-with-sentry-39if</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/bugsmash"&gt;DEV's Summer Bug Smash: Clear the Lineup&lt;/a&gt; powered by &lt;a href="https://sentry.io/" rel="noopener noreferrer"&gt;Sentry&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Overview
&lt;/h2&gt;

&lt;p&gt;MovieSync is a real-time cinema venue dashboard designed to help cinema teams display and manage intermission information efficiently.&lt;/p&gt;

&lt;p&gt;The application provides a simple dashboard for managing movie and venue information in real time. It was built with React, Vite, and Vanilla CSS, containerized using Docker, and deployed on Google Cloud Run with Nginx serving the production frontend.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bug Fix or Performance Improvement
&lt;/h2&gt;

&lt;p&gt;While developing and deploying MovieSync, I encountered issues related to application reliability, error handling, and production deployment.&lt;/p&gt;

&lt;p&gt;The main goal was to identify the root causes of these problems, fix them properly, and make the application more reliable in a production environment.&lt;/p&gt;

&lt;p&gt;I focused on improving error handling, resolving application issues, and ensuring that the containerized application started correctly and served traffic reliably on the required Cloud Run port.&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;GitHub Repository: &lt;a href="https://github.com/kvk1999/moviesync2.0" rel="noopener noreferrer"&gt;https://github.com/kvk1999/moviesync2.0&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Improvements
&lt;/h2&gt;

&lt;p&gt;I first reproduced the issues and investigated the application behavior to identify their root causes.&lt;/p&gt;

&lt;p&gt;I then made the necessary code and configuration changes to improve the application's reliability.&lt;/p&gt;

&lt;p&gt;The improvements included:&lt;/p&gt;

&lt;p&gt;Fixed application errors identified during development.&lt;br&gt;
Improved error handling and debugging.&lt;br&gt;
Verified frontend behavior after making the changes.&lt;br&gt;
Improved production deployment configuration.&lt;br&gt;
Used Docker multi-stage builds to create a production-ready application.&lt;br&gt;
Configured Nginx to serve the React SPA correctly.&lt;br&gt;
Ensured the application listens on the port required by Cloud Run.&lt;br&gt;
Tested the application after deployment to verify that the fixes worked correctly.&lt;/p&gt;

&lt;p&gt;These changes made MovieSync more stable and easier to monitor and maintain.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Use of Sentry
&lt;/h2&gt;

&lt;p&gt;I integrated Sentry into MovieSync to improve application observability and make it easier to identify and investigate errors.&lt;/p&gt;

&lt;p&gt;I used Sentry's Error Monitoring to capture application errors and inspect the relevant stack traces and context.&lt;/p&gt;

&lt;p&gt;Sentry helped me:&lt;/p&gt;

&lt;p&gt;Detect errors that were not always obvious during local development.&lt;br&gt;
Identify where failures were occurring.&lt;br&gt;
Investigate errors using the available debugging information.&lt;br&gt;
Verify the application's behavior after implementing fixes.&lt;br&gt;
Improve the overall reliability of the application.&lt;/p&gt;

&lt;p&gt;Instead of relying only on manual testing and console logs, Sentry provided a centralized way to monitor application errors and investigate issues.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Use of Google AI
&lt;/h2&gt;

&lt;p&gt;Gemini-powered Cinema Assistant — staff can ask questions such as “Which movies have an intermission in the next hour?” and Gemini uses MovieSync's available data to provide a useful answer.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>bugsmash</category>
    </item>
    <item>
      <title>Namma Kadai Voice Assistant</title>
      <dc:creator>Koushik Raghavan</dc:creator>
      <pubDate>Sat, 15 Aug 2026 16:27:49 +0000</pubDate>
      <link>https://dev.to/koushik_raghavan_15bce601/namma-kadai-voice-assistant-54oa</link>
      <guid>https://dev.to/koushik_raghavan_15bce601/namma-kadai-voice-assistant-54oa</guid>
      <description>&lt;h3&gt;
  
  
  Building Namma Kadai: A Voice AI Assistant for Indian Local Commerce
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Introduction to the Agent
&lt;/h3&gt;

&lt;p&gt;Meet &lt;strong&gt;Namma Kadai&lt;/strong&gt; (Our Shop), an intelligent, multilingual voice assistant designed specifically for Indian local commerce, street vendors (such as PM SVANidhi beneficiaries), self-help groups (SHGs), and micro-entrepreneurs.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Problem&lt;/strong&gt;: Many local vendors, artisans, and small shop owners face digital friction when managing online ONDC catalogues, tracking orders, navigating microloan schemes, or checking market logistics due to complex UI interfaces and language barriers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Track&lt;/strong&gt;: Indian Local Commerce &amp;amp; Grassroots Empowerment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Who It Is For&lt;/strong&gt;: Street vendors, handicraft artisans, small retail shop owners, and local buyers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Why Voice Matters&lt;/strong&gt;: Voice eliminates the literacy and digital hurdles of traditional text-heavy apps. Vendors can speak naturally in their preferred language while managing inventory, checking real-time weather for outdoor market setups, or looking up financial support schemes hands-free while running their shops.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Important Features Built (The 10-Day Journey)
&lt;/h3&gt;

&lt;p&gt;The project brings together a comprehensive suite of tools and agentic workflows tailored for grassroots commerce:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Core Voice AI Pipeline &amp;amp; Architecture&lt;/strong&gt;: Established the foundation using LiveKit, Deepgram for multi-language speech-to-text (STT), Murf AI for text-to-speech (TTS), and Google Gemini as the core language model.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Persistent Database Memory&lt;/strong&gt;: Configured an SQLite backend to manage returning caller profiles, language preferences, past order history, and automated call-outcome analytics.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dynamic Multilingual Processing&lt;/strong&gt;: Implemented real-time language detection and voice switching to seamlessly navigate English, Tamil, Tanglish, and Hindi.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Live Weather Integration&lt;/strong&gt;: Integrated the Open-Meteo API to give local vendors real-time temperature, wind, and rain conditions for market setups and delivery logistics.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Specialized Security &amp;amp; Handoffs&lt;/strong&gt;: Built a dedicated Cyber Safety &amp;amp; Fraud Prevention Specialist agent for instant handoffs during cybercrime or scam reports, alongside compliant human-help escalation workflows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Linphone VoIP Integration&lt;/strong&gt;: Configured open-source SIP client and softphone connectivity via Liblinphone to route traditional telephony and audio streams cleanly into the agent infrastructure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Digital Storefront &amp;amp; Cataloguing&lt;/strong&gt;: Developed ONDC-aligned digital catalogue management to help local artisans and MSMEs structure product inventory and display items seamlessly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Microloans &amp;amp; Financial Schemes&lt;/strong&gt;: Integrated dedicated conversational flows and guidance for accessing government support programs like PM SVANidhi, PM Vishwakarma, Udyam Registration, and MUDRA loans.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Outbound Workflows&lt;/strong&gt;: Implemented automated outbound calling capabilities for proactive vendor coordination, delivery confirmations, and market updates.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Polish &amp;amp; Feedback Collection&lt;/strong&gt;: Finalized strict turn-detection controls, VAD tuning, and a graceful sign-off feedback collection system to ensure an intuitive user experience.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Overcoming Development Challenges
&lt;/h3&gt;

&lt;p&gt;One of the trickiest hurdles faced during development was managing &lt;strong&gt;dynamic language detection and real-time TTS voice switching&lt;/strong&gt; without clipping user interruptions or breaking the conversation flow.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Problem&lt;/strong&gt;: When callers seamlessly mixed Tamil keywords with English (Tanglish), the default text-to-speech model occasionally mispronounced words or defaulted back to a rigid accent, making the interaction feel robotic.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What Was Tried&lt;/strong&gt;: Initially, static language configurations were tested, but they failed during code-switched dialogues. Next, custom keyword sets and Unicode character range checks (Baloo Thambi 2 script tracking) were added to the transcription event listener.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Solution&lt;/strong&gt;: By catching user transcripts mid-stream via LiveKit's &lt;code&gt;user_input_transcribed&lt;/code&gt; event, the agent evaluates incoming text against a Tamil/Tanglish keyword dictionary and dynamically invokes &lt;code&gt;session.tts.update_options(voice="ta-IN-anisha")&lt;/code&gt; on the fly. This resulted in smooth, natural code-switching audio responses.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Guide: How to Build Your Own Voice Agent
&lt;/h3&gt;

&lt;p&gt;To build and run a similar real-time voice agent, you need four foundational components:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Speech-to-Text (STT)&lt;/strong&gt;: Transcribes audio streams into text in real time (e.g., Deepgram Nova-3).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Large Language Model (LLM)&lt;/strong&gt;: Handles reasoning, tool-calling, and conversational logic (e.g., Google Gemini 2.5/3.5 Flash).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Text-to-Speech (TTS)&lt;/strong&gt;: Converts the LLM text output back into natural spoken voice (e.g., Murf AI Falcon).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Real-Time Transport &amp;amp; Orchestration&lt;/strong&gt;: Manages audio tracks, WebRTC connections, and VAD (Voice Activity Detection) using &lt;strong&gt;LiveKit&lt;/strong&gt; and Silero VAD.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Setup Instructions
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Clone and Install Dependencies&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/kvk1999/murf-livekit-starter.git
&lt;span class="nb"&gt;cd &lt;/span&gt;murf-livekit-starter
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Configure Environment Variables&lt;/strong&gt;:
Create a &lt;code&gt;.env.local&lt;/code&gt; file in your root directory. &lt;strong&gt;Never commit this file or expose your API keys publicly.&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LIVEKIT_URL=wss://voicebharat-ak7frth8.livekit.cloud
LIVEKIT_API_KEY=API8e2v252xYx47
LIVEKIT_API_SECRET=1yHXG66xvIQofEUUccsKbv67fXCMHlsBzllZ2aeYNnFA
MURF_API_KEY=ap2_e5b802b4-231e-4d24-b7f9-150fb7fdd204
DEEPGRAM_API_KEY=db3ac822d4044ea4f737047a9f9114975294fea8
GOOGLE_API_KEY=AQ.Ab8RN6KJojfAGacYzk5rqvfnCHOeMjkhzvlxJyqq8c8ZeOLOpA

# Linphone &amp;amp; SIP Trunking (Task 6)
LINPHONE_SIP_URI=sip:koushik9900@sip.linphone.org
SIP_OUTBOUND_HOST=sip.linphone.org
LIVEKIT_SIP_TRUNK_ID=ST_fxqmyQZCSwkB
LIVEKIT_SIP_OUTBOUND_TRUNK_ID=ST_fxqmyQZCSwkB
SIP_TRUNK_ID=ST_fxqmyQZCSwkB
OTEL_SDK_DISABLED=true

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Run the Agent&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python agent.py dev

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Test the Conversation&lt;/strong&gt;:
Connect via the LiveKit web sandbox or configure a Linphone softphone client using your SIP credentials (&lt;code&gt;sip:koushik9900@sip.linphone.org&lt;/code&gt;) to dial into your agent room and test live voice interactions.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbtsymgw091jsnbet6iys.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbtsymgw091jsnbet6iys.png" alt=" " width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj8qo75x2mibg22pgjhw4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj8qo75x2mibg22pgjhw4.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftk074ba7ea5tjuiwzsya.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftk074ba7ea5tjuiwzsya.png" alt=" " width="749" height="922"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh3dwhjh3ft04xf75u29w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh3dwhjh3ft04xf75u29w.png" alt=" " width="799" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsiiz3pya0701dywgfsfx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsiiz3pya0701dywgfsfx.png" alt=" " width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F25pm4kl6pfhpa0p0w9we.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F25pm4kl6pfhpa0p0w9we.png" alt=" " width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgelxyaoxv1sc6cup9jop.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgelxyaoxv1sc6cup9jop.png" alt=" " width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>voiceagents</category>
      <category>voiceforbharat</category>
      <category>buildinpublic</category>
    </item>
    <item>
      <title>Building ElectGuide in Public: Simplifying the Election Process for Everyone</title>
      <dc:creator>Koushik Raghavan</dc:creator>
      <pubDate>Wed, 22 Apr 2026 13:33:00 +0000</pubDate>
      <link>https://dev.to/koushik_raghavan_15bce601/building-electguide-in-public-simplifying-the-election-process-for-everyone-1d73</link>
      <guid>https://dev.to/koushik_raghavan_15bce601/building-electguide-in-public-simplifying-the-election-process-for-everyone-1d73</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flntbw542hivcgeytm5y6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flntbw542hivcgeytm5y6.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Building ElectGuide in Public (with Antigravity) 🗳️🚀
&lt;/h2&gt;

&lt;p&gt;We’ve all faced this…&lt;br&gt;
When elections come around, many people aren’t sure about the process — where to start, what steps to follow, or what timelines matter. It can feel confusing and overwhelming.&lt;/p&gt;

&lt;p&gt;That’s where the idea of ElectGuide came from.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Election information is often scattered, complex, or hard to understand.&lt;br&gt;
People want to participate, but the lack of clarity becomes a barrier.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Idea
&lt;/h2&gt;

&lt;p&gt;I built ElectGuide, an interactive assistant that simplifies the election journey.&lt;br&gt;
It helps users understand the process step-by-step — from eligibility to voting day — in a clear and easy way.&lt;/p&gt;

&lt;p&gt;No confusion. Just clarity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy9n3mmw6rkpjovsjlbsq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy9n3mmw6rkpjovsjlbsq.png" alt=" " width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;p&gt;React + Vite for a fast frontend&lt;br&gt;
Clean UI with simple, accessible design&lt;br&gt;
Docker for containerization&lt;br&gt;
Google Cloud Run for serverless deployment&lt;br&gt;
Antigravity to accelerate development&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I focused on simplicity and usability.&lt;br&gt;
The goal was to break down complex election information into small, easy-to-follow steps.&lt;/p&gt;

&lt;p&gt;The assistant guides users interactively, making it feel less like reading instructions and more like a conversation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment
&lt;/h2&gt;

&lt;p&gt;Dockerized the app and deployed it on Google Cloud Run for scalability and reliability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Antigravity Helped
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Antigravity made a big impact by&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Speeding up development&lt;/li&gt;
&lt;li&gt;Helping structure the assistant logic&lt;/li&gt;
&lt;li&gt;Reducing friction in building and deploying&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It helped turn an idea into a working product much faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Interactive election guidance&lt;/li&gt;
&lt;li&gt;Step-by-step process explanation&lt;/li&gt;
&lt;li&gt;Clean and responsive UI&lt;/li&gt;
&lt;li&gt;Accessible and beginner-friendly&lt;/li&gt;
&lt;li&gt;Deployed and live&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What’s Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Add region-specific election data&lt;/li&gt;
&lt;li&gt;Real-time updates and reminders&lt;/li&gt;
&lt;li&gt;Multilingual support&lt;/li&gt;
&lt;li&gt;Mobile-friendly PWA version&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;Building ElectGuide made me realize how impactful simple clarity can be.&lt;br&gt;
Sometimes, making information easier to understand is just as powerful as building something complex.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>antigravity</category>
    </item>
    <item>
      <title>MovieSync: Redefining Intermissions with Live Crowd Data</title>
      <dc:creator>Koushik Raghavan</dc:creator>
      <pubDate>Mon, 20 Apr 2026 15:52:40 +0000</pubDate>
      <link>https://dev.to/koushik_raghavan_15bce601/moviesync-redefining-intermissions-with-live-crowd-data-5c3g</link>
      <guid>https://dev.to/koushik_raghavan_15bce601/moviesync-redefining-intermissions-with-live-crowd-data-5c3g</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9x2pizrzwmh5e5ewisfc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9x2pizrzwmh5e5ewisfc.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Building MovieSync in Public (with Antigravity) 🎬🚀
&lt;/h2&gt;

&lt;p&gt;We’ve all faced this…&lt;br&gt;
You step out during a movie break, thinking you’ll grab snacks or use the washroom quickly — but end up stuck in long queues. Short break, long wait.&lt;/p&gt;

&lt;p&gt;That’s where the idea of MovieSync came from.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Intermissions are limited, but there’s zero visibility on crowd levels. You just guess… and sometimes regret it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Idea
&lt;/h2&gt;

&lt;p&gt;I built MovieSync, a real-time dashboard that shows how crowded different areas are inside a venue.&lt;br&gt;
Simple color signals help you decide instantly:&lt;/p&gt;

&lt;p&gt;🟢 Low crowd&lt;br&gt;
🟠 Medium&lt;br&gt;
🔴 High congestion&lt;/p&gt;

&lt;p&gt;No guesswork. Just smarter decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;React + Vite for a fast, lightweight frontend&lt;/li&gt;
&lt;li&gt;Vanilla CSS (no heavy UI libraries)&lt;/li&gt;
&lt;li&gt;Docker (multi-stage build)&lt;/li&gt;
&lt;li&gt;Nginx for serving the app&lt;/li&gt;
&lt;li&gt;Google Cloud Run for serverless deployment&lt;/li&gt;
&lt;li&gt;Antigravity to speed up development &amp;amp; workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I focused on keeping things simple and clean.&lt;br&gt;
Instead of using UI frameworks, I designed everything from scratch using glassmorphism styles, smooth transitions, and subtle animations.&lt;/p&gt;

&lt;p&gt;Since I didn’t have real sensors, I created a simulation that mimics real-time data (like WebSockets). The dashboard updates dynamically to reflect crowd density.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment
&lt;/h2&gt;

&lt;p&gt;Used Docker with a multi-stage build:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node → build optimized assets&lt;/li&gt;
&lt;li&gt;Nginx → serve the app on port 8080&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Deployed on Google Cloud Run for automatic scaling.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Antigravity Helped
&lt;/h2&gt;

&lt;p&gt;Antigravity made a big difference by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Speeding up initial setup&lt;/li&gt;
&lt;li&gt;Making UI iterations faster&lt;/li&gt;
&lt;li&gt;Simplifying deployment flow&lt;/li&gt;
&lt;li&gt;Reducing overall complexity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It helped me move faster from idea → working product.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Real-time crowd dashboard&lt;/li&gt;
&lt;li&gt;Lightweight and responsive UI&lt;/li&gt;
&lt;li&gt;Dockerized production build&lt;/li&gt;
&lt;li&gt;Serverless deployment&lt;/li&gt;
&lt;li&gt;Built in public&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What’s Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Real IoT integration&lt;/li&gt;
&lt;li&gt;WebSocket backend&lt;/li&gt;
&lt;li&gt;Predictive crowd insights&lt;/li&gt;
&lt;li&gt;Mobile PWA version&lt;/li&gt;
&lt;li&gt;Multi-theatre support&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;This project showed me how quickly you can build something useful using the right tools. Building in public also made the journey more real and accountable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are you building right now? 🚀&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>antigravity</category>
    </item>
  </channel>
</rss>
