Enterprise-grade Java backend with Angular frontend for banking, fintech, and regulated industries.
- Backend: Spring Boot 3.4 / Java 24 / Gradle 8.14
- Frontend: Angular 19 / TypeScript / Standalone Components
- Database: PostgreSQL 16 (Flyway migrations)
- Cache/Sessions: Redis 7
- Auth: Session-based (httpOnly cookies, Spring Security)
- Permissions: Group-based (
@PreAuthorize) - CI: GitHub Actions
- Session-based authentication with group-based permissions
- Items + Categories CRUD with soft deletes and audit trails
- Forms engine (JSON schema, dynamic rendering, validation)
- Workflow engine (state machine, transitions, audit log)
- Boilerworks dark admin theme
- Docker Compose for full-stack development
- JUnit 5 + Karma test suites
- Java 24+
- Node.js 22+
- Docker
# Start infrastructure
make dev
# Run backend (separate terminal)
cd backend && ./gradlew bootRun
# Run frontend (separate terminal)
cd frontend && npx ng serve
# Run all tests
make test# Full stack
cd docker && docker compose up -d --build
# API: http://localhost:8000
# UI: http://localhost:3000- Email:
admin@boilerworks.dev - Password:
admin123
backend/
src/main/java/com/boilerworks/api/
config/ # Spring Security, JPA auditing, Redis session
model/ # JPA entities (AuditableEntity, Item, Category, User, Group, Permission)
repository/ # Spring Data JPA repositories
service/ # Business logic
controller/ # REST controllers
dto/ # Request/response DTOs with ApiResponse<T> wrapper
security/ # UserDetails, UserDetailsService, auth entry point
forms/ # Forms engine (model, service, controller)
workflow/ # Workflow engine (model, service, controller)
src/main/resources/
db/migration/ # Flyway SQL migrations
application.yaml
src/test/ # JUnit 5 tests
frontend/
src/app/
core/ # Services, guards, interceptors, models
shared/ # Reusable components (sidebar, header, dynamic form)
features/ # Feature modules (auth, dashboard, items, categories, forms, workflows)
docker/
docker-compose.yaml
Dockerfile.api
Dockerfile.ui
nginx.conf
| Method | Path | Description | Permission |
|---|---|---|---|
| POST | /api/auth/login |
Login | Public |
| GET | /api/auth/me |
Current user | Authenticated |
| POST | /api/auth/logout |
Logout | Authenticated |
| GET/POST | /api/items |
List/Create items | item.view / item.add |
| GET/PUT/DELETE | /api/items/{id} |
Get/Update/Delete item | item.view/change/delete |
| GET/POST | /api/categories |
List/Create categories | category.view / category.add |
| GET/PUT/DELETE | /api/categories/{id} |
Get/Update/Delete category | category.view/change/delete |
| GET/POST | /api/forms |
List/Create forms | form.view / form.add |
| POST | /api/forms/{id}/publish |
Publish form | form.change |
| POST | /api/forms/{id}/submit |
Submit form | form.submit |
| GET/POST | /api/workflows |
List/Create workflows | workflow.view / workflow.add |
| POST | /api/workflows/{id}/start |
Start workflow instance | workflow.execute |
| POST | /api/workflows/instances/{id}/transition |
Transition workflow | workflow.execute |
See CONTRIBUTING.md and the stack primer.
Boilerworks is a CONFLICT brand. CONFLICT is a registered trademark of CONFLICT LLC.