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>
25 lines
530 B
Bash
25 lines
530 B
Bash
#!/bin/bash
|
|
# Tools Service Entrypoint
|
|
# Starts both the Gateway (Axum HTTP server) and Workers (NATS consumers)
|
|
|
|
set -e
|
|
|
|
echo "Starting tools-gateway..."
|
|
/app/gateway &
|
|
GATEWAY_PID=$!
|
|
|
|
sleep 1
|
|
|
|
echo "Starting tools-workers..."
|
|
/app/workers &
|
|
WORKER_PID=$!
|
|
|
|
# Handle graceful shutdown
|
|
trap "echo 'Shutting down...'; kill $GATEWAY_PID $WORKER_PID 2>/dev/null; exit 0" SIGINT SIGTERM
|
|
|
|
# Wait for either process to exit
|
|
wait -n $GATEWAY_PID $WORKER_PID
|
|
|
|
# If one exits, kill the other
|
|
kill $GATEWAY_PID $WORKER_PID 2>/dev/null
|
|
exit 1 |