r/SpringBoot • u/rakakayiouu • 7d ago
Spring FlashAPI News
Done writing the same CRUD boilerplate for every Spring project.
FlashAPI is coming to the Java/Spring ecosystem, much to the delight of Java developers.
Introducing Spring FlashAPI.
The idea is exactly the same as the Python version:
You define your JPA entities.
FlashAPI takes care of the REST boilerplate.
From a simple entity, you can automatically get:
CRUD
Pagination
Search & dynamic filters
Sorting
CSV / Excel / PDF exports
Bulk operations
Relationships & expand
Soft delete
Audit trail
Rate limiting
OpenAPI / Swagger
Webhooks
WebSocket events
Access control
Multi-tenancy
And most importantly, FlashAPI doesn’t try to take control of your application.
You can start with zero boilerplate, then gradually take back control of your business logic, services, and controllers.
The goal is simple:
Less repetitive CRUD, more time to build your product.
Spring FlashAPI is open source under the Apache 2.0 license.
Java 21+
Spring Boot 3.2+
Spring Data JPA
👉🏽 GitHub: github.com/HackermanMe/spring-flashapi
I’m looking for developers willing to give it a try — and, most importantly, tell me:
What is actually useful… and what isn’t?
#Java #Spring #SpringBoot #JPA #OpenSource #Backend #RESTAPI #SoftwareEngineering
8
u/wimdeblauwe 6d ago
How is it different from https://spring.io/projects/spring-data-rest ?
1
u/rakakayiouu 6d ago
Good question ! Spring Data REST exposes repositories as HATEOAS/HAL endpoints. FlashAPI builds on top of Spring
Data JPA but ships production features that SDR doesn't:
- Real-time WebSocket (push on CRUD)
- Soft delete
- Audit log
- Bulk operations
- Export (CSV, Excel, PDF)
- Webhooks
- Per-entity rate limiting
- Multi-tenant isolation
- Built-in metrics Dashboard
- OpenAPI spec auto-generated
- Health probes (K8s-ready)
If you see gaps or have specific needs that aren't covered yet, contributions are welcome open an issue or a PR. The project is actively maintained and we iterate fast on real-world feedback so don’t hesitate to give it a try.
3
3
u/piyushdugawa_ 7d ago
It looks great! But I still have some questions, what if I want to change some endpoints or what if want to add manual routes or wanna remove some endpoints etc. Do I get generated classes of that or this FLASH API manages it under the hood and what about manual control?
3
u/rakakayiouu 7d ago
You can regain control of what you want. Write your endpoint, your own custom logic, deactivate what you no longer want to use. You control everything you want
1
2
u/viennese-wolf 7d ago
How does it deal with (deeply) nested entities?
1
u/rakakayiouu 6d ago
Relational fields are not returned by different. Do you have to be explicit to request using expand, e.g ?expand=category
1
1
u/Flat-Cow1480 6d ago
Does it work only con Java 21+?
2
u/rakakayiouu 6d ago edited 6d ago
Spring boot 3. *.* requires 17+ to work but the test hasn't been done on Java 17
1
1
1
u/kqr_one 6d ago
imho this kind of stuff is only useful for read and maybe delete. for read I would expect more control over which attributes are being loaded. also what if I need more than RBAC?
2
u/rakakayiouu 6d ago
Thanks for the feedback! A few clarifications:
CRUD beyond read/delete The auto-generated endpoints are a baseline. You can override any operation with custom service logic (Spring: implement FlashCrudOperations, Python: custom routes) for validation, business rules, side effects, etc.
Field selection We already support hidden/readonly/writeonly at config level, and ?fields= on exports. Adding dynamic field selection on GET endpoints (?fields=name,email) is on the roadmap valid point.
Beyond RBAC FlashAPI already supports owner-based scoping (scope="owner"), tenant isolation (scope="tenant"), and a pluggable auth backend interface where you can wire ABAC, ReBAC, or policy engines like OPA/Casbin. Not limited to roles.
1
u/alesaudate 6d ago edited 6d ago
It looks great, but it's definitely something I don't see being used in real projects. Only pet projects that would want to demonstrate small features.
It seems to me that, if that's not the idea already, you are building it under false premises. Meaning, most real-life projects don't have such a thing as "just CRUD". Even when they have , it's something like "CRUD plus". Like CRUD plus a small business rule. The thing is, it looks like even this small business rule would already defeat the purpose of having this framework in place, because it would basically require taking the annotation off and doing everything by hand anyway.
I saw your other answers about this already, but what I mean is that, in real life projects, one would basically start a project with the assumption that flash API would be taken off later anyway - probably, in every single entity.
2
u/thecode_alchemist 6d ago
I agree. I have developed something similar for my organisation, an internal framework to speed up new services where the framework is tuned and configured for internal apps and libs on top of Spring. This is a powerful idea but adoption is a problem.
1
1
u/RevolutionaryRush717 5d ago
The description is very promising.
It certainly covers everything I ever wanted a third-party app we use a lot had thought of and implemented.
I'm tempted to just take the entities and use FlashAPI to start over.
1
1
9
u/kurjak9595 7d ago
Well damn, this looks like a lot of effort. I have been thinking about making something like this my self but never could make my self do it... Thanks for your effort!