Topics
Each issue takes a single core topic and weaves Erupt's capabilities — scattered across source code, annotations, and modules — into a readable, hands-on, competitor-comparable narrative.
Cadence: roughly one issue per month.

Each issue debuts here, along with release notes, source-code deep dives, and community case studies. Reply "加群" to join the user group, or "入门" for a 5-minute getting-started guide.
Archive
What you write in an annotation isn't a string — it's code with syntax
The favorite rebuttal against annotation-based low-code is "annotations just turn SQL into unhighlighted dumb strings." Erupt bets the reverse — it uses JetBrains @Language to inject 10 embedded languages (hql/sql/VTL/markdown/java…) into its own annotation attributes, so a single sql="..." gets highlighting, completion, and error checking in IntelliJ; @Comment then makes the same attribute self-describing for both humans and AI.
ByteBuddy × JsonAnnotationProxy × @EruptDataProcessor: We built a designer, but it compiles into a real @Erupt class
Nearly every online form designer stores the design as a JSON DSL and renders it at runtime through an interpreter. erupt-designer bets the opposite way — at runtime the design is compiled by ByteBuddy into a real @Erupt class, reusing the exact same pipeline as a hand-written entity: Gson, reflection, validation, DataProxy, @EruptFlow. No restart, no generated code, no interpreter.
@Power × SHA512+Salt × PowerHandler: in low-code, "security" shouldn't be the column you fill in right before launch
For most domestic admin frameworks, security is a "configure it before launch" checklist — RBAC, button permissions, password encryption are all to-do items. Erupt bets the reverse: security is the default value of an annotation. @Power defaults export/importable to false, PowerHandler enforces at runtime, and passwords migrate from MD5 to SHA-512+Salt automatically on the next change — no downtime, no rehash script.
Annotation × Spring × Git: the most controllable low-code platform — no verb called "generate"
Chinese low-code = drag-and-drop canvases or on-platform Node.js editors, all built for business operators. Erupt bets on the opposite lane — low-code for backend engineers: annotations are the config, extension points are Spring beans, the source of truth lives in Git, and the framework writes zero bytes into your source tree. 17 LLMs + A2A + memory + @AiToolbox ship as default dependencies, not AI add-ons.
Let the BI dashboard answer "why did it change" — the new shape of Erupt Cube × LLM
Traditional BI tools give you the "what"; Erupt Cube × LLM gives you the "why". The @EruptCube annotation defines a semantic layer, and the LLM grows three eyes alongside the domain model (cubeList → cubeMetadata → cubeQuery): it writes the SQL, renders the chart, and produces the attribution. This issue stitches together the AI Harness from #01 and the "annotation-first" narrative from #03.
While MyBatis-Plus still battles SQL DSLs, Erupt wraps a whole admin infrastructure around JPA
In Erupt, a single @Entity grows ten identities — UI, RBAC, REST API, auto DDL, i18n, DataProxy, lambda queries, AI Agent, workflow engine, cross-service aggregation. The annotation is the config surface; metadata = UI = API = LLM Tool.
@Erupt × DataProxy × Handler: why we did not go with a drag-and-drop canvas
While DingTalk Yida, Jiandao Cloud, and JeecgBoot all bet on "canvas" or "canvas-generates-code", Erupt still bets on the source code itself — a single @Erupt annotation, a DataProxy<T> extension point, and a set of Handler interfaces. This issue explains why.
50+ LLMs × A2A × Memory: how Erupt's AI Harness came to life
17 providers, the A2A cross-agent protocol, cross-session Memory, plus a Tool / MCP call you can wire up with a single Java annotation — why we believe a Java backend shouldn't be locked into the "AI app generator" narrative of products like ToolJet.
Want to submit a topic?
A topic is not a changelog or a module manual — it tells the story of how a single idea takes shape inside Erupt. If your Erupt journey carved out a unique path, propose it on GitHub Discussions; accepted ideas will be published as a Topic.