This utility facilitates the setup process for a NextJS application incorporating the T3 stack (trpc, nextjs, tailwind, prisma) by generating boilerplate code on-the-fly.
- Create controller files.
- Formulate schema files for Prisma.
- Craft zod validation schemas.
- Design forms with tailwind styling.
- Start with a configuration file for your application.
Before you begin, ensure you've initiated your NextJS project. Then, bring this utility onboard:
npm install -g next-gen
Before diving into component generation, initialize your project:
next-gen init
Executing this will yield a configuration file (next-gen.json
) in your project's root.
This config file allows you to set paths to your own templates and where each resource should be generated.
To birth new components, the go-to command is generate
:
next-gen generate <type> <name> [options]
-
<type>
: Denotes the kind of component you aim to produce. Valid entries include:controller
schema
zodSchemas
form
scaffold
(Generates controller, schema, zodSchemas, and form all in one go!)
-
<name>
: The christening name for the component.
-
-a, --attributes <attributes>
: Specifies a list of component attributes in the name:type format. This is particularly beneficial when molding schemas. Ensure attributes are comma-separated.Example:
--attributes name:string,age:number,email:string
Currently the following types are supported:
- string
- number
- boolean
- date
- json
- text
- float
- double
- enums
- references
- For a 'User' controller generation:
next-gen generate controller User
- For a 'Post' schema birth with respective attributes:
next-gen generate schema Post --attributes title:string,body:string
- Generating all the fundamental components (scaffold) for a 'Product':
next-gen generate scaffold Product --attributes name:string,price:number
- Add more types
- Generate New page
- Generate Edit page
- Generate Index page
- Generate Show page
- Automatically add router to routes file
- Form component should be created with necessary inputs
- Allow setting custom inputs for each attribute type
- Generate controller tests
- Generate component test
If you stumble upon an issue or have a spark of improvement, don't be shy! Head to the GitHub repository and let us know.
Happy NextJS adventures with the T3 stack! 🚀