Files
soleprint/docs/data/en/station-modelgen.md
2026-04-14 10:32:05 -03:00

1.4 KiB

Modelgen

Generates platform-specific models from JSON Schema. Reads schema once, writes models for multiple targets.

Status: dev


What It Does

Modelgen takes a JSON Schema definition and produces model code for different platforms:

  • Pydantic -- Python data validation models
  • Django ORM -- Django model classes
  • Prisma -- Prisma schema definitions

One schema, multiple outputs.

Extractors

Modelgen also works in reverse. Extractors read existing codebases and produce a normalized schema representation:

  • Django extractor -- reads Django model files
  • SQLAlchemy extractor -- reads SQLAlchemy model files
  • Prisma extractor -- reads Prisma schema files

Extractors feed into graphgen for visualization.

Output

Generated models are written to gen/<room>/models/.

gen/<room>/models/
├── pydantic/
├── django/
└── prisma/

CLI

python -m modelgen

Reads from schema.json (the project source of truth) and writes to the configured output directory.

Shared Distribution

Modelgen is also distributed as a shared component via ctrl/spr.py. This allows other projects to use model generation without running full soleprint.

Schema Source

The source of truth is schema.json at the project root. All model generation starts from this file. Room-specific schema extensions live in cfg/<room>/models/.