Sunday, March 29, 2026

Web App with Chat GPT

 Modern app development has become dramatically simpler with AI-assisted coding.

Over the weekend, I experimented with an AI-driven workflow to go from idea to a working MVP. I wanted to understand how long will it take me to get to a working MVP on local. Answer - couple of hours (once product idea is finalized).

https://parentcircle-web.vercel.app/

My current workflow for building and validating a web app:
>> Requirements & data modeling (AI-assisted)
Using ChatGPT to generate and refine:
- Problem statement
- Feature specifications
- Database schema (tables, relations, constraints)
- API contract

>> Backend with Supabase
- Table creation and relational modeling
- Authentication setup with Row Level Security (RLS)
- Auto-generated REST APIs

>> Local development (AI-assisted)
Generate frontend components and service layers via ChatGPT
Integrate Supabase SDK for CRUD operations
Debug by feeding runtime errors and stack traces back into ChatGPT

>> Environment & configuration management
- Secure Supabase keys using environment variables
- Validate all flows locally

After local testing:
>> Deployment with Hostinger (pending – requires a plan)
- Build production assets
- Configure environment variables
- Attach custom domain

Tech Stack:
Frontend : Next.js (React) and tailwindCSS
Backend: Supabase
AI: OpenAI API

For an MVP, the productivity gains are significant.
This “vibecoding” approach shifts the mindset from writing code to designing systems and interaction flows.

Execution becomes faster; product thinking becomes the primary skill.

Where do I stand after just a few hours?
I discussed a random idea with ChatGPT, followed the steps above, and now have a fully working MVP running locally and connected to Supabase.

Honestly amazed at how much smoother the build process feels with ChatGPT. From architecture suggestions to debugging and integration, it feels like having a patient senior engineer available on demand.

I’ll be sharing more technical details and code examples on my blog soon.

Curious how others here are using AI in their development workflow.
What tools or stacks have you tried with vibecoding so far?

Flash card Quiz App

 This weekend, I turned that idea into something much more personal.

I built a small flashcard quiz app as a fun game for my daughter’s upcoming birthday.

The goal: learning + play + curiosity — all in one simple app.

What started as a “let’s try something fun” quickly became a fully working product:
🃏 Interactive flashcard game
🔄 Smooth card flip animations
📚 10 topics with Easy / Medium / Hard levels
🎯 One-word answers for quick learning
🎨 Clean, mobile-friendly UI
🚀 Deployed live on Vercel

Fun dev moment:
I initially integrated an OpenAI API call to generate questions dynamically…
and then quickly removed it to save costs 😅
Turns out, a well-structured local quiz bank works perfectly for a birthday game.

Tech stack used:
- Next.js (App Router)
- React + TypeScript
- Tailwind CSS
- Simple in-memory quiz bank (JSON)
- Vercel for deployment

Big reflection:
With today’s tools (and AI-assisted coding), it’s possible to go from an idea → UI → logic → deployment incredibly fast.

But more importantly, it reminded me that building small, joyful projects can be just as meaningful as building “serious” ones — especially when they’re for family.

Want to use the tool?
https://flashly-app.vercel.app/

Do give me your feedback. Looking forward to it.

Slack bot for managers (engineering/project) for querying project tracking system

 Slack bot for managers (engineering/project) for querying project tracking system

Deployed a production Slack bot that gives engineering managers instant visibility into sprint work items across teams. Instead of manually querying our project tracking system or waiting for reports, managers can now get on-demand status updates directly in Slack.

The Problem: Engineering/Project managers need quick answers about team progress during sprints—which work items are in progress, what's blocked, who's working on what—but querying our internal systems directly is cumbersome and not integrated into daily workflows.

The Solution: A Slack bot that accepts natural language queries like /build-report <release #> managers=<comma separate> or /build-report <release #> teams=<comma separated> and returns formatted reports with work item
status, priorities, and assignees.

Tech Stack:
- Backend: Python + FastAPI for webhook handling
- Slack Integration: Slack Bolt SDK with Block Kit for rich formatting
- Data Layer: Salesforce CLI + SOQL queries for work item data
- Deployment: Heroku with enterprise-grade secrets management
- Architecture: REST API design with automatic token refresh workflow
- My coding boss/partner - Claude CLI

Key Features:
✅ Manager-based queries (auto-resolves "me" to Slack user email)
✅ Team-based queries with flexible filtering
✅ Status filtering (active/all) for relevant work items
✅ Channel posting or ephemeral DMs
✅ Graceful token expiration handling with user-friendly error messages

I write to highlight how easy it is now with Claude CLI (or AI tools) to build/deploy. 


Cannot paste the entire screenshot (due to privacy issues) but here goes how the summary looks like 






Sunday, March 16, 2025

LLM - Learning a new language via prompts and ollama

 How easy it is to start learning a new language?

Just download ollama

Ran > ollama run llama3.2

Prompt to teach me greetings in French







Wednesday, September 27, 2023

Database Sharding

 What is Database Sharding?

Any application or website that sees significant growth will need to scale to take care of the increase in traffic. Some organisation's choose to scale their databases dynamically.

Sharding is a database architecture pattern related to horizontal partitioning.

  • Separating a table's rows into multiple different tables (which are known as partitions)
  • Each partition will have the same table and schema but the rows would be different
  • Data in each of the rows is different
  • Data is broken up into smaller sets known as shards.
  • These shards are then pushed into multiple distributed database nodes.
  • All the data collectively in all these shards represent the entire dataset.
  • This is also known as scaling out.
  • We can add more machines as the load increases.
  • Leads to faster processing.


Vertical partitioning
  • Columns are separated and put into new tables
  • Data is unique but there is a common column in all tables to align the data
  • Known as scaling up
  • Upgrade hardware, CPU and memory.



Benefits
  1. As the table grows, queries slow down.
  2. With horizontal sharding, queries go through fewer rows and hence are faster.
  3. If there is an outage, only a single shard may get impacted and while it may impact the application, the overall impact would be less as compared to the whole DB being down.
Drawbacks
  1. Complex
  2. Very difficult to return to unsharded/original form
  3. Unbalanced shards
    1. In case the sharding was done by name e.g. A-H, I-P and S-Z
    2. If the names are more in A-H and less in S-Z, it would lead to unbalanced shards
    3. Application queries to A-H will slow down
    4. Thus, A-H shard is known as database hotspot.
  4. Not supported by all DBs like PostgreSQL
Sharding Architectures

Some of the Architectures that are important for all to be aware of:

Range Based sharding
  • Sharding data based on a range (obvious by the name)
  • Relatively simple to implement
  • Every shard has unique set of data
  • Read and write from the shard where the range falls in.
  • As expected, this can lead to unbalanced data as well.

Directory Based sharding
  • Create a lookup table that will contain a mapping of a Key and shard ID.
  • Do note that the key here should have low cardinality (less # of possible values)
  • Application needs to have another query to get shard ID from the lookup table.
  • Can the lookup table become a point of failure? Yes, it can.


Key Based Sharding
  • Also known as Hash Based Sharding
  • Creates a hash value from a key and that hash value represents the Shard ID
  • The shard key value should be static and not change with time
  • If data grows and more shards need to be added, effort would be needed to add corresponding hash and do remapping of existing values.