Merge pull request '[Phase 6] docs: add docs/pre-launch-checklist.md (#112)' (#113) from feature/issue-112-pre-launch-checklist into main
This commit was merged in pull request #113.
This commit is contained in:
@@ -15,6 +15,7 @@ Meta-repo for the `leeworks-apis` recursive build loop. This repo holds cross-cu
|
||||
- `MASTER_BUILD_PROMPT.md` — the prime directive driving the build loop
|
||||
- `ROADMAP.md` — cross-repo milestones (Phase 0–6)
|
||||
- `STATUS.md` — living revenue + infra scorecard
|
||||
- `docs/pre-launch-checklist.md` — go-live gate checklist (run the day before public launch)
|
||||
- `SESSION_LOG.md` — append-only log of agent work sessions
|
||||
- `research/RESEARCH_LOG.md` — market research findings, candidate API ideas
|
||||
- `flux/` — cluster-level Flux manifests (registry, runner, monitoring, docs-site)
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
# 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**
|
||||
|
||||
---
|
||||
|
||||
## Legal & Monetisation
|
||||
|
||||
- [ ] `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
|
||||
|
||||
```bash
|
||||
# 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_
|
||||
Reference in New Issue
Block a user