create-django-inertia
One command scaffolds a production-ready Django + Inertia.js project — React or Vue, JavaScript or TypeScript, Tailwind and Vite already wired together.
Django and Inertia work beautifully together. Getting them to that point does not.
Every new Django + Inertia project starts with the same hour of work that has nothing to do with the product: wiring the adapter, configuring Vite, choosing and installing a frontend framework, setting up Tailwind, getting the template and asset pipeline to agree, then laying out apps so the thing is still navigable at month six.
None of it is hard. All of it is repetitive, easy to get subtly wrong, and completely uninteresting — which is exactly the kind of work that should be automated once and never done by hand again.
So I built the CLI I wanted to exist. It asks a few questions, then hands back a project that is already structured the way a production application should be.
Setup, before and after.
Same result, every time — and structured the way it should be rather than the way the tutorial happened to be written.
Four questions, then a working project.
Everything already agreeing with everything else.
The adapter, middleware and template plumbing already connected and working.
Pick your frontend at scaffold time. Both paths are set up the same way.
TypeScript configured properly if you want it, out of the way if you don't.
Installed and hooked into the asset pipeline, not bolted on afterwards.
Dev server, HMR and production build already talking to Django.
Apps laid out so the project is still navigable once it grows.
Settings, static files and structure arranged for deployment, not just a demo.
Where it goes next.
Both frontends supported, with JavaScript and TypeScript variants.
Styling and bundling configured as part of the scaffold.
Optional login, registration and session pages wired through Inertia.
An optional compose file so a new project runs the same on every machine.
Opinionated starting points for common hosts, instead of a blank settings file.
A schema-per-tenant variant, based on what I run in production.
Because the setup problem does not go away — it just moves.
Django ships new versions, Vite changes its config, frontend frameworks move, and the combination that worked last year quietly stops working. Maintaining this is how I keep the answer current — for the next project I start, and for anyone else who would otherwise spend an hour rediscovering it.