Everything to decide

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.

Hand-coded vs low-code vs CrudCraft
AspectHand-codedLow-codeCrudCraft
Delivery speedSlow startInstant scaffoldingMinutes to first CRUD
FlexibilityUnlimitedConstrainedHigh—it's your code
PerformanceGoodVariablePredictable, minimal reflection
TestabilityStandard JUnitOften difficultStandard JUnit
Lock-inNoneVendor lockNone
MaintainabilityHigh effortTied to vendorReadable Spring code
Total costHigh engineering costOngoing licenceLow 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

  1. Install the annotation processor & starter.
  2. Annotate an entity with @CrudCrafted (+ @Dto, @Request, @Searchable where needed).
  3. Build once—controllers, services, DTOs and mappers appear.
  4. Enable endpoint templates and security policies per entity.
  5. 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.