Back to home
PROJECTS

Ideas, Shipped.

Tools for people around me, problems I’ve run into, and experiments that helped me learn by building.

Products built around real workflows

Applications shaped around day-to-day needs, from shop operations to bilingual community content.

SHOP OPERATIONS
Billing Software System (POS)
Variants · Barcode checkout · GSTStock ledger · Returns · Customer credit
Billing and inventory for a clothing shop.
ReactFirebaseTypeScriptRetail
Behind this project

The idea behind it

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.

CONTENT WORKFLOW
Upload Devotion
DOCX → cleaned devotional textSpeech audio → Convex storage
Prepare bilingual devotionals and audio.
Next.jsConvexDOCXTTS
Behind this project

The idea behind it

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.

DEVOTIONAL READER
Daily Devotion
தமிழ் · EnglishRead the day’s devotion · Listen
A bilingual month-and-day reader.
Next.jsConvexTamilEnglish
Behind this project

The idea behind it

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.

RETREAT WEBSITE
Father-Son Retreat
Venue · Schedule · InstructionsGallery · Audio · Presentations
Event details and resources in one place.
HTMLCSSJavaScriptTamil
Behind this project

The idea behind it

Attendees needed one place for a three-day Coimbatore convention’s schedule, venue guidance, travel preparation, and code of conduct.

What I owned

Organizers supplied content and media; owned the visual design, frontend development, and deployment. Built in one day.

How I built it

Kept the implementation straightforward, then added sermon presentations, audio, and a photo gallery after the event.

What came out of it

Attendees used the site instead of repeatedly asking organizers for details, which made coordination easier.

What I learned

Would take the same straightforward approach again.

EVENT WEBSITE
Youth Ministry Event
Speakers · Schedule · GalleryVenue · Calendar · Share
A configurable landing page for a church event.
Next.jsReactTailwindFramer Motion
Behind this project

The idea behind it

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
Turn a Thirukkural into a poster.
AstroCanvasTamilJavaScript
Behind this project

The idea behind it

A friend running a Thirukkural Instagram page needed help preparing regular posts after running short on time.

What I owned

Built the poster generator and API solo; the friend uses its output for Instagram posts.

How I built it

Compared Thirukkural sources for useful Tamil and English explanations, used Canvas for posters, and Gemini for captions.

What came out of it

The generated posters and captions are used in the friend’s Instagram posts.

What I learned

The future goal is to automate the whole flow from Kural selection and poster creation through Instagram publishing.

Full-stack systems and integrations

Backend services, data flows, and real-time collaboration across connected users and tools.

AGENTIC AI · TELEGRAM
Kirana Agent
“Add 10 packets of Maggi”Stock update through a typed tool
A Telegram agent for a neighborhood shop.
PythonGeminiPostgreSQLTelegram
Behind this project

The idea behind it

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
Follow meetup slides on your own device.
Next.jsPDF.jsSSE
Behind this project

The idea behind it

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
One shared place for notes and commands.
ReactExpressSocket.IOMarkdown
Behind this project

The idea behind it

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.

GO DEVELOPER TOOL
Into Short URL
url.noskill.in/https://…Redis lookup → 301 redirect
A Go and Redis URL shortener.
GoGinRedisCloud Run
Behind this project

The idea behind it

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
Local voice input for a terminal workflow.
VS CodePythonWhisperAudio
Behind this project

The idea behind it

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
A timetable-driven Selenium experiment.
PythonSeleniumAutomation
Behind this project

The idea behind it

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.

GO SERVER EXPERIMENT
SSH session
Connect → terminal promptTyped input → canned response
A tiny interactive SSH server.
GoSSHTerminal
Behind this project

The idea behind it

Wanted hands-on practice with Go, networking, and SSH, inspired by terminal-based websites and a possible terminal-style portfolio.

What I owned

Built the prototype solo.

How I built it

Created a minimal interactive SSH server. The current repository is a learning prototype, not a full portfolio shell.

What came out of it

The main outcome was learning. No public usage numbers; the terminal and I had a productive conversation.

What I learned

Would keep it as a learning project and build on the Go and networking experience.

Data processing and CLI tools

Import validation, terminal interfaces, and small HTTP utilities for working with structured data.

DATA VALIDATION
CSV validation
Employee rows → normalizationIDs · Managers · Reporting cycles
Check employee CSV data and reporting lines.
PythonDjangoCSVGraph validation
Behind this project

The idea behind it

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
Election results in the terminal.
BashcurljqTUI
Behind this project

The idea behind it

Wanted to check live Tamil Nadu election results directly from the terminal.

What I owned

Owned requirements and implementation end to end.

How I built it

Built a terminal dashboard that polls election results JSON and redraws seat tallies, candidates, winners, and alliance totals.

What came out of it

Worked as intended, and people who saw it liked the terminal interface. No broader usage numbers; the terminal had its little fan club.

What I learned

Would refine the TUI appearance with more color.

GO HTTP SERVICE
Lorem service
/paragraph/3/blog/10 → placeholder text
Dummy text from a URL or curl.
GoHTTPMarkdowncurl
Behind this project

The idea behind it

Needed convenient filler text for automation workflows, available from a browser or terminal.

What I owned

Built the Go service end to end solo as a learning project.

How I built it

Used URL paths to request different kinds and amounts of placeholder content, returning plain text or Markdown without a full frontend.

What came out of it

Used in my automation workflow. No usage stats to share; even the analytics are placeholder text.

What I learned

Would improve the placeholder content presentation with a more polished style.

Browser experiences and experiments

Focused frontend builds exploring client-side security and interactive visual states.

FRONTEND EXPERIMENT
Hug in a URL
Write a note · Pick a GIFEncrypt locally · Share a link
A message and GIF in one link.
ReactTypeScriptWeb CryptoFrontend only
Behind this project

The idea behind it

Inspired by a friend’s idea, built a small way to package a short personal message and prompt in a shareable link.

What I owned

Created the browser-only experience. The browser does the heavy lifting; the hug takes the credit.

How I built it

Kept the content in the URL rather than adding an app backend. Long URLs later motivated the separate Into Short URL project.

What came out of it

A hug in a link. What did you expect, a quarterly earnings report? No audience numbers to share yet.

What I learned

The hug was small. The URL was not. That little plot twist led to Into Short URL.

PLAYFUL BUILD
Punch Me
Tap to punchHit effects · Damage states · Reset
A silly tap-to-punch browser game.
HTMLCSSJavaScriptCanvas
Behind this project

The idea behind it

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.