This repository contains one project exactly as it came out of springboot-generator.com — a full-stack Spring Boot + Angular application, generated on 2026-09-21 with every paid option switched on. The point of the repo is to let you read the generated code before you decide whether the tool is worth your time.
Nothing under project-tracker/ has been edited. Not a line.
The ZIP that was downloaded has the SHA-256
023c4306bd13f713cddde6d9d425830d48741c19eb699361150f9c8645f5283b; unzipping it
gives you that directory byte for byte. Everything outside it (this README, the
license, the CI workflow, request.json) was added by hand.
The CI badge above is the same code being built on a GitHub runner: backend compiled,
unit and integration tests run (PostgreSQL through Testcontainers), Angular production
build. See .github/workflows/ci.yml.
Filled in the four-step wizard in about five minutes. The exact payload the wizard
sent is in request.json.
| Setting | Value |
|---|---|
| Build | Maven, Java 21, Spring Boot 4.1.1 (the version current on generation day) |
| Database | PostgreSQL |
| Frontend | Angular 21 |
| Options | Unit tests · Integration tests · Docker · Swagger · Spring profiles · Logger · Javadoc |
Schema — a small project-tracking domain, chosen to exercise both kinds of relation the tool supports:
| Entity | Columns |
|---|---|
Client |
id, name, email |
Project |
id, name, start_date, budget, client_id → Client |
Task |
id, title, done, due_date (nullable), project_id → Project |
Employee |
id, first_name, last_name, hired_at |
Role |
id, name |
Assignment |
N-ary association between Project, Employee and Role, plus its own assigned_at column |
Project → Client and Task → Project are ordinary many-to-one relations.
Assignment is the tool's N-ary association: you name the participating entities
and it produces the join entity, its repository, service, controller, DTO, mapper,
tests and Angular screens like any other entity — and lets you hang extra columns
on it.
Cost: 2 credits (the price of a full-stack project with paid options). A backend-only project with paid options is 1 credit; a project with no paid option (MySQL, Java 21, no extra) is free and needs no account. Credit packs and subscriptions are on the pricing page.
project-tracker/
├── README.md how to run the two halves together
├── resources/sql/script.sql DDL, applied automatically by docker compose
├── backend/ Spring Boot 4.1.1, Java 21 — 67 tests
│ ├── README.md endpoints, profiles, Swagger, Javadoc, tests
│ ├── Dockerfile, docker-compose.yml app + PostgreSQL 18, one command
│ └── src/main/java/…/ model · repository · service · mapper · dto · controller · exception
│ src/main/resources/ application.properties + dev (H2) and prod (PostgreSQL) profiles
│ src/test/java/…/ 6 service unit tests, 3 integration tests (Testcontainers)
└── frontend/ Angular 21 — one feature folder per entity
└── src/app/features/<entity>/ list · detail · create · edit components, model, service
Some things worth reading, because they are where generators usually cut corners:
model/Assignment.java— the N-ary join entity, three lazy@ManyToOneand its own column.mapper/ProjectMapper.java— MapStruct; theclientIdof the DTO is resolved into aClientthrough the client service, so an unknown id is a 404, not a constraint violation. The service's not-found paths are covered inProjectServiceTest.java.ClientIntegrationTest.java— full HTTP round-trips against a real PostgreSQL started by Testcontainers.controller/ControllerExceptionHandler.java— one error shape for 400/404/409.features/project/components/project-create/project-create.component.ts— the foreign key is a<select>populated from the API, not a raw number input.backend/docker-compose.yml— the database port is published at15432sodocker compose upworks on a laptop that already runs PostgreSQL.
These are defects or gaps of the generator as of 2026-09-21, visible in this very output. They are listed here rather than patched, because patching them would defeat the purpose of the repo.
- Integration tests are only generated for entities without a mandatory foreign
key.
Client,EmployeeandRoleget one;Project,TaskandAssignmentdo not. Their service layer is still unit-tested. DECIMALcolumns lose their scale. The wizard only asks for a size, sobudgetcame out asDECIMAL(65), which PostgreSQL reads asnumeric(65,0)— no decimals. Use it as a placeholder and set the scale yourself, or pickFLOAT.- Extra columns of an N-ary association are always nullable. The N-ary editor has
no not null toggle, so
assigned_atisNULL-able although it should not be. server.port=8080is hard-coded inapplication.propertiesand in the compose file.- On JVM exit after the integration tests, Surefire logs
Surefire is going to kill self fork JVMafter a 30-second wait. The build is green; it is a shutdown-hook delay from the connection pool, not a test failure.
When one of these gets fixed, the project will be regenerated and this list updated — the commit history of this repository doubles as a record of what changed in the generator's output.
Follow project-tracker/README.md: docker compose up
in backend/ brings up the API and its database, npm start in frontend/ serves
the Angular app on http://localhost:4200, Swagger UI is at
http://localhost:8080/swagger-ui.
The files added around the generated project are MIT-licensed, and so is the generated project itself: the terms of service state that you own what you generate. Do whatever you like with it.