How rk936503/url-shortener-api works
This is an Express URL-shortener API: users register or log in to obtain a JWT, then create, list, delete, and resolve short links. The API also exposes health, version, and Prometheus metrics endpoints. The graph follows the sampled request handlers and middleware; monitoring connections and dashboard capabilities are included where the README documents them, while deployment and CI infrastructure are omitted.
Main entry points: index.js Express app · user.routes.js User routes · db/index.js Drizzle client · url.routes.js URL routes
Components 20
REST API
- Express app
index.js - User routes
routes/user.routes.js - URL routes
routes/url.routes.js - Request schemas
validation/request.validation.js
Identity
- Auth middleware
middlewares/auth.middleware.js - User lookup
services/user.service.js - Password hashing
utils/hash.js - JWT tokens
utils/token.js - Token schema
validation/token.validation.js
Persistence
- Drizzle client
db/index.js - User schema
models/user.model.js - URL schema
models/url.model.js - PostgreSQL
Observability
- Request logging
middlewares/logging.middleware.js - HTTP metrics
middlewares/metrics.middleware.js - Metrics registry
utils/metrics.js - Prometheus
prometheus.yml - Grafana dashboards
grafana/provisioning/dashboards/json/url-shortener.json - Prometheus datasource
grafana/provisioning/datasources/prometheus.yml
Other components
- API user
Connections 25
- API user → Express app: sends requests
- Express app → User routes: mounts /user
- Express app → URL routes: mounts routes
- Express app → Auth middleware: runs authentication
- Express app → HTTP metrics: runs metrics
- Express app → Request logging: runs logging
- User routes → Request schemas: validates input
- URL routes → Request schemas: validates input
- User routes → User lookup: looks up user
- User routes → Password hashing: hashes password
- User routes → JWT tokens: creates token
- User routes → Drizzle client: writes user
- URL routes → Drizzle client: reads and writes URLs
- URL routes → Auth middleware: guards operations
- Auth middleware → JWT tokens: validates token
- User lookup → Drizzle client: queries users
- JWT tokens → Token schema: validates claims
- Drizzle client → User schema: uses schema
- Drizzle client → URL schema: uses schema
- Drizzle client → PostgreSQL: queries
- HTTP metrics → Metrics registry: records metrics
- Express app → Metrics registry: serves /metrics
- Prometheus → Express app: scrapes metrics
- Grafana dashboards → Prometheus datasource: uses datasource
- Prometheus datasource → Prometheus: queries metrics