I build backends that are hard to get wrong.
Money that never touches floating point, approvals that need a second person, audit trails you can verify,
and CI that typechecks, tests and builds on every push.
devnishantt.github.io: a portfolio you attack instead of read. Race a withdrawal, replay a payment, tamper with an audit log.
call the api ·
projects ·
pipelines ·
vital signs ·
how i build ·
toolbox
This README is served by a backend. Open an issue whose title is an HTTP request and a GitHub Action answers it with an HTTP-style response (status line, headers, JSON body) in about 10 to 20 seconds. It then closes the issue, writes your call into the access log below, and replaces the trace further down with a span-by-span waterfall of your request. No server and no keys: the transport is GitHub Issues.
| Click one, then press Create | What comes back |
|---|---|
GET /about | Who I am, as JSON |
GET /projects | Everything I'm building |
GET /projects/ledgerline | One project: the hard part, the stack and its live CI status |
GET /ci | Every pipeline, read live from GitHub Actions |
GET /now | Streak and contributions, computed when you ask |
DELETE / | 403. This profile is append-only, like a good audit log |
BREW /coffee | See RFC 2324 |
The trace is real. Queue time and runner steps are read back from the Actions API; the handler and every GitHub API call are timed in-process. The striped span is still running when the image is committed, because that commit is what publishes it.
How it works
sequenceDiagram
autonumber
actor You
participant I as GitHub Issues
participant A as GitHub Actions
participant R as profile_api.py
participant G as GitHub API
You->>I: open issue "GET /projects/ledgerline"
I-->>A: issues.opened
A->>R: run with the event payload
R->>R: parse request line, match fixed route table
R->>G: latest CI run for the repo
G-->>R: status, commit, duration
R->>I: comment with HTTP/1.1 200 OK + JSON, close issue
R->>G: read this job's own step timings
R->>A: commit access log + trace waterfall
A-->>You: your request shows up on this README
- The issue title is untrusted input. It is read from the event payload (never interpolated into a shell), matched against a fixed route table, and only echoed back inside code fences.
- Concurrent requests never clobber each other: every log write re-reads
main, appends, and retries the push. - Unknown routes get
404, malformed titles get400, and writes get403or405, with the reason in the body. - Source:
scripts/profile_api.py· workflow:.github/workflows/profile-api.yml. Standard library only.
The hard part of each one
| Project | The hard part |
|---|---|
| Ledgerline | Integer minor-unit money, one-to-one matching that leaves ambiguous pairs unresolved instead of guessing, a separate reviewer credential for approvals, and a hash-linked audit chain that detects a missing tail. |
| Aftermark | An incident only closes after two non-creator principals approve the current SHA-256 evidence manifest. New evidence makes old approvals stale. Every write claims the next revision, so conflicting writers roll back their whole batch. |
| Pactrail | A deliberately conservative OpenAPI diff: anything it can't prove safe is flagged for review and blocks CI. Backed by 639 tests, most of them schema boundary cases. |
| Tracebench | Drift checks that report "incomparable" instead of quietly saying "stable". Bounded CSV/JSONL/Parquet ingestion, exact decimal bounds and fingerprinted, offline HTML reports. |
| bank-management-system | A double-entry ledger you can check against the balances, transfers that lock rows in a fixed order so they can't deadlock, and Idempotency-Key retries that never double-charge. |
| Hospital-Management | Access and refresh token rotation, a Redis-backed token blacklist, rate limiting, uploads and email in a layered Express service. |
Read straight from the GitHub Actions API every day. If a pipeline goes red, this board goes red with it.
Nothing on this page is a third-party widget. Every graphic is a self-contained SVG rebuilt daily from the GitHub API by scripts/build_profile.py, and the API above is scripts/profile_api.py. Standard library only · icons from Simple Icons (CC0)

