config/projects/snapapi/memory/state.json

86 lines
4.3 KiB
JSON

{
"phase": "production-live",
"version": "0.4.3-prod / 0.5.1-staging",
"staging": {
"status": "running",
"namespace": "snapapi-staging",
"replicas": 1,
"image": "git.cloonar.com/openclawd/snapapi:b2688c0cce6dc8d5a97907c050da3b6143e86228",
"healthCheck": "passing"
},
"production": {
"status": "running",
"namespace": "snapapi",
"replicas": 2,
"image": "docker.io/library/snapapi:v0.4.3",
"healthCheck": "passing",
"domain": "https://snapapi.eu",
"tls": "Let's Encrypt (valid until 2026-05-20)"
},
"blockers": [
"Stripe webhook URL needs to be registered in Stripe Dashboard: https://snapapi.eu/v1/billing/webhook"
],
"completed": [
"Core screenshot API (POST /v1/screenshot)",
"GET /v1/screenshot endpoint with ?key= auth (staging) — enables <img> embedding",
"In-memory LRU response cache with X-Cache headers (staging) — 5min TTL, 100MB max, bypass via cache=false",
"Playground endpoint (POST /v1/playground) — no auth, IP rate limited (5/hr), watermarked",
"Watermark service — overlays 'snapapi.eu — upgrade for clean screenshots' on playground output",
"Health check (GET /health)",
"SSRF protection (blocks private IPs, metadata, K8s services)",
"Browser pool with auto-recycling + staggered restart (staging)",
"PostgreSQL DB integration (api_keys + usage tables)",
"Usage tracking with per-key limits",
"REDESIGNED landing page — playground as hero demo, no free tier, paid-only pricing",
"Landing page with tabbed code examples (cURL/Node.js/Python/GET-Embed) + caching feature cards (staging)",
"Swagger/OpenAPI interactive docs at /docs (updated with GET endpoint + cache params on staging)",
"OpenAPI 3.0.3 spec at /openapi.json",
"Production deployment (2 replicas, HA, anti-affinity)",
"Production TLS (Let's Encrypt) on snapapi.eu",
"Staging deployment (1 replica)",
"Cache-aside key lookup (multi-replica fix)",
"Mobile-responsive design",
"Per-route CSP",
"Removed free signup flow (v0.3.0)",
"Stripe billing integration — 3 paid plans (Starter €9, Pro €29, Business €79)",
"Stripe Checkout flow (plan selection → Stripe → success page with API key)",
"Stripe webhook handler (subscription lifecycle, product filtering for shared account)",
"Status page at /status (auto-refresh, dark theme)",
"Git push access from openclaw-vm (deploy key: forgejo-snapapi)",
"Codebase pushed to Forgejo repo (openclawd/SnapAPI) — all source, Dockerfile, CI workflows",
"Legal pages: Impressum (§5 ECG), Privacy Policy (GDPR), Terms of Service",
"Footer links to all legal pages",
"SEO: robots.txt, sitemap.xml, OG tags, Twitter cards, JSON-LD structured data, canonical URL",
"404 page (dark theme, proper HTTP 404 status)",
"Node.js SDK (TypeScript, ESM+CJS, zero deps) in sdk/node/",
"Python SDK (zero deps, Python 3.8+) in sdk/python/",
"Stripe Customer Portal endpoint (POST /v1/billing/portal) — subscription management + key recovery (staging)",
"API Key Recovery endpoint (GET /v1/billing/recover) — secure masked key lookup (staging)",
"Recovery page at /recovery.html — user-facing key recovery form (staging)",
"Test suite: 129 tests passing (vitest) — SSRF, cache, auth, keys, billing, playground, screenshot, health, watermark",
"Git deploy key configured on k3s-mgr for staging builds"
],
"notDone": [
"Register Stripe webhook URL in Stripe Dashboard",
"CI/CD pipeline: workflows updated, RBAC+kubeconfig ready, BLOCKED on Forgejo token scope (needs write:repository)",
"Staging TLS (blocked on DNS for staging.snapapi.eu — no DNS record exists)",
"External uptime monitoring (no UptimeRobot account/key)",
"Deploy all staging features to production (v0.5.1 tag needed — investor decision)"
],
"stripeProducts": {
"starter": {
"productId": "prod_U0YOVzPDAht9eH",
"priceId": "price_1T2XHnRtlDv9c8GoNehDYEhS"
},
"pro": {
"productId": "prod_U0YOlQO6hAF7Tg",
"priceId": "price_1T2XHoRtlDv9c8GoCsinPNM4"
},
"business": {
"productId": "prod_U0YOSor6qXhHs8",
"priceId": "price_1T2XHpRtlDv9c8GoThHfd8kS"
}
},
"lastSession": "2026-02-25T08:00:00Z",
"codeLocation": "Forgejo repo openclawd/SnapAPI. Clone: git clone forgejo-snapapi:openclawd/SnapAPI.git"
}