This project is an educational showcase of HTTP behavior using small, focused stations. It intentionally avoids heavy frontend frameworks and keeps styling minimal so protocol mechanics are the focus.
npm run devOpen: http://localhost:3000
src/routes/stations/*: station page route pluginssrc/routes/api/*: API route plugins for protocol behaviorssrc/public/*: static HTML/CSS/JS assets served under/public/*src/plugins/static.ts: static asset plugin registration
GET /stations/forms- HTML GET/POST form submissionGET /stations/fetch-json-fetch()JSON POSTGET /stations/rest-put- idempotentPUTmini REST APIGET /stations/cache-Cache-Controlresponse policiesGET /stations/chunked- chunked transfer streamGET /stations/sse- Server-Sent Events (text/event-stream)GET /stations/session-auth- session cookie auth + CSRF protectionGET /stations/jwt-auth- JWT access token + rotating refresh tokenGET /stations/conditional-ETag/If-None-Match(304)GET /stations/cors- CORS preflight (OPTIONS) and origin checks
POST /api/fetch-json/echoPUT|GET|DELETE /api/todos/:idGET /api/cache/public|private|no-storeGET /api/chunked/timeGET /api/sse/clockPOST /api/session/loginGET /api/session/mePOST /api/session/protected-actionPOST /api/session/logoutPOST /api/jwt/loginGET /api/jwt/mePOST /api/jwt/refreshPOST /api/jwt/logoutGET /api/conditional/resourceOPTIONS|POST /api/cors/echo
curl -i http://localhost:3000/api/cache/public
curl -i -X PUT http://localhost:3000/api/todos/42 -H 'content-type: application/json' -d '{"title":"Read RFC 9110","done":false}'
curl -i http://localhost:3000/api/chunked/time?count=3\&intervalMs=200
curl -i http://localhost:3000/api/sse/clock?count=3\&intervalMs=200- Data is in-memory only; restart clears todos/sessions/tokens.
- JWT signing/verification uses the
jsonwebtokenpackage.