Skip to main content
What lands in ./out is an ordinary ASP.NET Core, EF Core, PostgreSQL, Vue 3 and Vuetify project. No license server, no account, no model API, no runtime dependency on Cordango. It keeps working whether or not this project does.

Run it

The scaffold ships its own docker-compose.yml with the database alongside the application.

The first screen creates the administrator

There is no default password, and no password printed to a log. A password delivered by a log line is not delivered: it sits in a scrollback, a log aggregator and a CI artifact, and nobody ever rotates it. Instead the first screen asks you to create the account. Once that has happened, the endpoint that creates it closes for good.
Reach the application before anyone else does. Between first start and first account, that endpoint is open to whoever gets there. On a laptop this is nothing. On a public address, start it closed to the world and open it once you have signed in.

The key ring lives on the volume

Data protection keys must persist. If they live inside the container, every restart invalidates every existing session and every token signed with them. The generated compose file puts them on a volume. Keep that arrangement when you move to whatever you actually deploy on, and back that volume up with the database rather than separately from it.

Migrations

The generated project includes an EF Core migration for the schema its definition describes. It is certified: regenerating it produces an empty diff, so what is in the project is exactly what the model implies. When you change the app and regenerate, you get a new migration. Review it like any other, because a generated migration is still a migration and it still runs against real data.

Choosing how the runtime arrives

source
Cordango.Standalone is emitted as source into the project. Nothing to restore, no feed to depend on. This is what makes the output independent.
NuGet reference
References Cordango.Standalone from a feed instead, pinned to the generator’s version. A smaller repository, at the cost of a dependency.
Pick source unless you have a reason. The whole argument for the standalone target is that what you generate outlives its generator.

Seed data

Deterministic demo data. The same seed produces the same dataset, which makes it useful for a demo environment and for a screenshot that has to look the same next week. It is demo data. Do not ship it to production and do not build a report against it.
Platform features are currently in invite-only beta. Sign up here to be considered for one of our next phases.

Publishing to the Platform instead

Generating is one of two destinations. The other is an instance:
Same definition, different target. See Publishing.