Skip to content

Repository files navigation

FlowForge Java Platform

Maven CI Java 21 Spring Boot License: MIT

FlowForge is a compact workflow platform with a Spring Boot REST API, a responsive browser client and PostgreSQL persistence. It demonstrates a complete request path from accessible UI to validation, business logic, transactions and database storage.

FlowForge dashboard with seeded demo work items

Features

  • Create, view, filter, update and delete work items
  • Track owner, priority and workflow status
  • Validate requests and return consistent API errors
  • Persist production data in PostgreSQL through Spring Data JPA
  • Explore the API through generated OpenAPI / Swagger documentation
  • Monitor application health through Spring Boot Actuator
  • Run an isolated demo with H2 and realistic seed data
  • Verify the application with MockMvc integration tests and Maven CI

Interactive demo

The demo profile needs no database setup. It starts with four sample work items and stores changes in an in-memory H2 database that resets when the app stops.

With Maven and Java 21:

mvn spring-boot:run -Dspring-boot.run.profiles=demo

Or with Docker:

docker compose -f compose.demo.yml up --build

Open http://localhost:8080. The API documentation is available at http://localhost:8080/swagger-ui.html.

Production-style local stack

Start the application together with PostgreSQL:

docker compose up --build

The compose configuration waits for PostgreSQL to become healthy before starting FlowForge.

API

Method Endpoint Purpose
POST /api/work-items Create a work item
GET /api/work-items List all work items
GET /api/work-items?status=DONE Filter by status
GET /api/work-items/{id} Get one work item
PUT /api/work-items/{id} Replace a work item
DELETE /api/work-items/{id} Delete a work item

Architecture

flowchart TD
    UI["Browser client"] --> API["Spring Boot REST API"]
    API --> SVC["Service layer"]
    SVC --> JPA["Spring Data JPA"]
    JPA --> DB["PostgreSQL / H2 demo"]
Loading

The backend uses controller, service, repository and domain layers. The browser client is served by Spring Boot, so UI and API share the same origin.

Stack

  • Java 21 and Spring Boot 3.5
  • Spring Web, Spring Data JPA, Bean Validation and Actuator
  • PostgreSQL for the standard runtime; H2 for tests and demo mode
  • OpenAPI / Swagger UI with springdoc-openapi
  • HTML, CSS and vanilla JavaScript
  • Maven, Docker and Docker Compose
  • JUnit 5 and MockMvc
  • GitHub Actions

Configuration

The default profile reads these environment variables:

Variable Default Description
JDBC_DATABASE_URL jdbc:postgresql://localhost:5432/flowforge JDBC connection URL
DB_USER flowforge Database user
DB_PASSWORD flowforge Database password
PORT 8080 HTTP port

Test and build

mvn --batch-mode --no-transfer-progress clean verify

The GitHub Actions workflow runs the same Maven lifecycle on every push and pull request to main, caches dependencies, and uploads both test reports and the executable JAR.

Project structure

.
├── .github/workflows/maven.yml
├── android-client/
├── docs/
├── src/main/java/
├── src/main/resources/static/
├── src/test/
├── compose.demo.yml
├── docker-compose.yml
├── Dockerfile
└── pom.xml

License

Released under the MIT License.

Built by Erica Nordlöf.

About

Full-stack Java portfolio platform with Spring Boot, REST API, PostgreSQL, JavaScript frontend, automated tests, Docker and CI.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages