Initial commit: API gateway with admin console

- FastAPI async gateway with httpx proxying to multiple upstreams
- SQLite database with SQLAlchemy ORM
- Admin console: manage services, users, API keys, endpoint access
- Per-key, per-endpoint granular access control
- OpenAPI document sync and caching (5-minute TTL)
- Request/response logging with full transaction inspection
- In-memory rate limiting (per-key, fixed-window)
- Tiered log retention (7d payloads, 90d rows, incremental vacuum)
- TLS verification toggle per service (for self-signed certificates)
- Service connectivity validation with automatic endpoint refresh
- Request browser with filters and deep-link inspection
- Docker setup with persistent volume
- Modal forms for create/edit flows

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
Samuel Amar
2026-07-29 14:00:22 +02:00
co-authored by Claude Haiku 4.5
commit 77d7a50fa9
31 changed files with 2927 additions and 0 deletions
+26
View File
@@ -0,0 +1,26 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Sign in · API Gateway</title>
<link rel="stylesheet" href="/static/style.css">
</head>
<body>
<div class="login-wrap">
<div class="card login-card">
<div class="brand" style="font-size:18px;font-weight:700;margin-bottom:14px;">
API <span style="color:var(--series-1)">Gateway</span>
</div>
{% if error %}<div class="alert error">{{ error }}</div>{% endif %}
<form method="post" action="/admin/login">
<label for="username">Username</label>
<input id="username" type="text" name="username" required autofocus>
<label for="password">Password</label>
<input id="password" type="password" name="password" required>
<div style="margin-top:16px"><button type="submit" style="width:100%">Sign in</button></div>
</form>
</div>
</div>
</body>
</html>