The Arsenal.
A production stack shaped around backend systems, self-hosted infrastructure, and applied AI work.
13
Docker containers
$0/mo
Cloud spend
80%
Test coverage
Python · TypeScript · SQL
Python for backend services, AI pipelines, and data work. TypeScript for serverless edge functions and frontends.
Django · Django REST Framework · FastAPI · SQLModel · Deno Edge Functions
Docker · Docker Compose · Ubuntu Server · Cloudflare Tunnel · Cloudflare Access · Tailscale · Nginx · GitHub Actions
13-container Supabase stack on dedicated hardware. Zero exposed ports. WireGuard for admin. $0/mo cloud spend.
PostgreSQL · Redis · pgvector · Qdrant
Relational, cache, and vector — all self-hosted.
RAG pipelines (pgvector, Qdrant) · LLM inference (OpenAI, Anthropic, Gemini) · Streaming chat · PyTorch · DINOv2 · Stable-Baselines3 · MediaPipe
GitHub Actions CI · 80% test coverage · Automated PostgreSQL backups
[No Grafana/Prometheus in production yet.]
React · Next.js · Tailwind CSS
Running in Production
Two public FastAPI services run on UN1290 behind Cloudflare Tunnel.
| Service | URL | What it does | Repo |
|---|---|---|---|
| Fashion API | fashion-api.obadaalsehli.com | Multi-head fashion attribute inference with DINOv2 ViT-B/14 and 4 heads. | |
| Squat Counter API | squat-api.obadaalsehli.com | MP4 upload to rep count and form metrics with MediaPipe Pose Landmarker. 50 MB upload limit. |
Deployment baseline
- ▸GHCR images only; no source builds on the server.
- ▸Host ports bind to 127.0.0.1; Cloudflare Tunnel is the only public ingress.
- ▸Containers run with read-only root filesystem and dropped Linux capabilities.
- ▸Model artifacts mount read-only from /models/.../current.
- ▸Cloudflare WAF rate limit: 10 req/min per IP on demo hostnames.