Files
api-company/docs/pre-launch-checklist.md
agent-company b8ba748db7
Validate Flux manifests / kustomize-build (pull_request) Failing after 16s
feat: extend Flux image automation, Gatus, and docs for VIN Decoder
Closes leeworks-agents/api-company#133
Closes leeworks-agents/api-company#134
Closes leeworks-agents/api-company#135
Closes leeworks-agents/api-company#136

- flux/image-automation/imagerepositories.yaml: add vin-decoder ImageRepository
  pointing at registry.leeworks.dev/vin-decoder/api (#133)
- flux/image-automation/imagepolicies.yaml: add vin-decoder ImagePolicy
  with semver range >=0.1.0 (#133)
- flux/monitoring/gatus-helmrelease.yaml: add VIN Decoder API endpoint check
  targeting https://vin.leeworks.dev/v1/health with Slack alert (#134)
- docs/pre-launch-checklist.md: add vin-decoder to Infrastructure, DNS & TLS,
  Functional Verification, and Legal sections; update status page line to
  reference all four APIs (#135)
- docs/secrets-checklist.md: add items #11-13 for vin-decoder GITEA_TOKEN,
  gitea-registry, and rapidapi-proxy-secret; add detail sections for each (#136)

kustomize build flux/ passes with zero errors.
2026-05-31 00:04:20 +00:00

4.5 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)
    • vin-decoder pod READY=1/1 (kubectl get pods -n vin-decoder)
  • 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
  • vin.leeworks.dev → cluster ingress IP (dig vin.leeworks.dev +short + curl -I https://vin.leeworks.dev)
  • grafana.leeworks.dev → cluster ingress IP
  • TLS certificates issued for all 8 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)
  • GET /v1/health returns HTTP 200 on vin-decoder (curl https://vin.leeworks.dev/v1/health)
  • GET /v1/decode?vin=1HGCM82633A004352 returns correct make/model/year data
  • Request without X-RapidAPI-Proxy-Secret returns HTTP 403 on vin-decoder (curl https://vin.leeworks.dev/v1/decode?vin=1HGCM82633A004352)
  • Request without X-RapidAPI-Proxy-Secret returns HTTP 403 on all three APIs
  • docs.leeworks.dev/pricing loads correctly
  • status.leeworks.dev shows all four 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)
  • VIN Decoder listed on RapidAPI with Free + 3 paid tiers (leeworks-agents/api-company#131)
  • rapidapi-proxy-secret updated with real RapidAPI value in vin-decoder namespace (leeworks-agents/api-company#128)
  • 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