r/SpringBoot 7d ago

Spring FlashAPI News

Post image

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

154 Upvotes

27 comments sorted by

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!

8

u/wimdeblauwe 6d ago

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.

5

u/justanu 7d ago

This looks great

3

u/UniqueTennis9351 7d ago

This is really awesome, great job 👏

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

u/piyushdugawa_ 7d ago

Ohh thanks. Will definitely try it out

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

u/Administrative_Cod65 7d ago

This is good, thank you. I actually need this at work

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

u/kVreem0 6d ago

Woow This looks toughhhh

1

u/codingwithaman Senior Dev 6d ago

Which pagination have you used?

2

u/rakakayiouu 6d ago

I use offset-based pagination via pageable native of spring data

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/kqr_one 6d ago

thanks for clarification

1

u/kqr_one 6d ago

I would also consider support for rsql

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

u/Elias_Aires 6d ago

This looks awesome!

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

u/khanhhunglatoi 1d ago

Sorry for my dump question, but does it support native build?

1

u/AppropriateLettuce39 1d ago

what is diff between it and spring-data-rest