MVP Definition
The goal is not to clone a batteries-included framework. The goal is to solve the single biggest pain in the Rust backend ecosystem first: initial productivity.
MVP thesis
A developer should be able to run a handful of commands and get a compiling, running, production-shaped API with at least one full CRUD resource, all in idiomatic Rust they can read and own.
In scope: the CLI
gize new <project> | Scaffold a Cargo project with the standard layout, config, DB pool, router, state and error handling. |
gize make app <name> | Create a module (model, dto, repository, service, handler, routes, error, tests), register it and wire its routes. |
gize make model <Name> field:Type | Generate a model struct from field definitions. |
gize make crud <Name> | Generate repository, service, DTO, handlers, routes, validation and tests for a resource. |
gize make migration / migrate | Create a blank, timestamped SQL migration (make migration) and apply pending ones (migrate). |
gize serve | Run the generated app with hot-ish reload ergonomics. |
gize doctor | Diagnose environment/project: toolchain, DB reachability, config sanity. |
gize fmt / check | Format the project with rustfmt and lint it with clippy (-D warnings). |
Explicitly out of scope
- Admin UI (gize make admin): the whole React/TS admin.
- gize sync full manifest reconciliation.
- Auth beyond a placeholder.
- OpenAPI generation.
- Plugins / extensibility system.
- Multiple database backends: MVP targets PostgreSQL only.
- Multiple web frameworks: MVP targets Axum only.
Definition of Done
The MVP is done when, on a clean machine with Rust + Postgres:
- 1gize new shop && cd shop && gize serve yields a running server.
- 2gize make app products produces a compiling module wired into the router.
- 3gize make crud Product name:String price:i32 active:bool produces working GET/POST/PUT/DELETE endpoints.
- 4gize make migration && gize migrate creates and applies the products table.
- 5Every generated file compiles, passes clippy -D warnings, and generated tests pass.
- 6Re-running a generator without --force never destroys hand edits.
- 7All of the above is covered by integration + snapshot tests in CI.