Skip to content

Work / Babul / Architecture

Babul architecture

A web app for design version control. Staging is a demo on free plans: Vercel, Neon and Cloudflare R2, with no worker. Production is not deployed; it will be one small server for the web app and a Chromium worker. AI and payments are planned but not in the code.

last verified 2026-10-30

Known cost a month
₹0
Staging only, all on free plans. The domain, production and any bill actually read are missing.
Production, when it comes
₹0–600 / mo
The wiki's plan: Oracle free tier, else OVHcloud Mumbai at about ₹586. No quote or receipt read.
First limit we will hit
Neon 0.5 GB
Staging database. It also sleeps when idle. R2 has room (10 GB) but no spending cap.

How it fits together

Pick something a user does to see its path and what it costs.

Users' sideOursOutside servicesCustomer's own siteCustomer's own siteRead by capture and Verify. Never written.$0Web appWeb appNext.js 16: every screen, tRPC, /api/v1, /mcp, sign-in$0 on HobbyCapture workerCapture workerChromium: capture, hand-walk, Verify, stale-job sweep, purge. 2 captures and 2 hand-walks at a time.$0 (owner's machine); no worker on stagingNeon PostgresNeon Postgres$0 on Free (0.5 GB, sleeps when idle)Cloudflare R2Cloudflare R2Captured pages, screenshots, icons, exports. Private bucket.$0 within 10 GB, 1M writes, 10M reads a monthEmailEmailVerify, reset, invites. Resend in code; console on staging.Claude (Anthropic)Claude (Anthropic)AI edits and image to HTML. Not built.Not readPolarPolarMerchant of record for Team seats. Not built.Not readGitHub Actions and Vercel CLIGitHub Actions and Vercel CLIDeploy staging on every push to main$0 (org's free minutes)
$0 on staging
needs a worker; production host cost not read
  1. The web app adds a Job row in Postgres.
  2. The worker takes it (FOR UPDATE SKIP LOCKED) and opens the customer's site in Chromium, only through its egress proxy.
  3. The proxy refuses private addresses and connects to the address it checked.
  4. Pages, screenshots and assets go to R2; rows go to Postgres.
  5. A page past 2 minutes is skipped. A crash retries up to 3 times, then the capture fails.

Cost

Every number says where it came from.

ServicePays forTodayGrows withBasis
Customer's own siteRead by capture and Verify. Never written.$0Pages walked (25 a capture in the free month, 500 on Team)Statedwiki/entities/plans.md
Web appNext.js 16: every screen, tRPC, /api/v1, /mcp, sign-in$0 on Vercel Hobby (staging)Production moves to a small server; its price is not readStatedops/runbooks/staging.md
Capture workerChromium: capture, hand-walk, Verify, stale-job sweep, purge. 2 captures and 2 hand-walks at a time.$0 (owner's machine); no worker on stagingCaptures and Verify runs; production host not chosenStatedops/runbooks/staging.md; apps/worker/src/env.ts defaults
Neon Postgres$0 on Free (0.5 GB, sleeps when idle)Rows, one per property edit and commitStatedops/runbooks/staging.md
Cloudflare R2Captured pages, screenshots, icons, exports. Private bucket.$0 within 10 GB, 1M writes, 10M reads a monthCaptured pages and screenshots; one staging refresh writes a few hundred filesStatedops/runbooks/staging.md
Claude (Anthropic)AI edits and image to HTML. Not built.Not readAI actionsNot known
PolarMerchant of record for Team seats. Not built.Not readTeam revenue (fee about 5% + ₹44 a charge, per the wiki)Not known
GitHub Actions and Vercel CLIDeploy staging on every push to main$0 (org's free minutes)PushesStatedops/runbooks/staging.md

What breaks when something fails

If this failsThe user seesTheir dataBasis
Customer's own siteThe capture fails with the reason. A role whose sign-in is refused is left out and the others still run.Pages already saved are kept. Stop keeps what was saved.Statedwiki/concepts/capture-reads-the-product.md
Web appNothing opens. The CLI and MCP stop too.Safe in Postgres and R2.AssumedAll state lives in Neon and R2; no outage run recorded
Capture workerCaptures and Verify wait in the queue. On staging nothing new can be captured at all.Jobs stay in Postgres. A crashed job is retried (max 3 tries, 30 s apart); one silent for 120 s is swept, then fails with 'The capture could not finish. Try again.'In codeapps/worker/src/queue/job-state.ts; packages/db/prisma/schema.prisma maxAttempts
Neon PostgresThe app does not work. After a sleep the first page is slow.On the free plan the restore window is short. Restore has never been tested.Statedops/runbooks/backup-and-restore.md
EmailIf Resend refuses, the send throws an error. What the user then sees was not read.None held thereIn codeapps/web/src/server/email/get-transport.ts
GitHub Actions and Vercel CLINothing. Staging stops updating.SafeStated

Where the data goes

Accounts, companies, products, drafts, commitsNeon Postgres (US)
Captured pages, screenshots, assetsCloudflare R2 (US). A private bucket.

What we do not know yet

  • Hosting is being migrated (owner, 2026-10-30): staging is on free plans (Vercel Hobby, Neon), and task T065 moves production to one small server, Oracle Cloud Always Free in India, else OVHcloud Mumbai at about ₹586 a month. Costs here are before the move.
  • The real monthly bill: no bill, receipt or usage page was read for Vercel, Neon, R2 or the domain babul.dev. The ₹0 for staging comes from the runbook saying every plan is free.
  • No usage counts exist: .context/raw is empty and .context/metrics holds only work-flow counts. Database size, R2 size, captures a month and worker run time are not recorded.
  • Production is not deployed and its host is not chosen (T023). ₹586 for OVHcloud is a wiki figure, not a quote.
  • wiki/concepts/architecture-overview.md says AI is called by the worker, and legal/subprocessors.md lists Anthropic as in use. The code holds no call to Anthropic, only the env schema. plans.md says AI is not built.
  • wiki/concepts/architecture-overview.md says the staging worker runs on the owner's machine; ops/runbooks/staging.md says there is no worker on staging. Only the refresh script runs one, on that machine.
  • stack.md names Resend for email and rejects Amazon SES; legal/subprocessors.md lists SES as chosen. Staging sends no real email either way.
  • Restore has never been tested (backup-and-restore.md table is empty). The Neon free restore window is short, R2 has no backup, and there are no monitoring or incident records.
  • R2 has no spending cap. The only guard is a budget alert that emails the owner at $1.
  • Vercel Hobby is for non-commercial use. It is fine for a demo and not for the first customer.
  • schema.prisma says a daily cron inserts weekly captures; no cron was found in the web app or worker code.