corollarium/modelarium

Generates scaffolding for frontend and backend from schemas

v0.5.2 2021-09-29 18:07 UTC

README

License: MIT Build Status Code Coverage Scrutinizer Code Quality Latest Stable Version Total Downloads Scrutinizer Code Quality

Modelarium generates scaffolding for your project based on a GraphQL description of your API. It can create the entire backend and frontend files, leaving only the logic and design for you.

  • generates backend scaffolding for you: model, database migration, seed, factory, events, policies. Everything from your graphql descriptions. No more tedious creation of files and repeated code.
  • datatypes: your data is more than strings. You have models for your structures, so have datatypes for your fields. Create the correct database fields without thinking about it. Uses Formularium for datatypes.
  • validation: transparent data validation made automatically based on your datatypes. Your data is always safely validated.
  • no performance penalty: other than data validation all data is generate at development time. It's just automatic scaffolding, everything is just as fast as before.
  • no new standards: code is generated following existing standards for existing tools. Generate code and use it freely. Nothing is tied down.
  • frontend generation: get HTML forms, cards, lists and views generated for you automatically with your favorite CSS framework: Bootstrap, Bulma, Materialize, Buefy with simple declarations and a standard description. You can tweak details afterwards -- it's just code.
  • reactive frameworks: Get Vue and React components like cards, forms, lists and tables, ready to use with their Graphql calls.
  • integration with Laravel and Lighthouse. Get GraphQL endpoints automatically.

What it doesn't do:

  • magic. you still have to write your code logic to process requests in the backend, like in mutations or special conditions in your models. You also get only a basic design, so pretty CSS is up to you.
  • REST endpoints generation. At this point only GraphQL is supported through Laravel and Lighthouse. REST endpoints might come later.
  • other backend frameworks. Currently only Laravel is supported.

Documentation

See the full documentation for Modelarium.

See a hello world project.

See a sample project.

Sponsors

Corollarium

Quick overview

This a Graphql file that reproduces Laravel's default User model. Notice the Email datatype, as well as the @migration directives for the database creation.

type User
  @migrationRememberToken
  @migrationSoftDeletes
  @migrationTimestamps
  @modelExtends(class: "Illuminate\\Foundation\\Auth\\User")
  @modelNotifiable {
  id: ID!
  name: String!
    @modelFillable
    @renderable(label: "Name", comment: "Please fill with your fullname")
  password: String! @modelHidden @modelFillable
  email_verified_at: Timestamp @casts(type: "datetime")
  email: Email! @migrationUniqueIndex @modelFillable
}

Here's a sample Post Model, with custom data types for validation and data generation:

type Post @migrationTimestamps {
  id: ID!
  title: Title!
  description: Text!
  user: User! @belongsTo @foreign(onDelete: "cascade", onUpdate: "cascade")
}

Contributing contributions welcome

Any contributions are welcome. Please send a PR.