Files
api-company/docs/pre-launch-checklist.md
T
agent-company 74ddce364f
Validate Flux manifests / kustomize-build (pull_request) Failing after 25s
[Phase 6] docs: add docs/pre-launch-checklist.md go-live verification checklist
Create docs/pre-launch-checklist.md with all sections required before
public launch: Infrastructure, DNS & TLS (all 7 subdomains including
grafana.leeworks.dev), Functional Verification, Legal & Monetisation,
and Post-Launch steps.

Also link the checklist from README.md.

Closes leeworks-agents/api-company#112
2026-05-30 05:04:53 +00:00

3.8 KiB

Pre-Launch Checklist

Use this checklist as the final go-live gate — run through every item the day before flipping the public switch. All items must be before announcing public availability.


Infrastructure

  • All Flux components READY=True (flux get all)
  • All three API pods Running and READY
    • zip-enrichment pod READY=1/1 (kubectl get pods -n zip-enrichment)
    • holidays pod READY=1/1 (kubectl get pods -n holidays)
    • air-quality pod READY=1/1 (kubectl get pods -n air-quality)
  • docs-site pod Running and READY (kubectl get pods -n docs-site)
  • Prometheus scraping all three API services (check Prometheus Targets UI)
  • Grafana dashboard accessible at grafana.leeworks.dev

DNS & TLS

  • zip.leeworks.dev → cluster ingress IP (dig zip.leeworks.dev +short + curl -I https://zip.leeworks.dev)
  • holidays.leeworks.dev → cluster ingress IP
  • aqi.leeworks.dev → cluster ingress IP
  • docs.leeworks.dev → cluster ingress IP
  • status.leeworks.dev → cluster ingress IP
  • registry.leeworks.dev → cluster ingress IP
  • grafana.leeworks.dev → cluster ingress IP
  • TLS certificates issued for all 7 subdomains (kubectl get certificates -A)

Functional Verification

  • GET /health returns HTTP 200 on zip-enrichment (curl https://zip.leeworks.dev/health)
  • GET /health returns HTTP 200 on holidays (curl https://holidays.leeworks.dev/health)
  • GET /health returns HTTP 200 on air-quality (curl https://aqi.leeworks.dev/health)
  • GET /zip/{zip} returns correct data for a sample ZIP code (e.g. curl https://zip.leeworks.dev/zip/10001)
  • GET /holidays/{year} returns correct data (e.g. curl https://holidays.leeworks.dev/holidays/2026)
  • GET /aqi/{city} returns correct data (e.g. curl https://aqi.leeworks.dev/aqi/New%20York)
  • Request without X-RapidAPI-Proxy-Secret returns HTTP 403 on all three APIs
  • docs.leeworks.dev/pricing loads correctly
  • status.leeworks.dev shows all three APIs as UP

  • docs/legal/terms-of-service.md committed and reachable at docs.leeworks.dev/legal/terms-of-service
  • docs/legal/privacy-policy.md committed and reachable at docs.leeworks.dev/legal/privacy-policy
  • docs/legal/acceptable-use-policy.md committed and reachable at docs.leeworks.dev/legal/acceptable-use-policy
  • All three APIs listed on RapidAPI with Free + 3 paid tiers (leeworks-agents/api-company#44)
  • PayPal linked to RapidAPI (leeworks-agents/api-company#19)
  • rapidapi-proxy-secret updated with real RapidAPI values in all 3 namespaces (leeworks-agents/api-company#81)

Post-Launch

  • Alert channel confirmed — Slack webhook active (leeworks-agents/api-company#73)
  • Grafana alert rules firing correctly on synthetic test downtime
  • First STATUS.md post-launch update committed

Quick Commands Reference

# Flux overview
flux get all

# Check API pod health
for ns in zip-enrichment holidays air-quality docs-site; do
  echo "=== $ns ==="
  kubectl get pods -n $ns
done

# Verify TLS certs
kubectl get certificates -A

# Check all 7 DNS subdomains
for sub in zip holidays aqi docs status registry grafana; do
  echo "$sub.leeworks.dev -> $(dig $sub.leeworks.dev +short)"
done

# Smoke test health endpoints
for svc in "zip.leeworks.dev/health" "holidays.leeworks.dev/health" "aqi.leeworks.dev/health"; do
  echo "$svc: $(curl -s -o /dev/null -w '%{http_code}' https://$svc)"
done

# Verify 403 on missing proxy secret
curl -s -o /dev/null -w "%{http_code}" https://zip.leeworks.dev/zip/10001
# Expected: 403

References: ROADMAP.md §Phase 6; leeworks-agents/api-company#33, #44, #19, #81, #73, #7, #8, #18