Implement self-hosted document scanner and media processing tools as an alternative to CamScanner/ilovepdf without third-party uploads. Backend: Rust Axum gateway + worker pool with NATS JetStream queue Frontend: Next.js 16 + shadcn/ui + Tailwind v4 + Framer Motion Pipeline: Canny edge detection -> DLT homography warp -> Sauvola binarization -> Hough deskew -> Tesseract OCR -> searchable PDF Phase 1 (MVP) delivers: - Document scanner with perspective correction and OCR - Image compress/resize/convert tools - PDF merge/split/compress tools - Real-time WebSocket progress updates - Rate limiting, auto-cleanup, Prometheus metrics - Full CI/CD pipeline with Docker multi-stage build Co-Authored-By: Kilo <kilo@kilo.ai>
63 lines
1.6 KiB
YAML
63 lines
1.6 KiB
YAML
http:
|
|
routers:
|
|
# ── Hub (Portfolio SPA) ──
|
|
hub:
|
|
rule: 'Host(`asepharyana.my.id`) || Host(`www.asepharyana.my.id`) || Host(`asepharyana.web.id`) || Host(`www.asepharyana.web.id`)'
|
|
entryPoints:
|
|
- websecure
|
|
tls: {}
|
|
middlewares:
|
|
- common-chain@file
|
|
service: hub-service
|
|
|
|
# ── Scraper API ──
|
|
scraper:
|
|
rule: 'Host(`scraper.asepharyana.my.id`) || Host(`api.asepharyana.my.id`) || Host(`scraper.asepharyana.web.id`) || Host(`api.asepharyana.web.id`)'
|
|
entryPoints:
|
|
- websecure
|
|
tls: {}
|
|
middlewares:
|
|
- common-chain@file
|
|
service: scraper-service
|
|
|
|
# ── Tools (Document Scanner & Media Processing) ──
|
|
tools:
|
|
rule: 'Host(`tools.asepharyana.my.id`) || Host(`tools.asepharyana.web.id`)'
|
|
entryPoints:
|
|
- websecure
|
|
tls: {}
|
|
middlewares:
|
|
- common-chain@file
|
|
service: tools-service
|
|
|
|
# ── Jaeger UI ──
|
|
jaeger:
|
|
rule: 'Host(`jaeger.asepharyana.my.id`) || Host(`jaeger.asepharyana.web.id`)'
|
|
entryPoints:
|
|
- websecure
|
|
tls: {}
|
|
middlewares:
|
|
- common-chain@file
|
|
service: jaeger-service
|
|
|
|
services:
|
|
hub-service:
|
|
loadBalancer:
|
|
servers:
|
|
- url: 'http://hub:3000'
|
|
|
|
scraper-service:
|
|
loadBalancer:
|
|
servers:
|
|
- url: 'http://scraper-api:4091'
|
|
|
|
tools-service:
|
|
loadBalancer:
|
|
servers:
|
|
- url: 'http://tools:3001'
|
|
|
|
jaeger-service:
|
|
loadBalancer:
|
|
servers:
|
|
- url: 'http://jaeger:16686'
|