Interface description
The portfolio is an API
Everything on this site is served as JSON from the same FastAPI process. Public, read-only, 60 requests a minute per visitor; the limit comes back in X-RateLimit-* headers.
1 Endpoints
| Method | Path | Returns |
|---|---|---|
| GET | /api/v1/me | Profile: role, stack, features, skills, links |
| GET | /api/v1/experience | Work history and education |
| GET | /api/v1/projects | Case studies, summarised |
| GET | /api/v1/projects/dineflow-pos | One case study in full |
| GET | /api/v1/trace | This request's real timings (also in Server-Timing) |
| GET | /api/v1/status | Measured p50 / p95, cache hit ratio, uptime, tests |
2 From a terminal
$ curl rajshubham.com # the résumé, as plain text
$ curl rajshubham.com/api/v1/me # profile JSON
$ curl -i rajshubham.com/api/v1/trace # see the Server-Timing header
Errors share one shape: {"error": {"code": "not_found", "message": "…"}}. Over the limit, you get 429 with Retry-After.