Skip to content
View devnishantt's full-sized avatar
⚡
Shipping backends. Try: open an issue titled GET /about on my profile repo
⚡
Shipping backends. Try: open an issue titled GET /about on my profile repo

Block or report devnishantt

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
devnishantt/README.md

Nishant, backend engineer in TypeScript, Node.js and Python. A terminal types whoami, lists my featured projects and shows how many CI pipelines are green.

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

0x01 this profile is an api: call it from the issues tab

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 /aboutWho I am, as JSON
GET /projectsEverything I'm building
GET /projects/ledgerlineOne project: the hard part, the stack and its live CI status
GET /ciEvery pipeline, read live from GitHub Actions
GET /nowStreak and contributions, computed when you ask
DELETE /403. This profile is append-only, like a good audit log
BREW /coffeeSee RFC 2324

Access log: the most recent requests made to this profile API, with caller, method, path, status code and how long the reply took.

Distributed trace of the most recent API request: issue event, Actions queue time, runner steps, the Python handler, each GitHub API call, and the commit that published this image.

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
Loading
  • 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 get 400, and writes get 403 or 405, with the reason in the body.
  • Source: scripts/profile_api.py · workflow: .github/workflows/profile-api.yml. Standard library only.

0x02 what i'm building: six backends, each with one hard problem

Ledgerline: financial reconciliation workspace built with React, Hono, Cloudflare D1 and Zod. Aftermark: evidence-driven incident response API built with Fastify, Bun, Zod and Cloudflare D1.
Pactrail: API contract checks, OpenAPI breaking-change detection and deterministic fixtures in TypeScript. Tracebench: local-first dataset contracts, profiling and drift reports in Python with DuckDB and Pydantic.
bank-management-system: banking REST API with a double-entry ledger, row-locked transfers and idempotency keys. Hospital-Management: hospital management API with JWT rotation, a Redis token blacklist and rate limiting.
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.

0x03 pipelines: latest main-branch run, every repo

The latest main-branch GitHub Actions run for each featured project, with its steps, duration and result.

Read straight from the GitHub Actions API every day. If a pipeline goes red, this board goes red with it.

0x04 vital signs: contributions as a monitor trace

My daily contributions over the last four weeks drawn as an ECG trace, with the 7-day total, current streak and busiest day.

0x05 how i build: invariants over features

How I build, rendered as a passing test run: money as integer minor units, revision claims for concurrency, approvals by someone other than the author, append-only hash-linked history, uncertainty reported instead of guessed, and CI on every push. Each line names the repositories that enforce it.

0x06 toolbox: what the above is made of

Tools I use: TypeScript, JavaScript, Node.js, Python, Express, Fastify, Hono, Bun, React, Zod, Prisma, PostgreSQL, Redis, Cloudflare, DuckDB, Pydantic, Vitest, Pytest, Docker, GitHub Actions, MySQL, MongoDB, Git and GitHub, plus the language split of my public repositories.

exit 0. Thanks for stopping by.

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)

Pinned Loading

  1. aftermark aftermark Public

    Evidence-driven incident response API: closures need two independent approvals of the current SHA-256 evidence manifest. Fastify, Bun, D1.

    TypeScript

  2. ledgerline ledgerline Public

    Evidence-led financial reconciliation: exact minor-unit money, reviewer-gated matches and a hash-linked audit trail. React, Hono, Cloudflare D1.

    TypeScript

  3. Pactrail Pactrail Public

    API contract checks: OpenAPI payload validation, conservative breaking-change detection and deterministic fixtures. TypeScript library + CLI.

    TypeScript

  4. tracebench tracebench Public

    Local-first dataset contracts, profiling and reproducible drift reports for CSV, JSONL and Parquet. Python, DuckDB, Pydantic.

    Python