A clothing shop needed billing, barcode generation, and inventory management for roughly 2,000 garment items.
What I owned
Built and customized the UI, application, backend, and database solo; the shop supplied its workflow requirements.
How I built it
Clarified the underlying shop needs through back-and-forth, then connected barcode scanning, barcode printing, and receipt printing. Added discount offers, GST, and sales reporting.
What came out of it
The system saved the shop hours of work, made barcode creation and billing more efficient, and helped staff use dashboard data to optimize stock. I did not bring a stopwatch to checkout, so there is no precise time-saving figure.
What I learned
Would spend more time understanding the requirements up front to reduce rework and shape a simpler solution.
Preparing next month’s bilingual devotionals manually took two to three hours and was difficult while travelling.
What I owned
Built the uploader and publishing pipeline solo in about three hours over a weekend.
How I built it
Parses Tamil and English Word documents into day-wise content, normalizes formatting with code, preprocesses scripture references, generates speech, stores audio in Convex file storage, and publishes article records to Convex DB. ChatGPT review is a separate manual step.
What came out of it
Turned a multi-hour publishing task into a few clicks that take around ten minutes.
What I learned
The project renewed an interest in Python and automation, and reinforced matching complexity to the actual need.
Daily devotional messages and images in WhatsApp were hard to search, read on a phone, and use to catch up on missed days.
What I owned
Built the reader, audio workflow, publishing automation, and usage tracking solo.
How I built it
Created a bilingual Tamil and English daily reader. Current repositories store devotional text in Convex DB and audio files in Convex file storage; the reader resolves audio URLs for playback. Simplified an initially overbuilt audio approach.
What came out of it
Reported more than 200 daily active users. Readers said it was easier to read, listen, catch up, and share a direct link.
What I learned
Write requirements first and choose an architecture that fits them to avoid overengineering and unnecessary tool changes.
A church youth event needed an engaging site for students, with the agenda and event resources in one place.
What I owned
Church team supplied the agenda; owned design, development, and deployment.
How I built it
Used landing-page inspiration to create a minimal blue, white, and black visual theme, with animation, sermon video, presentations, and mobile song sheets.
What came out of it
Attendees could read song sheets on their phones, and another church forked the repo for its own event.
What I learned
Would keep the same approach because the site worked well for its audience.
SOCIAL CONTENT TOOL
Thinam Oru Kural
Kural · Meaning · TransliterationDownload poster · Copy caption
A small-shop owner needs a quick way to record stock, sales, customer credit, and ask questions about the business without navigating a complex system.
What I owned
Built the prototype end to end as a personal project while learning agentic AI, tool calling, and MCPs.
How I built it
Used Python, Gemini tool calls, PostgreSQL, and Telegram. Replaced several overlapping analytics tools with a flexible query tool, then refined tool descriptions and context to improve tool selection.
What came out of it
The agent could answer a wider range of questions and cover more edge cases. It remains a prototype and has not been used in a real shop.
What I learned
Learned to make tools reusable and give the agent clear context instead of creating a separate tool for every question.
REAL-TIME SYSTEMS
Presentation room
Presenter changes slide 08Attendees receive the update
Meetup attendees sitting far from the screen struggled to follow slides and revisit the deck after a talk.
What I owned
Owned the idea, UI, and implementation solo; presenters can share a deck while attendees follow slides, annotate, and download their copy.
How I built it
Implemented live slide updates with Server-Sent Events. The key challenge was mirroring presenter actions to all viewers immediately; the current project has not been field-tested.
What came out of it
Still waiting for its first real meetup. The slides are ready; the audience has yet to RSVP.
What I learned
Would improve the way presenter actions are mirrored to viewers, then test it at an event.
REAL-TIME COLLABORATION
Shared notes
View link · Edit codeEveryone sees the latest document
Needed a convenient way to collaborate on setup notes without leaving temporary shared content stored permanently.
What I owned
Built the application end to end solo and tried it personally and with a small group.
How I built it
Used Socket.IO rooms with temporary in-memory server storage and an owner-controlled edit code. Room access and editing permissions were the main challenge. This version is server-relayed, not peer-to-peer or end-to-end encrypted.
What came out of it
Two or three people said it was easy enough to use. No standing ovation, no angry emails. For a shared notes tool, I’ll take that.
What I learned
Would explore peer-to-peer communication and encryption in a future version; neither is implemented in the current project.
Wanted a quick way to shorten a URL without visiting a separate URL-shortening site, while learning Go.
What I owned
Built the Go service and browser flow solo as a weekend learning project; the builder is its primary user.
How I built it
Used Go, Gin, and Redis. A small browser page reads the full URL because browsers do not send the fragment after `#` to the server, then requests a short link and copies it.
What came out of it
Used extensively across my personal links and projects. The URLs got shorter; the analytics report is still a bit too short.
What I learned
Learned how browser URL fragments affect server requests and would keep the overall approach.
Developer tools and automation
Tools that connect command-line workflows, local services, and browser automation.
VS CODE EXTENSION
Codex Voice
Speak → local transcriptionTranscript → integrated terminal
Needed voice input for Codex CLI on Linux before a Linux desktop voice option was available.
What I owned
Built the VS Code extension and local transcription bridge solo.
How I built it
Captured microphone audio, transcribed it locally, and inserted the result into the active integrated terminal. Getting text into the correct terminal input and providing a clear recording indicator were key details.
What came out of it
Worked for the builder’s command-line workflow and was used until a desktop app became available.
What I learned
Kept the extension focused on solving the voice-to-text need rather than adding unrelated features.
EARLY PYTHON PROJECT
Class timetable
Weekday + period → meeting URLBrowser automation attempt
As a first-year college student learning Python, wanted to automate joining scheduled online classes and sending the right greeting.
What I owned
Built as an early Python automation project. The most demanding teammate was the class timetable.
How I built it
Moved from screen coordinates and simulated mouse actions to Selenium locators such as element IDs and class names, avoiding dependence on window size.
What came out of it
Used it for about a month, and friends tried the browser-based flow too. No usage dashboard; this was homework avoidance with extra homework.
What I learned
Learned that selecting page elements is more robust than automating by fixed screen positions.
Validate and normalize HR employee CSVs, catch identity and manager-reference errors, and inspect reporting hierarchies before import.
What I owned
Implemented the parser, validation, hierarchy analysis, CLI, and Django preview solo.
How I built it
Used duplicate counters and ID/email lookup maps instead of repeatedly scanning employee rows; used visited-path tracking to find cycle members. The repository describes O(n) time and O(n) additional memory.
What came out of it
Simulated tests with roughly 10,000–20,000 rows worked well. The test employees survived; a production HR department has yet to join the party.
What I learned
Learned to choose data structures and passes that keep large-file validation efficient while preserving clear row-level errors.
TERMINAL UI
Election results
Fetch JSON → parse with jqRedraw terminal at set interval
A playful browser game made for fun when the builder and friends were bored.
What I owned
Built as a personal project for a bit of fun. The punching is virtual; please spare your screen.
How I built it
A single-page HTML/CSS/JavaScript game uses nine face sprites, health states, impact effects, touch and mouse input, and reset. It does not implement vibration or image upload.
What came out of it
No audience stats to share. The pixels have declined to comment on the punching.
What I learned
Letting players upload an image as the target is a future idea, not an implemented feature.