This note prices ongoing operations after the 25 May launch — separate from the one-time build in [[Projects/lumendev-museum-ibu-marsinah/context/commercial-pricing-breakdown-v0|the v0 breakdown]].
Operating stack (locked): shared LumenDev Vercel Pro (marginal hosting ≈ Rp 0 for this site) + MongoDB Atlas M0 (free) + free Resend / monitoring tiers. LumenDev runs monthly manual mongodump because M0 has no automated backups.
Internal cost (what LumenDev pays): vendor cash ≈ Rp 17.000/month (~Rp 200k/year domain only). Fully loaded with MG time at cost (~5 hr/month): ≈ Rp 392.000/month (~Rp 4,7 jt/year).
Client-facing recurring (recommended — Option A itemised): infra ≈ Rp 240.000/month (client label: biaya server, not vendor names) + LumenCare Foundation retainer Rp 600.000/month → ≈ Rp 840.000/month (~Rp 9,5 jt/year if retainer prepaid annually). Option B all-in bundle: Rp 850.000/month or Rp 9.350.000/year prepaid.
First-year TCO hint (with ~Rp 16 jt build): roughly Rp 25–26 jt year one (build + recurring), if both are agreed.
Budget caps (client ceiling): see §6 — ≤ Rp 300k/month (achievable with a thin retainer) and ≤ Rp 150k/month (infra-only / self-serve; no real support hours).
Covers recurring infrastructure, maintenance, and support/help only. Excludes: one-time build fee, Phase 2 features, payment gateway, net-new modules. Stack per [[Projects/lumendev-museum-ibu-marsinah/decisions/adr-2026-05-21-nextjs-mongodb-authjs-stack|ADR]]: Next.js on Vercel + MongoDB + Auth.js under the LumenDev Vercel account.
Client presentation rule: On invoices and proposals, use plain language — “Biaya server” / “Domain & DNS” — not Vercel, MongoDB Atlas, or Resend line items. Internal statements to MG may still show vendor actuals.
| Line item | Vendor / basis | USD/mo | IDR/mo | Notes |
|---|---|---:|---:|---|
| Hosting — Vercel Pro (portfolio) | Vercel | $0* | 0 | *Marginal for this site on shared LumenDev Pro; account seat already paid for portfolio |
| Database — MongoDB Atlas M0 | MongoDB | $0 | 0 | Free tier; manual backup obligation |
| Transactional email — Resend | Resend | $0 | 0 | Free tier; unused until Phase 2 email |
| Uptime monitoring — Better Stack (free) | Better Stack | $0 | 0 | Commercial use allowed on free tier (not UptimeRobot) |
| SSL / TLS | Vercel | $0 | 0 | Included |
| Domain + DNS | registrar | — | 16.667 | ~Rp 200.000/year ÷ 12 |
| Vendor subtotal (cash) | | | ≈ 17.000 | |
| MG time — maintenance (~3 hr) | labour at cost | — | 225.000 | Includes monthly mongodump + restore drill |
| MG time — support (~2 hr) | labour at cost | — | 150.000 | |
| Labour subtotal (at cost) | | | 375.000 | |
| Internal total — fully loaded | | | ≈ 392.000 | |
| Line item | IDR/year | Notes | |---|---:|---| | Vercel (marginal) | 0 | Shared Pro account | | MongoDB M0 | 0 | | | Resend / monitoring / SSL | 0 | | | Domain + DNS | 200.000 | Planning renewal | | Vendor subtotal (cash) | ≈ 200.000 | | | MG time — 60 hr/year at cost | 4.500.000 | | | Internal total — fully loaded | ≈ 4.700.000 | |
If this project had to bear a dedicated Pro seat + Flex DB alone (not the chosen model):
| Scenario | Vendor cash/month | Vendor cash/year | |---|---:|---:| | Dedicated Pro + Flex (reference only) | ≈ 512.000 | ≈ 6.147.000 | | Shared Pro + M0 (operating default) | ≈ 17.000 | ≈ 200.000 |
Per [[Areas/LumenDev/playbooks/project-build-pricing-framework|pricing framework]]: infra pass-through + separate LumenCare retainer. Do not expose Vercel/MongoDB SKUs to the museum.
| Client label | Fee | Billing | Internal basis | |---|---:|---|---| | Biaya server | Rp 200.000/month | Monthly or annual infra statement | 50% of standalone Pro-seat reference (354k); portfolio hosting marginal ≈ 0 | | Domain & DNS | ≈ Rp 17.000/month (Rp 200k/year) | Annual statement | Registrar renewal at actuals | | Admin fee | 10% on infra subtotal | With infra statement | Per playbook band (10–15%) | | Infra subtotal (incl. admin) | ≈ Rp 240.000/month | — | (200 + 17) × 1,10 ≈ 239 → 240k | | LumenCare Foundation retainer | Rp 600.000/month | Monthly / quarterly / annual prepaid | Labour + SLA capacity | | Combined (Option A) | ≈ Rp 840.000/month | — | ~Rp 9,48 jt/year if retainer prepaid at Rp 6,6 jt + infra ~2,88 jt |
Retainer annual-prepaid incentive: Rp 6.600.000/year (one month free vs Rp 7,2 jt monthly).
Present biaya server + domain (annual infra statement) and retainer separately. Matches LumenDev transparency policy without vendor jargon.
| Plan | Fee | Notes | |---|---:|---| | Monthly | Rp 850.000/month | Server + domain + maintenance + support in one number | | Annual prepaid | Rp 9.350.000/year | ≈ one month free vs 12 × 850k |
Offer Option B if the client wants a single predictable figure. Option A remains the default for auditability.
| Framing | Client price/mo | Internal fully loaded/mo | Gross margin | |---|---:|---:|---:| | Option A | 840.000 | 392.000 | Rp 448.000 (~53%) | | Option B | 850.000 | 392.000 | Rp 458.000 (~54%) | | Option A vs cash only | 840.000 | 17.000 | Strong contribution |
Appropriate for a small museum client while keeping real infra cost near zero on the shared account.
mongodump) + quarterly restore drill, Better Stack uptime checks, one monthly health review (logs, errors, uptime).Aligned with [[Areas/LumenDev/playbooks/lumencare-tier-matrix|tier matrix]] — no financial service credits by default (per matrix policy; optional credits only if explicitly added via [[Areas/LumenDev/playbooks/msa-sla-clause-template|MSA template]] brackets).
| Upgrade | Extra cost (indicative) | When to consider |
|---|---:|---|
| MongoDB Flex ($8/mo) | ~Rp 1,7 jt/year + admin | Client requires Atlas automated daily backups |
| Full Pro seat allocation on invoice | +~Rp 154k/mo vs 50% server line | Account split or contract requires dedicated seat |
| Resend Pro | ~Rp 4,25 jt/year | High email volume beyond free tier |
| .or.id domain | saves ~Rp 100–150k/year vs .id | Org documents available; natural fit for museum |
Default remains M0 + 50% server line unless the client explicitly pays for Flex backups.
Internal reference: vendor cash ≈ Rp 17k/month; fully loaded labour ≈ Rp 375k/month at 5 hr × Rp 75k. Standard Rp 840k covers that with margin. At ≤ Rp 300k you subsidise labour; at ≤ Rp 150k you must drop included hours (infra-only or loss-leader hosting line).
| Lever | Saving vs standard (~840k) | Trade-off | |---|---:|---| | Cut retainer 600k → 200k | 400k | ~2 hr/mo total MG time, not 5 | | Cut biaya server 200k → 100k | 100k | Symbolic hosting fee; LumenDev absorbs positioning | | Waive 10% admin on infra | ~22k | Slightly less FX/statement buffer | | Bundle domain into server (one line, annual true-up) | simplifies invoice | Client sees one “server” number | | Quarterly patches instead of monthly | ~1 hr/mo labour | Security lag up to 90 days | | Self-serve content (no included edits) | ~2 hr/mo | Museum updates via admin; MG on CR only | | Annual prepaid (10–12% discount) | cashflow | Same scope, lower effective monthly |
Recommended at 300k cap — package 300-A (all-in):
| | | |---|---:| | Client pays | Rp 300.000/month (single line: Biaya server & pemeliharaan website) | | Includes | Hosting (portfolio Vercel), M0 DB, SSL, domain averaged in; critical security patches; manual DB backup 1×/quarter; uptime check; 1 hour/month P3 (content/text/hours) — no rollover | | Response | P1 best effort next business day (not 4 hr); P2/P3 ≤ 2 business days | | Excluded | Proactive monthly review, quarterly restore drill, >1 hr/mo, new features | | Overage | Rp 150.000/hour, pre-approved | | MG economics | ~4 hr/mo at cost ≈ Rp 300k labour → ~breakeven on time; LumenDev margin ≈ Rp 283k only if you deliver ≤1 hr/mo |
Alternatives at 300k cap:
| ID | Structure | Client total/mo | Best for | |---|---:|---| | 300-A | All-in single line | 300.000 | Simplest museum budget | | 300-B | 100k biaya server + 200k pemeliharaan | 300.000 | Client wants to see server vs “service” split | | 300-C | 150k server (domain bundled) + 150k tiket-only (no included hours) | 300.000 | Museum has volunteer who edits admin; MG fixes breaks only |
Cannot fit standard Foundation retainer (300k–900k band floor) and honest labour at 150k. Choose infra-only or accept subsidy.
| ID | Structure | Client total/mo | What they get | What LumenDev does not do | |---|---:|---|---|---| | 150-A | Biaya server all-in | 150.000 | Site stays online on LumenDev stack; domain renewal billed once/year (~Rp 200k) on top or embedded in Rp 1,8 jt/tahun prepaid | No included support hours; no scheduled backups; patches critical CVE only when notified | | 150-B | Hosting only (museum owns domain) | 130.000 server + client pays registrar | Same as A minus domain | Museum manages DNS/domain card | | 150-C | Annual prepaid hosting | Rp 1.500.000/tahun (~125k/mo effective) | 150-A scope, paid upfront | Same cuts as 150-A; cite as “≤ Rp 150k/bulan setara” | | 150-D | Self-serve after handoff | 0 recurring (defer) | Training in build; docs; break-glass Rp 150k/jam | No monitoring obligation — only if museum accepts risk |
Recommended at 150k cap — package 150-A with explicit written limits:
150k vs 300k — quick pick:
| Cap | Pick | Museum gets | |---|---|---| | 300k | 300-A | Light hands-on care (1 hr/mo) + quarterly backup | | 150k | 150-A | Stay online only; museum is operator |
| Tier | Total/mo | Server line | Care / labour | Included MG time | |---|---:|---:|---:|---:| | Standard A | 840.000 | 240k (itemised) | 600k retainer | ~5 hr | | Standard B | 850.000 | (bundled) | (bundled) | ~5 hr | | Cap 300 — 300-A | 300.000 | (bundled) | (bundled) | ~1 hr | | Cap 300 — 300-C | 300.000 | 150k | 150k ticket-only | 0 hr (CR only) | | Cap 150 — 150-A | 150.000 | 150k all-in | — | 0 hr | | Self-serve | 0 | — | — | 0 (ad hoc hourly) |
Hosting — Vercel. Hobby is non-commercial only; portfolio Pro ($20/seat) covers compliance. This site’s traffic stays inside usage credit. Client sees biaya server at half the standalone seat IDR equivalent — not “Vercel Pro”. (Vercel pricing, Hobby plan)
Database — MongoDB Atlas M0 (chosen). Free: 0,5 GB, 100 ops/sec, no automated backups, auto-pause after 30 days idle. Mitigation: monthly mongodump in retainer. Flex ($8/mo) adds daily snapshots — upgrade path only. (M0 limits, Flex backups, Pricing)
Transactional email — Resend. Free tier sufficient when email ships; not in v0 scope. (Resend pricing)
Domain + DNS. Planning Rp 200.000/year renewal; .or.id cheaper if eligible. DNS on Vercel at no extra charge.
Uptime — Better Stack free tier (commercial OK). Do not use UptimeRobot free for client sites (personal-only since Oct 2024). (UptimeRobot pricing)
SSL/TLS. Free via Vercel on all plans.
.id, .or.id, or .com? Already registered? Who renews?Decided (no longer open): M0 database; server fee at 50% / Rp 200k labelled biaya server; no default SLA credits.