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
95 lines
2.3 KiB
YAML
95 lines
2.3 KiB
YAML
apiVersion: helm.toolkit.fluxcd.io/v2
|
|
kind: HelmRelease
|
|
metadata:
|
|
name: gatus
|
|
namespace: monitoring
|
|
spec:
|
|
interval: 15m
|
|
chart:
|
|
spec:
|
|
chart: gatus
|
|
version: ">=1.0.0"
|
|
sourceRef:
|
|
kind: HelmRepository
|
|
name: minicloudlabs
|
|
namespace: flux-system
|
|
interval: 60m
|
|
values:
|
|
ingress:
|
|
enabled: true
|
|
ingressClassName: nginx
|
|
annotations:
|
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
|
nginx.ingress.kubernetes.io/ssl-redirect: "true"
|
|
hosts:
|
|
- host: status.leeworks.dev
|
|
paths:
|
|
- path: /
|
|
pathType: Prefix
|
|
tls:
|
|
- secretName: gatus-tls
|
|
hosts:
|
|
- status.leeworks.dev
|
|
config:
|
|
storage:
|
|
type: sqlite
|
|
path: /data/gatus.db
|
|
endpoints:
|
|
- name: ZIP Enrichment API
|
|
url: https://zip.leeworks.dev/health
|
|
interval: 1m
|
|
conditions:
|
|
- "[STATUS] == 200"
|
|
- "[RESPONSE_TIME] < 1000"
|
|
alerts:
|
|
- type: slack
|
|
description: "ZIP Enrichment API is down"
|
|
send-on-resolved: true
|
|
|
|
- name: Holidays API
|
|
url: https://holidays.leeworks.dev/health
|
|
interval: 1m
|
|
conditions:
|
|
- "[STATUS] == 200"
|
|
- "[RESPONSE_TIME] < 1000"
|
|
alerts:
|
|
- type: slack
|
|
description: "Holidays API is down"
|
|
send-on-resolved: true
|
|
|
|
- name: Air Quality API
|
|
url: https://aqi.leeworks.dev/health
|
|
interval: 1m
|
|
conditions:
|
|
- "[STATUS] == 200"
|
|
- "[RESPONSE_TIME] < 1000"
|
|
alerts:
|
|
- type: slack
|
|
description: "Air Quality API is down"
|
|
send-on-resolved: true
|
|
|
|
- name: Docs Site
|
|
url: https://docs.leeworks.dev
|
|
interval: 5m
|
|
conditions:
|
|
- "[STATUS] == 200"
|
|
|
|
- name: Container Registry
|
|
url: https://registry.leeworks.dev/v2/
|
|
interval: 5m
|
|
conditions:
|
|
- "[STATUS] == 200"
|
|
|
|
ui:
|
|
title: "leeworks.dev API Status"
|
|
description: "Real-time status for all leeworks.dev APIs"
|
|
logo: ""
|
|
# Retention: 90 days
|
|
retention:
|
|
days: 90
|
|
|
|
persistence:
|
|
enabled: true
|
|
size: 1Gi
|
|
mountPath: /data
|