|
| 1 | +# HawkAPI plugin roadmap |
| 2 | + |
| 3 | +Saved 2026-05-16. 12 plugins shipped: `hawkapi`, `hawkapi-sentry`, `hawkapi-otel`, `hawkapi-cache`, `hawkapi-mcp`, `hawkapi-auth`, `hawkapi-mail`, `hawkapi-sqlalchemy`, `hawkapi-celery`, `hawkapi-websockets`, `hawkapi-storage`, `hawkapi-admin`. |
| 4 | + |
| 5 | +## Backlog |
| 6 | + |
| 7 | +### Security / prod-infra |
| 8 | +- `hawkapi-ratelimit` — token bucket + sliding window, Redis backend |
| 9 | +- `hawkapi-csrf` — CSRF for form-flows (pairs with admin) |
| 10 | +- `hawkapi-monitoring` — Prometheus metrics endpoint (separate from OTel) |
| 11 | + |
| 12 | +### API ergonomics |
| 13 | +- `hawkapi-pagination` — cursor + offset, `Page[T]` helper |
| 14 | +- `hawkapi-i18n` — gettext + Accept-Language + lazy strings |
| 15 | +- `hawkapi-sse` — Server-Sent Events (separate from websockets) |
| 16 | + |
| 17 | +### Infrastructure integrations |
| 18 | +- `hawkapi-redis` — generic Redis client with DI + healthcheck |
| 19 | +- `hawkapi-mongo` — Motor wrapper + sessions in DI |
| 20 | +- `hawkapi-clickhouse` — async ClickHouse client |
| 21 | +- `hawkapi-kafka` — aiokafka consumer/producer DI |
| 22 | +- `hawkapi-search` — Meilisearch / Typesense / Elasticsearch abstraction |
| 23 | + |
| 24 | +### Service patterns |
| 25 | +- `hawkapi-webhook` — outbound webhooks (retry, HMAC signing, dead-letter) |
| 26 | +- `hawkapi-cron` — simple in-process scheduler (no Celery dep) |
| 27 | +- `hawkapi-events` — outbox pattern + domain event bus |
| 28 | +- `hawkapi-cli` — manage.py-style CLI (db migrate / reset, shell, run jobs) |
| 29 | + |
| 30 | +### Payments / billing |
| 31 | +- `hawkapi-payments` — Stripe + PayPal wrappers with webhook handling |
| 32 | + |
| 33 | +## Top-3 to ship next |
| 34 | + |
| 35 | +`hawkapi-ratelimit`, `hawkapi-cron`, `hawkapi-pagination` — highest-leverage gaps for any production API. |
| 36 | + |
| 37 | +## Per-plugin checklist (locked in from prior sessions) |
| 38 | + |
| 39 | +- Author identity: `Berik Ashimov <bash@Beriks-MacBook-Pro.local>`, no Co-Authored-By |
| 40 | +- ZERO mentions of Claude / Anthropic / OpenAI / assistant anywhere — grep before push |
| 41 | +- Module-level singleton registry (TestClient does not set `scope["app"]`) |
| 42 | +- `pyright` strict + `reportUnknown* = false`; relax `reportGeneralTypeIssues` for SDK-heavy code |
| 43 | +- `ruff` ignore list: `S101, S110, B008, SIM105, SIM108, SIM113` |
| 44 | +- Release workflow first run always fails (PyPI trusted publisher not yet configured); rerun + clean failed deployment after user confirms setup |
0 commit comments