Case study · Experiment · Oct 2023

API Resume

My resume as a REST API: Postman-only, rate-limited, with a joke for anyone who POSTs.

Role
Solo
When
Oct 2023
Repo
JavaScript · ★ 0 · last push Oct 2023

01 The problem

A résumé is usually a PDF. As a small experiment, inspired by Eric Lake’s API résumé, I wanted mine to be something a developer could query.

02 What I built

Solo, in October 2023: a small Express app, with most of the interesting work in the middleware that decides who gets an answer.

03 Highlights

  • Endpoints for experience, projects, education and contact, a combined /api/resume, and a menu at /api.
  • Only answers Postman (other clients get a 403), rate-limits each IP per day (429), and meets any non-GET request with a joke 500.
  • Express and Mongoose on MongoDB, deployed to Vercel with Vercel Analytics.

04 Key decisions

  1. Middleware as the personality

    The client check, the per-IP daily limit and the joke for non-GET requests all run ahead of the routes, so each section’s route stays a plain read.

  2. Classic layers

    Routes, controllers and Mongoose models per résumé section, one file each.

05 Architecture

  1. 01PostmanThe only client allowed
  2. 02MiddlewareClient check, daily limit, easter egg
  3. 03Routesexperience, projects, education…
  4. 04ControllersOne per section
  5. 05MongoDBMongoose models

One Express app; each request passes the middleware before reaching a section’s route.

06 Stack

Node.js
Express
MongoDB
Mongoose
Vercel

07 Links & sources

The project’s links and the public sources this write-up draws on.

08 Also on GitHub

All repositories on GitHub →