Declarative YAML database seeding — a canned set of data that rides with an application and runs in-process at startup to insert, update, and track seed records idempotently. Sprout is polyglot: one seed-file format, one shared conformance suite, and native in-process engines per language.
spec/ Normative seed-file format spec + JSON-Schema (the source of truth)
conformance/ Shared fixtures + expected state every engine runs identically
java/ Reference engine (JDBC) — SQLite + Postgres + MySQL
go/ Go engine + `sprout` CLI — SQLite + Postgres + MySQL
rust/ Rust engine — SQLite + Postgres + MySQL
python/ Python engine (DB-API) — SQLite + Postgres + MySQL
typescript/ TypeScript/Node engine — SQLite + Postgres + MySQL
ruby/ Ruby engine — SQLite + Postgres + MySQL
csharp/ C#/.NET engine (ADO.NET) — SQLite + Postgres + MySQL
groovy/ Groovy convenience layer over the Java engine (JVM)
kotlin/ Kotlin ergonomics layer over the Java engine (JVM)
.hero/ Hero spec-driven planning workspace
/spec— the normative format specification and JSON-Schema. The single source of truth for seed-file semantics. Every engine conforms to it./conformance— the shared corpus of fixtures, SQLite schema, and expected-state files. Every engine runs this identical suite to certify correctness.
/java is the reference engine and certifies the conformance suite first; every
other engine mirrors its behavior and passes the same 18-case suite. All seven
engines — Java, Go, Rust, Python, TypeScript, Ruby, C# — are certified against
SQLite, Postgres, and MySQL, each routing every placeholder and identifier
through the same dialect seam.
/groovy and /kotlin are not separate engines — they are thin idiomatic JVM
layers that call the Java engine directly and inherit its certification.
Each language engine lives in its own top-level directory and references the
shared assets by relative path from its sibling directory — ../spec/ and
../conformance/. Engines never vendor or copy these assets; there is exactly
one normative spec and one conformance corpus for all languages.
Note: moving the Gradle root means an IDE re-import is required — open the Gradle project rooted at
/java.