# Cloud Cost Analysis

# Drop — Cloud Deployment Cost Analysis

**Date:** 2026-02-11
**Author:** John (AI Director)
**Status:** Historical — superseded by ADR-014 (PostgreSQL-only) and ADR-012 (AWS App Runner)

> **NOTE (2026-03-03):** This analysis was written before ADR-014 mandated PostgreSQL 16 in all
> environments. SQLite references below reflect the old architecture and are no longer valid.
> Current deployment: AWS App Runner + AWS RDS PostgreSQL 16. See ADR-012 and ADR-014.

---

## Current Tech Stack

| Layer | Tech | Production Note |
|-------|------|----------------|
| App | Next.js 16 (App Router) | Monolith, ~7 pages + API |
| Frontend | React 19 + Tailwind v4 | SSR/SSG |
| DB | SQLite (better-sqlite3) | Must migrate to PostgreSQL for production |
| Auth | JWT (jose) httpOnly cookie | OK for production |
| Dependencies | bcryptjs, radix-ui, lucide, sonner | Lightweight |
| Dev server | Port 3001 (configured in project.json) | Currently running locally |

**Key constraint:** SQLite cannot handle concurrent writes (ADR-001). Must switch to PostgreSQL before launch.

---

## Phase 1: MVP / Demo (now → 200 users)

| Provider | Plan | Price/mo | Notes |
|----------|------|----------|-------|
| Vercel Pro | Next.js native | $20 (~215 NOK) | No persistent FS — SQLite won't work without Turso/Neon |
| Railway Starter | Next.js + persistent disk | $5 + usage (~160 NOK) | SQLite works here |
| Fly.io Hobby | LiteFS support | $5 + usage (~160 NOK) | Great for SQLite |
| Hetzner VPS (shared) | On same CPX41 | +~0 NOK | If already provisioned from system migration |

### Recommended Phase 1 Stack

| Item | Provider | Cost/mo |
|------|----------|---------|
| App hosting | Hetzner VPS (shared) or Railway | 0-160 NOK |
| DB | SQLite (local) | 0 |
| Domain | getdrop.no (one.com) | ~100 NOK/yr |
| SSL | Let's Encrypt / Cloudflare | 0 |
| **Total Phase 1** | | **~10-170 NOK/mo** |

---

## Phase 2: Launch (200-3,000 users)

SQLite → PostgreSQL migration required. Need transactional email and SMS for auth.

| Item | Provider | Cost/mo |
|------|----------|---------|
| App hosting | Railway or Fly.io | $10-20 (~110-215 NOK) |
| PostgreSQL managed | Neon free→Pro $19 or Supabase free→$25 | 0-270 NOK |
| Transactional email | Resend (3,000 free/mo) → $20 | 0-215 NOK |
| SMS (OTP auth) | Twilio ~$0.05/SMS × 500/mo | ~270 NOK |
| CDN | Cloudflare Free | 0 |
| Monitoring | Sentry free tier | 0 |
| BaaS (Wise API) | Per-transaction fee | Covered by tx fees |
| **Total Phase 2** | | **~400-1,000 NOK/mo** |

---

## Phase 3: Scale (3,000-15,000 users)

Fintech = reliability, backups, WAF, logging required.

| Item | Provider | Cost/mo |
|------|----------|---------|
| App hosting (2 instances) | Railway Pro or Fly.io | $30-50 (~325-540 NOK) |
| PostgreSQL managed (HA) | Neon Pro $69 or Supabase Pro $25+usage | 270-750 NOK |
| Redis (caching/sessions) | Upstash free→$10 | 0-110 NOK |
| Transactional email | Resend Pro $20 | 215 NOK |
| SMS (OTP) | Twilio × 3,000/mo | ~1,600 NOK |
| CDN + WAF | Cloudflare Pro $20 | 215 NOK |
| Monitoring | Sentry Team $26 | 280 NOK |
| Logging | Betterstack free→$25 | 0-270 NOK |
| Backup storage | Backblaze B2 | 55 NOK |
| BaaS APIs (Wise/Thunes/Swan) | Per-tx, variable | Covered by tx fees |
| **Total Phase 3** | | **~3,000-4,000 NOK/mo** |

---

## Summary

| Phase | Users | Infra cost/mo | MRR (from business case) | Margin |
|-------|-------|---------------|--------------------------|--------|
| MVP | 0-200 | 10-170 NOK | 0-12,000 NOK | — (pre-revenue) |
| Launch | 200-3,000 | 400-1,000 NOK | 12,000-130,000 NOK | 90%+ |
| Scale | 3,000-15,000 | 3,000-4,000 NOK | 130,000-650,000 NOK | 97%+ |

Infrastructure cost is negligible vs revenue. Fintech margins on infra are excellent — biggest costs are marketing (30-50K/mo) and compliance, not hosting.

### Shared Hetzner VPS Option

Drop can run on the same Hetzner CPX41 (from system migration analysis) for +0 NOK incrementally:
- Next.js production build → Docker container
- PostgreSQL → share existing Docker Postgres or add new container
- Cloudflare tunnel: add new hostname for Drop

Only at 3,000+ users should Drop move to dedicated infrastructure.

---

## Related

- System cloud migration analysis: ~/ALAI/finance/cloud-migration-analysis.md (MC #524)
- Drop business case: ~/ALAI/products/Drop/project/docs/zica-business-case-v2.md
- Drop architecture: ~/ALAI/products/Drop/project/architecture/architecture-document.md