Konifer provides a zero-state integration where the path is the key. No need to create a "profile_content_id" (although you can still do it that way), your client can just reference /users/123/profile. It has a powerful Path Configuration (in the docs) that lets you configure what each path can do, the variants it can generate, when they should be generated (on-demand or eagerly), LQIPs, allowed content types, redirect URL templating, cache control, and more.
It supports most major image formats with plans for SVG, TIFF and BMP (legacy format but I think libvips bundles the encoder for it).
I built the API and configuration to enable someone to mold Konifer to fit their domain model and query patterns (see query selectors in the docs).
Both the code and API is designed to be what Spring Boot is not. It's explicit and assumes nothing. I try to avoid meta programming and reflection. Any annotations I use are backed by a compiler plugin. I've marinated in the waters of Spring for way too long and I had to get out and see what Kotlin is like when you eschew Java conventions. Perhaps I'm just a child revolting and the adults in the room are chuckling at my petulence.
This is definitely pre 1.0. I have a large roadmap but unfortunately it's on paper at the moment. I'll work to get it into GH soon. I am currently working on some performance improvements that i hope to have done in the next week. I'm also going to get an ARM image built soon too.