A better Java framework for AI-era development
More professional, easier to maintain.
AI writes code that follows your architecture; your team maintains it for years.
Three steps:Documentation /docs/quickstart/
It just works
See all →Create a module
The skeleton generator emits directories, migrations and tests; the build passes on the first run
Change one contract
When contract and code disagree the build fails and prints the difference
Trace one request
From endpoint to async task, the traceId is identical at all five entry points
Submit one approval
A three-step approval chain runs end to end, each step logged with a traceId
Fast to write and easy to change are no longer a trade-off.
Teams inherit someone else's code without guessing, and three years after go-live the system is still changeable and debuggable.
One skeleton, one entry point, executable conventions; you can predict what AI will write and where a colleague will change things.
Why it is better
Easier to use
AI and humans write against one skeleton, so the same requirement lands in the same place and anyone can pick it up
More professional
Layering, contracts, permission codes, auth and data access each have guard rules; conventions are enforced by machine
Easier to maintain
One structure, tests and contracts from one source, upgrades that never touch your business code — still readable in three years
Available today: core capabilities
See all →Sign in / sign out / captcha
An authentication loop you can use as is
Users / roles / menus
The main admin path
Button-level permissions
Control down to each button
Departments / data scope
People see what they should
Dictionaries / parameter config
Everyday config is not hardcoded
Operation log / sign-in log
Traceable when something goes wrong
Available today: engineering quality
See all →Architecture guardrails
Conventions enforced by machine
Contract consistency
Docs never drift from code
Deny-by-default authorization
Authorization is never forgotten
End-to-end traceId
Locate a problem in five minutes
Structured logging
Logs are searchable and aggregatable
Operation audit
Sensitive actions leave a trail
Quality: numbers you can run yourself
See all →| Dimension | Value | Direction | How it's measured |
|---|---|---|---|
| Backend source lines | 12,480 | lower | cloc over backend Java |
| Leaf dependencies | 38 | lower | gradle dependencies filtered to leaves |
| Cold start time | 2.8s | lower | startup log: Started ... in Xs |
| System tables | 11 | lower | count tables in migration scripts |
| Exposed endpoints | 46 | lower | count from the OpenAPI export |
| Architecture guard rules | 24 | higher | count architecture assertions |
| Permission-code inconsistencies | 0 | equal | consistency-test difference set |
Every number comes from a script; the collection date and version update with each build. Dimensions that were not measured do not appear in the table.
24 guard rules (sample)
See all →app layer importing infra.mapper directly
A handler returning an app-layer type, creating a reverse dependency
@Autowired field injection / controller reaching straight to Mapper
Three steps
Start the environment
Migrations create tables and seed the initial administrator
Sign in
Sign in as the initial administrator and see users, roles and menus
Generate a module
The generated code ships with tests and passes the build on the first run
Directions
See all →Addressable structure
AI knows what to change
Deeper AI collaboration
AI proves its own changes
Industry capability packs
Thicker with every use
Delivery and operations
Less to worry about after go-live