You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
DocFlow is a Spring Boot backend for asynchronous document-processing jobs. It provides a production-shaped foundation for managing users, projects, API keys, and job queues.
What it does
Users register and log in (JWT authentication)
Users create projects to group their work
Projects generate API keys for programmatic access
Projects submit jobs that are queued for later processing
Jobs have controlled status transitions and full lifecycle tracking
Tech Stack
Layer
Technology
Language
Java 21
Framework
Spring Boot 3
Build
Maven
Database
PostgreSQL 16
ORM
Spring Data JPA / Hibernate
Security
Spring Security + JWT (jjwt)
Migrations
Flyway
Containers
Docker Compose
Validation
Bean Validation (jakarta)
Project Structure
src/main/java/com/docflow/
├── DocFlowApplication.java
├── audit/ # BaseEntity with timestamps
├── auth/ # Registration, login, JWT, Spring Security config
├── project/ # Project CRUD
├── apikey/ # API key generation and revocation
├── job/ # Job submission and lifecycle
└── common/ # Global exception handler, shared exceptions
Running locally with Docker Compose
Prerequisites: Docker & Docker Compose installed.
# 1. Clone the repository
git clone https://github.com/enlorik/doc-flow.git
cd doc-flow
# 2. Start all services (PostgreSQL + app) — the image is built automatically
docker-compose up --build
The API will be available at http://localhost:8080.
Running without Docker (requires local PostgreSQL)
# 1. Create the database
createdb docflow
# 2. Configure credentials (or export env vars)# DOCFLOW_JWT_SECRET is required — generate a random 32+ character string for local useexport SPRING_DATASOURCE_URL=jdbc:postgresql://localhost:5432/docflow
export SPRING_DATASOURCE_USERNAME=docflow
export SPRING_DATASOURCE_PASSWORD=docflow
export DOCFLOW_JWT_SECRET=your-256-bit-secret-key-here
# 3. Run
mvn spring-boot:run
Tests use an H2 in-memory database (Flyway disabled for tests).
About
DocFlow is a Spring Boot backend for asynchronous document-processing jobs. It provides a production-shaped foundation for managing users, projects, API keys, and job queues.