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:TypeGenerate 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 / migrateCreate a blank, timestamped SQL migration (make migration) and apply pending ones (migrate).
gize serveRun the generated app with hot-ish reload ergonomics.
gize doctorDiagnose environment/project: toolchain, DB reachability, config sanity.
gize fmt / checkFormat 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:

  1. 1gize new shop && cd shop && gize serve yields a running server.
  2. 2gize make app products produces a compiling module wired into the router.
  3. 3gize make crud Product name:String price:i32 active:bool produces working GET/POST/PUT/DELETE endpoints.
  4. 4gize make migration && gize migrate creates and applies the products table.
  5. 5Every generated file compiles, passes clippy -D warnings, and generated tests pass.
  6. 6Re-running a generator without --force never destroys hand edits.
  7. 7All of the above is covered by integration + snapshot tests in CI.