Why CrudCraft
Ship CRUD fast without trading away control. CrudCraft generates the repetitive layers at compile time, so you keep readable Spring code, normal debugging, and predictable performance—minus the boilerplate.
Speed, day one
Minutes to a working CRUD surface with controllers, services, repos, DTOs and mappers.
Your code, your rules
Generated code lives in your repo. Edit stubs, keep patterns, adopt gradually—no lock-in.
Predictable runtime
Compile-time generation + MapStruct mapping keep reflection off hot paths and startup snappy.
Comparison
CrudCraft sits between hand-coded projects and low-code platforms. Here’s how the trade-offs line up.
Aspect | Hand-coded | Low-code | CrudCraft |
---|---|---|---|
Delivery speed | Slow start | Instant scaffolding | Minutes to first CRUD |
Flexibility | Unlimited | Constrained | High—it's your code |
Performance | Good | Variable | Predictable, minimal reflection |
Testability | Standard JUnit | Often difficult | Standard JUnit |
Lock-in | None | Vendor lock | None |
Maintainability | High effort | Tied to vendor | Readable Spring code |
Total cost | High engineering cost | Ongoing licence | Low incremental cost |
Why it works
Compile-time, not magic
CrudCraft is an annotation processor. It writes plain Java for controllers, services, repos and DTOs. You fail at build time, not at runtime.
Familiar Spring everywhere
The output follows standard Spring idioms, so onboarding is trivial. You debug, profile and test like any other Spring app.
Typed mapping with MapStruct
Mappers are compile-time generated—no runtime reflection mappers on hot paths. Performance stays predictable.
Explicit search
Specification-first search with a small DSL for fields you mark @Searchable
. Queries are clear and composable.
Ownership without the busywork
What you skip
- Writing controller/service/repository/DTO boilerplate
- Copy-pasting mapping code and validation annotations
- Debugging runtime reflection mappers
What you keep
- Full code ownership in your repo
- Plain Spring idioms and normal debugging
- Fine-grained endpoint, row- and field-level security
Adopt in minutes—no lock-in
No lock-in
The output is readable Spring code committed to your repo. Turn off generation tomorrow and your project still builds.
Five-minute adoption
- Install the annotation processor & starter.
- Annotate an entity with
@CrudCrafted
(+@Dto
,@Request
,@Searchable
where needed). - Build once—controllers, services, DTOs and mappers appear.
- Enable endpoint templates and security policies per entity.
- Commit generated code; extend editable stubs where needed.
Is CrudCraft a fit for your team?
Great fit when…
- You ship many data-centric endpoints and consistency matters.
- You want predictable performance (minimal reflection, typed mappers).
- Teams value code ownership and standard Spring patterns.
- Security needs differ per entity (endpoint, row and field level).
Probably not needed when…
- Your service is mostly bespoke logic with little CRUD.
- You already use a full BaaS/low-code platform for everything.
- You prefer runtime meta-frameworks over generated code.