FH-Technikum Wien SWEN3 Project - Paperless Clone
This project is a document management system built with a microservices architecture:
- WebUI – React + Vite frontend served by Nginx (includes reverse proxy)
- REST API – Spring Boot backend serving as the central access point
- OCR Worker – Python-based worker for optical character recognition
- GenAI Worker – Python-based worker for AI-powered document summarization
- Batch Processor – Processes access logs in batches
- RabbitMQ – Message queue for worker communication
- MinIO – S3-compatible object storage for document files
- PostgreSQL – Relational database for metadata (accessed only by REST API)
- Elasticsearch – Search index for document metadata
- Testing: Unit and integration tests for REST API and Batch Processor
- CI/CD: GitHub Actions pipeline for automated testing and deployment
- Linting:
- WebUI: ESLint
- REST API & Batch Processor: Checkstyle & SpotBugs
- Workers: mypy & ruff
To start all components in detached mode:
docker compose up -dThis will start:
webui(accessible at http://localhost:80)rest-api(accessible at http://localhost:8080)ocr-workergenai-workerbatch-processor- Supporting infrastructure (RabbitMQ, MinIO, PostgreSQL, Elasticsearch)
docker compose down# All services
docker compose logs -f
# Specific service
docker compose logs -f rest-apiIf you've made changes to the code:
docker compose up -d --build- Docker Desktop (must be running)
- Node.js 20+ (for local WebUI development)
- Java 21+ (for local REST API development)
- Python 3.11+ (for local worker development)
cd webui
bun install
bun run devcd rest-api
./mvnw spring-boot:runcd workers
pip install -e ./shared
cd ocr-worker
pip install -r requirements.txt
python -m workers.ocr_worker.main- After code changes: Rebuild Dockerfile
- To start services: Run
docker compose up -d(Docker Desktop must be running) - To view logs: Run
docker compose logs -f [service-name] - To stop services: Run
docker compose down