a615b7ebfd
Closes leeworks-agents/api-company#5 (docs-site Astro scaffold) Closes leeworks-agents/api-company#9 (metrics instrumentation standard) Closes leeworks-agents/api-company#10 (Gitea Actions openapi aggregation pipeline) Closes leeworks-agents/api-company#11 (docs-site Flux HelmRelease) Closes leeworks-agents/api-company#12 (SEO blog posts x3) Closes leeworks-agents/api-company#13 (legal docs ToS/Privacy/AUP) Closes leeworks-agents/api-company#14 (DNS documentation) ## Changes ### docs/legal/ - terms-of-service.md — API usage, liability, account termination, governing law - privacy-policy.md — request log retention (90d), no PII sold, data sharing - acceptable-use-policy.md — rate limit abuse, scraping prohibition, resale ban ### docs/metrics-standard.md - Defines api_requests_total, api_response_duration_seconds, api_data_freshness_seconds - Fastify (TypeScript) and FastAPI (Python) reference middleware implementations - Prometheus scrape config and Grafana dashboard guidance ### docs/registry.md - Decision: use Gitea built-in container registry (no new infra) - Image naming convention, auth, Kubernetes imagePullSecrets, ingress config ### docs/dns.md - Required A records for all 6 subdomains - cert-manager ClusterIssuer and Ingress TLS examples - Verification commands and human-operator action items ### docs-site/ - Astro 4 + MDX + sitemap scaffold - Base layout with nav linking all APIs, blog, RapidAPI, status - Landing page with API cards - Per-API Redoc viewer pages (zip-enrichment, holidays, air-quality) - Blog index + 3 SEO blog posts (~1000 words each with JSON-LD) - Dockerfile (multi-stage: node build + nginx serve) - nginx.conf with gzip, caching, health endpoint ### flux/ - gitea-runner/: gitea-act-runner HelmRelease (org-scope, dind) - monitoring/: kube-prometheus-stack + Gatus HelmReleases - Prometheus with pod annotation scraping - Grafana at grafana.leeworks.dev with persistence - Gatus status page at status.leeworks.dev, 90-day retention - docs-site/: Deployment + Service + Ingress via raw chart - api-company-source/: GitRepository + Kustomization reference manifests - kustomization.yaml: root kustomize entry point (build validated) ### .gitea/workflows/build-docs.yaml - Aggregates openapi.yaml from zip-enrichment, holidays, air-quality repos - Builds Astro docs-site - Pushes image to registry.leeworks.dev/leeworks-agents/docs-site - Triggered on push to main, schedule daily 02:00 UTC, workflow_dispatch
57 lines
2.9 KiB
Plaintext
57 lines
2.9 KiB
Plaintext
---
|
|
import Base from '../layouts/Base.astro';
|
|
---
|
|
<Base title="Home" description="leeworks.dev — production-ready data APIs: ZIP Enrichment, Holidays, Air Quality">
|
|
<style>
|
|
.hero { padding: 5rem 2rem 3rem; text-align: center; }
|
|
.hero h1 { font-size: 3rem; font-weight: 800; background: linear-gradient(135deg, #90cdf4, #667eea); -webkit-background-clip: text; -webkit-text-fill-color: transparent; margin-bottom: 1rem; }
|
|
.hero p { font-size: 1.25rem; color: #a0aec0; max-width: 600px; margin: 0 auto 2rem; }
|
|
.cta { display: inline-block; background: #667eea; color: #fff; padding: 0.75rem 2rem; border-radius: 8px; text-decoration: none; font-weight: 600; }
|
|
.apis { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem; padding: 2rem; max-width: 1100px; margin: 0 auto; }
|
|
.api-card { background: #1a1d27; border: 1px solid #2d3748; border-radius: 12px; padding: 1.5rem; }
|
|
.api-card h2 { color: #90cdf4; margin-bottom: 0.5rem; }
|
|
.api-card p { color: #a0aec0; margin-bottom: 1rem; font-size: 0.95rem; }
|
|
.badge { display: inline-block; font-size: 0.75rem; padding: 0.2rem 0.6rem; border-radius: 4px; margin-bottom: 0.75rem; }
|
|
.badge.wip { background: #744210; color: #fbd38d; }
|
|
.badge.live { background: #1a4731; color: #9ae6b4; }
|
|
.links a { color: #90cdf4; text-decoration: none; margin-right: 1rem; }
|
|
.links a:hover { text-decoration: underline; }
|
|
</style>
|
|
|
|
<div class="hero">
|
|
<h1>Simple. Reliable. APIs.</h1>
|
|
<p>Production-ready data APIs for ZIP enrichment, public holidays, and air quality. Available on RapidAPI.</p>
|
|
<a href="https://rapidapi.com/leeworks" class="cta" target="_blank" rel="noopener">Get API Key on RapidAPI</a>
|
|
</div>
|
|
|
|
<div class="apis">
|
|
<div class="api-card">
|
|
<span class="badge wip">In Development</span>
|
|
<h2>ZIP Enrichment API</h2>
|
|
<p>Enrich US ZIP codes with city, state, county, timezone, lat/long, and population data.</p>
|
|
<div class="links">
|
|
<a href="/zip-enrichment">Docs</a>
|
|
<a href="https://rapidapi.com/leeworks/api/zip-enrichment" target="_blank" rel="noopener">RapidAPI</a>
|
|
</div>
|
|
</div>
|
|
<div class="api-card">
|
|
<span class="badge wip">In Development</span>
|
|
<h2>Holidays API</h2>
|
|
<p>Public holidays for 100+ countries, filterable by country, year, and type.</p>
|
|
<div class="links">
|
|
<a href="/holidays">Docs</a>
|
|
<a href="https://rapidapi.com/leeworks/api/holidays" target="_blank" rel="noopener">RapidAPI</a>
|
|
</div>
|
|
</div>
|
|
<div class="api-card">
|
|
<span class="badge wip">In Development</span>
|
|
<h2>Air Quality API</h2>
|
|
<p>Real-time and historical AQI data worldwide including PM2.5, PM10, and health recommendations.</p>
|
|
<div class="links">
|
|
<a href="/air-quality">Docs</a>
|
|
<a href="https://rapidapi.com/leeworks/api/air-quality" target="_blank" rel="noopener">RapidAPI</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</Base>
|