Skip to content
Sahil Durgia/ full-stack
Booking & fleet management · Nov 2025 – Present

Amber Car Rental

The agency was taking bookings by phone and tracking fleet availability by hand, which meant double-bookings, slow customer response times, and no visibility into which vehicles were actually free on a given day.

Company
Amber Ventures LLC
Role
Solo full-stack developer
Period
Nov 2025 – Present

What I actually owned.

Sole developer, end to end: requirement analysis, UI/UX, architecture, development, testing, and deployment. Direct client collaboration to turn business requirements into technical specs.

Technology used.

Frontend
Next.jsTypeScriptTailwind CSS
Backend
Supabase (PostgreSQL, Auth, Realtime)
Tooling
Claude CodeChatGPT

How it fits together.

Components
  • Customer app
  • Admin dashboard
  • Next.js API layer
  • Supabase (Postgres + Auth + Realtime)
How they connect
  • $ Customer app → Next.js API layer
  • $ Admin dashboard → Next.js API layer
  • $ Next.js API layer → Supabase (Postgres + Auth + Realtime)
  • $ Supabase Realtime → Admin dashboard (live booking + fleet updates)

One Next.js codebase serves both the customer-facing booking flow and the admin dashboard; Supabase Realtime pushes fleet and booking state to the dashboard without polling.

Decisions & tradeoffs.

Supabase over a hand-rolled Node/Express + Postgres backend

Solo developer, real deadline: Auth, Realtime, and row-level security shipped for free instead of being rebuilt.

Realtime subscriptions for fleet availability instead of polling

Admin dashboard needed booking and fleet-movement updates to reflect instantly across sessions without hammering the database.

AI-assisted workflow (Claude Code, ChatGPT) built into the loop, not bolted on

As the only engineer, the bottleneck was breadth — scaffolding CRUD, debugging edge cases, and writing admin tooling in parallel with customer-facing work.

Metrics that matter.

1 (solo)
Team size
Customer app + admin dashboard
Scope
Supabase Postgres, Auth, Realtime
Backend

What actually went wrong, and how it got fixed.

Preventing double-bookings when two admins act on the same vehicle at once.

Enforced availability at the database layer rather than trusting client-side checks alone, so a race between two requests can't both win.

Keeping a single developer's velocity up across frontend, backend, and admin tooling simultaneously.

Leaned on Claude Code and ChatGPT for scaffolding and debugging so time went to product decisions and edge cases, not boilerplate.