Skip to content

api-observability-platform/proxy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

83 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API Observability Platform

User-centric HTTP reverse proxy with logging, analytics, and multi-channel alerts — built as a Bachelor's thesis project at Ukrainian Catholic University.

Put the proxy between your client and any HTTP API. Get a public URL, full request/response capture, latency and error metrics, and alerts in Telegram, Slack, or emailll — without changing the upstream service.

Featuress

  • Reverse proxy with unique slug URL per endpoint (/r/{slug} or {slug}.domain)
  • Multi-tenant — every user owns their endpoints, logs, alert rules, and integrations
  • Full request/response logging with sensitive header masking
  • Analytics — summary, time-series (date_trunc buckets), method/status breakdowns
  • Alerts — Telegram, Slack, email; declarative rules; Slack interactive Mute 1h
  • Rate limiting — sliding window on Redis sorted sets with in-memory fallback
  • Transform pipelineREWRITE_PATH, ADD_HEADER, REMOVE_HEADER, SET_BODY
  • SSE streaming for AI / chat APIs (chunk-by-chunk, no buffering)
  • Auth — JWT access + refresh cookie, email OTP verification, bcrypt
  • Scheduled digests — daily / weekly reports through any channel

Stack

  • Backend: NestJS, Prisma, PostgreSQL, Redis
  • Frontend: React 19, Vite, TanStack Query, Tailwind, Recharts
  • Shared: TypeScript monorepo (libs/shared for DTOs)
  • Deploy: Docker Compose (local / stage), AWS EC2

Quick start

Requirements: Node 22.22.0, npm 10.9.4, Docker.

# 1. Install
npm ci

# 2. Bring up PostgreSQL + Redis locally
npm run docker:local:up

# 3. Run migrations
npm run prisma:migrate -w apps/backend

# 4. Start backend (port 3000)
npm run start:dev -w apps/backend

# 5. Start frontend (port 5173)
npm run dev -w apps/web

Open http://localhost:5173 → register → verify email → create your first endpoint.

Proxy URL format:

http://localhost:3000/r/{slug}

Project structure

apps/
  backend/      NestJS API + proxy middleware
  web/          React dashboard
libs/
  shared/       Shared DTO types
docs/           Thesis presentation, assets
scripts/        Utilities (figure extraction, etc.)
docker-compose.local.yml   Local dev stack
docker-compose.stage.yml   Staging build with API + Web + data

Common scripts

npm run docker:local:up        # PostgreSQL + Redis + RedisInsight
npm run docker:stage:up        # Full app + data on .env.stage
npm run lint:check             # Biome lint
npm run lint:format:fix        # Biome format

Documentation

  • Full thesis: Bachelor Kutsenko Maksym.pdf
  • Presentation script: docs/bachelor-defense-presentation.md
  • Benchmark figures: docs/presentation-assets/figures-clean/

Author

Maksym Kutsenko · UCU, Faculty of Applied Sciences, 2026
Supervisor: Dmytro Pryimak, Senior Data Engineer, MEGOGO Ukraine

Licensei

ISC

Contributors

Languages