
Personal Assistant Agent
One chat for search, calendar, email, tasks, notes and expenses.
- n8n
- Streamlit
- OpenAI
- Google APIs
- Webhooks

A typical app I ship, and what I've actually done in each box. Hover a node.
Redux state shared across three interfaces at Alphawizz; SSR and route-level code splitting on the main Next.js app at DigiFlex.
Correlation ID minted here and carried through HTTP and NATS headers in eventbus-services. Zod on every boundary.
Registers users, writes to Postgres via Prisma, publishes user.registered to JetStream. Never calls the notification service.
One database per service in eventbus-services. Currently reading about its internals.
MovieBook: showtime and seat-layout APIs, JWT auth, mock payment that converts a lock into a booking in one step.
Bookings, shows and users in MovieBook; documents and sessions in ResumeX; survey rows in program-intel.
Seat locks with TTL in MovieBook: SET lock:show:seat session NX PX 12000. Released on payment timeout.
USER_EVENTS stream. Explicit acks, redelivery on consumer death, idempotency key checked before any side effect.
Consumes user.registered, records the idempotency key in the same transaction as the side effect, retries with back-off.
After three failed deliveries a message lands here instead of looping forever. Inspectable, replayable.
8 things I built. Two of them you can poke at without leaving this page.
2021 → now, as a git graph.
Four years of DSA, DBMS, OS, and figuring out I liked the web more than the syllabus.
javascript-tutorial. The start of the JS ecosystem rabbit hole.
And immediately started shipping.
First real-time apps: a bidding system and a chat app. Learned WebSockets the hard way.
First deployed product with real users.
Real-time order tracking with WebSockets for a delivery app; Redux across three interfaces.
Shared React component package; SSR and code splitting on the main Next.js app.
Redis seat locks. The project I get asked about most.
NATS JetStream, idempotency, DLQ. First time I built something I would call infrastructure.
Looking for the next hard problem.
End of timeline
Building things nobody asked for. Yet.
The tagline is only half a joke. Most of what's on my GitHub started because I wanted something to exist and nobody was going to build it for me.
I build web apps end to end, mostly in TypeScript: React or Next.js on the front, Node and Express behind it, Postgres or Mongo underneath, Redis when something needs to be fast or locked, NATS when two services should not know about each other.
The part I like is when a vague requirement turns into a thing that runs. I care less about which framework wins.
$ cat now.txtbuilding : eventbus-services v2 (outbox pattern, k8s manifests) # verifylearning : PostgreSQL internals, Go # verifyopen to : full-time roles · contract work · pairing on hard problemslocation : Indore, IN · IST (UTC+5:30) · remote-friendly$
Two people cannot buy the same seat, even if they click at the same millisecond.


Seat maps are a classic race: two users see the same free seat, both pay, one gets a refund and a bad day. The lock has to be atomic and has to expire on its own if the user walks away.
Getting the TTL right and being honest about it in the UI: the countdown the user sees is the same TTL Redis holds, and when it expires the seat opens for everyone at once.
export async function lockSeat(showId: string, seat: string, session: string) {
const key = `lock:${showId}:${seat}`
// NX: only if absent. PX: expire in ms. One round-trip, atomic.
const ok = await redis.set(key, session, 'NX', 'PX', 12_000)
if (ok !== 'OK') {
const owner = await redis.get(key)
const ttl = await redis.pttl(key)
throw new HttpError(409, `seat ${seat} is locked by another session (${Math.ceil(ttl / 1000)}s left)`, { owner })
}
return { key, expiresAt: Date.now() + 12_000 }
}Everything here runs in your browser; the real one uses ioredis (SET NX PX) — see source.