inikit 3.0.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -20
- package/README.md +439 -439
- package/dist/package.json +2 -2
- package/dist/utils.js +7 -7
- package/package.json +95 -95
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 Ajaykumar Nadar
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Ajaykumar Nadar
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
21
|
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,439 +1,439 @@
|
|
|
1
|
-
<div align="center">
|
|
2
|
-
|
|
3
|
-
# Inikit 🚀
|
|
4
|
-
|
|
5
|
-
[](https://www.npmjs.com/package/inikit)
|
|
6
|
-
[](https://opensource.org/licenses/MIT)
|
|
7
|
-
[
|
|
37
|
-
- 📝 **TypeScript Ready**: Full TypeScript support out of the box
|
|
38
|
-
- 🎨 **Styling**: Tailwind CSS integration
|
|
39
|
-
- ✅ **Code Quality**: ESLint, Prettier, and Commitlint pre-configured
|
|
40
|
-
- 🔧 **Git Hooks**: Husky for automated code quality checks
|
|
41
|
-
- 🚀 **Zero Configuration**: Get started immediately with sensible defaults
|
|
42
|
-
- 📦 **Modern Tooling**: Latest versions of all dependencies -->
|
|
43
|
-
|
|
44
|
-
## 🚀 Quick Start
|
|
45
|
-
|
|
46
|
-
### Using npx (Recommended)
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
npx inikit@latest
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
```bash
|
|
53
|
-
npm install -g inikit
|
|
54
|
-
inikit
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### System Requirements
|
|
58
|
-
|
|
59
|
-
- **Node.js**: 18.0 or higher
|
|
60
|
-
- **npm**: 7.0 or higher (or **yarn**/**pnpm** equivalent)
|
|
61
|
-
- **Git**: For version control (recommended)
|
|
62
|
-
|
|
63
|
-
## 🛠️ What You Get
|
|
64
|
-
|
|
65
|
-
### Frameworks
|
|
66
|
-
|
|
67
|
-
- **Next.js** - Full-stack React framework with App Router
|
|
68
|
-
- **React** - Modern React with Vite for fast development
|
|
69
|
-
|
|
70
|
-
### Development Tools
|
|
71
|
-
|
|
72
|
-
- **TypeScript** - Type-safe JavaScript development
|
|
73
|
-
- **Tailwind CSS** - Utility-first CSS framework
|
|
74
|
-
- **Prettier** - Opinionated code formatter
|
|
75
|
-
- **ESLint** - JavaScript/TypeScript linter
|
|
76
|
-
- **Commitlint + Husky** - Enforce conventional commit messages
|
|
77
|
-
|
|
78
|
-
## 📋 Usage
|
|
79
|
-
|
|
80
|
-
### Interactive (Prompts)
|
|
81
|
-
|
|
82
|
-
When you run Inikit without flags, you'll be prompted to:
|
|
83
|
-
|
|
84
|
-
1. **Project Name**: Enter your project name (lowercase, no spaces)
|
|
85
|
-
2. **Framework**: Choose between Next.js or React
|
|
86
|
-
3. **TypeScript**: Enable/disable TypeScript support
|
|
87
|
-
4. **Dev Tools**: Select from Tailwind CSS, Prettier, and Husky+Commitlint
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
$ npx inikit@latest
|
|
91
|
-
|
|
92
|
-
Welcome to Inikit v3.0.0
|
|
93
|
-
|
|
94
|
-
✔ Enter the project name › my-awesome-app
|
|
95
|
-
✔ Select a framework › Next.js
|
|
96
|
-
✔ Do you want to use TypeScript? › Yes
|
|
97
|
-
✔ Select dev tools › Tailwind CSS, Prettier, Husky
|
|
98
|
-
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### Non-Interactive (Flags)
|
|
102
|
-
|
|
103
|
-
Skip all prompts by providing options via flags. This is CI-friendly and great
|
|
104
|
-
for automation.
|
|
105
|
-
|
|
106
|
-
Examples:
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
|
|
110
|
-
# Next.js + TypeScript with recommended tools (Tailwind, Prettier, Commitlint)
|
|
111
|
-
npx inikit my-app --next --ts --tools
|
|
112
|
-
|
|
113
|
-
# React + JavaScript with no dev tools and no git init
|
|
114
|
-
npx inikit my-app --react --js --no-tools --no-git
|
|
115
|
-
|
|
116
|
-
# React + TypeScript with only Tailwind and Prettier
|
|
117
|
-
npx inikit my-app --react --ts --tailwind --prettier
|
|
118
|
-
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
Note:
|
|
122
|
-
|
|
123
|
-
- Do not combine framework flags together: use either `--next` or `--react`.
|
|
124
|
-
- Do not combine language flags together: use either `--ts` or `--js`.
|
|
125
|
-
- If you don't pass `--tools`, you can choose tools individually with
|
|
126
|
-
`--tailwind`, `--prettier`, and/or `--commitlint`.
|
|
127
|
-
|
|
128
|
-
#### CLI reference
|
|
129
|
-
|
|
130
|
-
Below are the main CLI flags and options. Flags can be used together or in CI
|
|
131
|
-
scripts to skip interactive prompts.
|
|
132
|
-
|
|
133
|
-
General options
|
|
134
|
-
|
|
135
|
-
| Flag / Argument | Purpose |
|
|
136
|
-
| ----------------- | ----------------------------------------------------------------------------- |
|
|
137
|
-
| `[directory]` | Target directory or project name to create (positional). |
|
|
138
|
-
| `-v`, `--version` | Print Inikit version (from `package.json`). |
|
|
139
|
-
| `-h`, `--help` | Show help and available options. |
|
|
140
|
-
| `--no-git` | Skip initializing a Git repository in the created project. |
|
|
141
|
-
| `--tools` | Use the recommended dev tools (recommended tools are marked below). |
|
|
142
|
-
| `--no-tools` | Skip automatic dev tool setup. Useful for minimal projects or custom tooling. |
|
|
143
|
-
|
|
144
|
-
Framework / language selection
|
|
145
|
-
|
|
146
|
-
| Flag | Behavior |
|
|
147
|
-
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
|
148
|
-
| `--next`, `--nextjs` | Initialize a Next.js project (uses `create-next-app`). Conflicts with `--react` and `--express`. |
|
|
149
|
-
| `--react`, `--reactjs` | Initialize a React project scaffolded with Vite. Conflicts with `--next` and `--express`. |
|
|
150
|
-
| `--express`, `--expressjs` | Initialize an Express.js TypeScript template (Express currently requires TypeScript). Conflicts with `--next` and `--react`. |
|
|
151
|
-
| `--ts`, `--typescript` | Generate TypeScript-based projects (default for most flows). Conflicts with `--js`. |
|
|
152
|
-
| `--js`, `--javascript` | Generate JavaScript-based projects. Conflicts with `--ts`. |
|
|
153
|
-
|
|
154
|
-
Tool-specific flags
|
|
155
|
-
|
|
156
|
-
The CLI dynamically adds one flag per tool defined in `inikit.config.ts`. Each
|
|
157
|
-
tool has a `baseName` and sometimes an `otherName` to provide a short flag
|
|
158
|
-
alias.
|
|
159
|
-
|
|
160
|
-
Use `--<baseName>` (or `--<otherName>` when available) to enable a specific tool
|
|
161
|
-
in non-interactive mode. When enabled, the CLI will validate language/framework
|
|
162
|
-
requirements and also add any tool dependencies automatically.
|
|
163
|
-
|
|
164
|
-
### Tools reference (flags and requirements)
|
|
165
|
-
|
|
166
|
-
The following table lists each tool flag available via the CLI (these are
|
|
167
|
-
defined in `inikit.config.ts`). For tools with an `otherName`, both flags are
|
|
168
|
-
accepted (e.g. `--tailwindcss` and `--tailwind`). The `Recommended` column
|
|
169
|
-
indicates whether the tool is included when you pass `--tools`.
|
|
170
|
-
|
|
171
|
-
| Flag(s) | Description | Recommended | Languages | Frameworks | Dependencies |
|
|
172
|
-
| ----------------------------- | -------------------------------------------------------------------------------------- | ----------: | --------- | -------------------------- | ------------- |
|
|
173
|
-
| `--tailwindcss`, `--tailwind` | Adds Tailwind CSS config and styles. | Yes | js, ts | reactjs, nextjs | — |
|
|
174
|
-
| `--eslint`, `--lint` | Adds ESLint configuration. | Yes | js, ts | reactjs, nextjs, expressjs | — |
|
|
175
|
-
| `--prettier` | Adds Prettier configuration and formatting helpers. | Yes | js, ts | reactjs, nextjs, expressjs | — |
|
|
176
|
-
| `--commitlint` | Adds Commitlint and Husky hooks for conventional commits. | Yes | js, ts | reactjs, nextjs, expressjs | — |
|
|
177
|
-
| `--shadcn` | Installs shadcn UI, copies Vite config and runs `shadcn init`. (TypeScript only). | No | ts | reactjs, nextjs | `tailwindcss` |
|
|
178
|
-
| `--prisma` | Adds Prisma ORM scaffold and installs `@prisma/client`. (TypeScript + Next.js). | No | ts | nextjs | — |
|
|
179
|
-
| `--authjs`, `--auth` | Adds Auth.js (next-auth) templates and runs `npx auth secret`. (TypeScript + Next.js). | No | ts | nextjs | `prisma` |
|
|
180
|
-
| `--zod` | Adds Zod validation templates. | No | ts | reactjs, nextjs | — |
|
|
181
|
-
| `--zustand` | Adds Zustand state store templates (JS/TS variants available). | No | ts | reactjs, nextjs | — |
|
|
182
|
-
|
|
183
|
-
Notes:
|
|
184
|
-
|
|
185
|
-
- Flags will be validated at runtime — if a tool requires TypeScript or a
|
|
186
|
-
specific framework and the provided flags don't match, the CLI will exit with
|
|
187
|
-
an error explaining the missing requirement.
|
|
188
|
-
- The `--tools` meta-flag will enable the recommended tools (`tailwindcss`,
|
|
189
|
-
`eslint`, `prettier`, `commitlint`) unless you explicitly pass other tool
|
|
190
|
-
flags.
|
|
191
|
-
- `--no-tools` disables all automatic tool installs.
|
|
192
|
-
|
|
193
|
-
### Templates included
|
|
194
|
-
|
|
195
|
-
The `templates/` folder contains template files copied into generated projects
|
|
196
|
-
when tools are enabled. Major template groups:
|
|
197
|
-
|
|
198
|
-
- `commitlint/` — commitlint configuration
|
|
199
|
-
- `husky/` — pre-configured Husky hooks (`pre-commit`, `commit-msg`)
|
|
200
|
-
- `prettier/` — `.prettierrc` and `.prettierignore`
|
|
201
|
-
- `tailwind/` — `vite.config` snippets and `index.css` bootstrap
|
|
202
|
-
- `shadcn-vite/` — Vite config and tsconfig snippets to support shadcn UI
|
|
203
|
-
- `prisma/` — `prisma` config and `schema.prisma` starter
|
|
204
|
-
- `authjs/` — example Auth.js/next-auth files and `.env` example
|
|
205
|
-
- `express-ts/` — an Express TypeScript starter used when `--express` is chosen
|
|
206
|
-
- `zod/` — example `validator.ts` and helper files
|
|
207
|
-
- `zustand/` — JS and TS store example implementations
|
|
208
|
-
|
|
209
|
-
If you add new tools in `inikit.config.ts`, the CLI will automatically expose
|
|
210
|
-
`--<baseName>` flags and include them in the interactive prompt options (via
|
|
211
|
-
`tli.ts`).
|
|
212
|
-
|
|
213
|
-
## ⚙️ How the CLI works (behind the scenes)
|
|
214
|
-
|
|
215
|
-
High-level flow when running `inikit` (interactive or non-interactive):
|
|
216
|
-
|
|
217
|
-
1. Validate and parse flags (commander). Conflicting flags are rejected (e.g.
|
|
218
|
-
`--next` vs `--react`).
|
|
219
|
-
2. Validate the project name using `validateProjectName` (`utils.ts`).
|
|
220
|
-
3. If interactive, prompt for framework, language, and dev tools (`tli.ts`).
|
|
221
|
-
4. Create the base project depending on the framework:
|
|
222
|
-
|
|
223
|
-
- Next.js: runs `npx create-next-app` (with `--ts` / `--js`, `--tailwind` when
|
|
224
|
-
requested).
|
|
225
|
-
- React (Vite): runs `npx create-vite` with `react` or `react-ts` template.
|
|
226
|
-
- Express (TypeScript): copies the `templates/express-ts` starter and installs
|
|
227
|
-
its dependencies.
|
|
228
|
-
|
|
229
|
-
5. For each selected tool, run the corresponding helper in `utils.ts` which
|
|
230
|
-
usually:
|
|
231
|
-
|
|
232
|
-
- Installs npm packages (dev or runtime)
|
|
233
|
-
- Copies template files from `templates/<tool>` into the new project
|
|
234
|
-
- Runs additional CLI helpers (for example: `npx shadcn init`,
|
|
235
|
-
`npx prisma generate`, `npx auth secret`, `npx husky init`).
|
|
236
|
-
|
|
237
|
-
6. Initialize Git (unless `--no-git` was passed).
|
|
238
|
-
7. Print a success message and exit.
|
|
239
|
-
|
|
240
|
-
Notes & edge cases:
|
|
241
|
-
|
|
242
|
-
- Tools are validated against `language` and `framework` requirements defined in
|
|
243
|
-
`inikit.config.ts`. If a tool requires TypeScript or a specific framework and
|
|
244
|
-
the flags don't match, the CLI exits with a clear error.
|
|
245
|
-
- When running with `--tools`, the CLI will enable all `recommended: true` tools
|
|
246
|
-
(see `inikit.config.ts`). You can override that by passing individual tool
|
|
247
|
-
flags.
|
|
248
|
-
- Express currently relies on a TypeScript starter; the code forces `typescript`
|
|
249
|
-
for Express-created projects (see `index.ts`).
|
|
250
|
-
- The CLI uses `execa` to run external commands; these subprocesses will emit
|
|
251
|
-
output to the terminal (e.g., `npx create-next-app`, `npm install`).
|
|
252
|
-
|
|
253
|
-
## 🏗️ Local Development
|
|
254
|
-
|
|
255
|
-
Want to contribute to Inikit or test changes locally? Here's how to get started:
|
|
256
|
-
|
|
257
|
-
### Prerequisites
|
|
258
|
-
|
|
259
|
-
- Node.js 18.0 or higher
|
|
260
|
-
- npm 7.0 or higher
|
|
261
|
-
- Git
|
|
262
|
-
|
|
263
|
-
### Clone and Setup
|
|
264
|
-
|
|
265
|
-
```bash
|
|
266
|
-
# Clone the repository
|
|
267
|
-
git clone https://github.com/
|
|
268
|
-
cd Inikit
|
|
269
|
-
|
|
270
|
-
# Install dependencies
|
|
271
|
-
npm install
|
|
272
|
-
|
|
273
|
-
# Run in development mode
|
|
274
|
-
npm run dev
|
|
275
|
-
|
|
276
|
-
# Build the project
|
|
277
|
-
npm run build
|
|
278
|
-
|
|
279
|
-
# Test the CLI locally (creates a global symlink)
|
|
280
|
-
npm link
|
|
281
|
-
inikit
|
|
282
|
-
|
|
283
|
-
# Unlink when done testing
|
|
284
|
-
npm unlink -g inikit
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
### Available Scripts
|
|
288
|
-
|
|
289
|
-
| Script | Description |
|
|
290
|
-
| ---------------------- | -------------------------------------------------------------------- |
|
|
291
|
-
| `npm run dev` | Run the CLI in development mode with `tsx` |
|
|
292
|
-
| `npm run build` | Build the project for production |
|
|
293
|
-
| `npm run lint` | Run ESLint to check for code issues |
|
|
294
|
-
| `npm run lint:fix` | Auto-fix ESLint issues where possible |
|
|
295
|
-
| `npm run format` | Format code with Prettier |
|
|
296
|
-
| `npm run format:check` | Check if code is properly formatted |
|
|
297
|
-
| `npm run clean` | Remove the `dist` directory |
|
|
298
|
-
| `npm run deploy` | Build and publish to npm (maintainers only) |
|
|
299
|
-
| `npm run prepare` | Run `husky` prepare script to set up git hooks (used by CI/prepare). |
|
|
300
|
-
|
|
301
|
-
### Project Structure
|
|
302
|
-
|
|
303
|
-
```text
|
|
304
|
-
Inikit/
|
|
305
|
-
├── index.ts # Main CLI entry point
|
|
306
|
-
├── tli.ts # Interactive prompt helpers
|
|
307
|
-
├── utils.ts # Core utility functions (commands to scaffold and add tools)
|
|
308
|
-
├── inikit.config.ts # Tool configuration (defines flags, requirements, and templates)
|
|
309
|
-
├── package.json # Project configuration
|
|
310
|
-
├── templates/ # Template files for different tools (copied into generated projects)
|
|
311
|
-
│ ├── commitlint/ # Commitlint configuration
|
|
312
|
-
│ ├── husky/ # Git hooks
|
|
313
|
-
│ ├── prettier/ # Prettier configuration
|
|
314
|
-
│ ├── shadcn-vite/ # Shadcn UI Vite/TypeScript template files
|
|
315
|
-
│ └── tailwind/ # Tailwind CSS files
|
|
316
|
-
├── dist/ # Compiled output (created after build)
|
|
317
|
-
└── README.md # This file
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
## 📄 Project Policies & Community Files
|
|
321
|
-
|
|
322
|
-
For details on contributing, security, and community standards, see:
|
|
323
|
-
|
|
324
|
-
- [LICENSE](./LICENSE)
|
|
325
|
-
- [Code of Conduct](./CODE_OF_CONDUCT.md)
|
|
326
|
-
- [Contributing Guidelines](./CONTRIBUTING.md)
|
|
327
|
-
- [Security Policy](./SECURITY.md)
|
|
328
|
-
|
|
329
|
-
## 🐛 Issues and Support
|
|
330
|
-
|
|
331
|
-
We're here to help! If you encounter any issues or have questions:
|
|
332
|
-
|
|
333
|
-
### 🚨 Bug Reports
|
|
334
|
-
|
|
335
|
-
- **GitHub Issues**:
|
|
336
|
-
[Report bugs here](https://github.com/
|
|
337
|
-
- Please use our bug report template for faster resolution
|
|
338
|
-
|
|
339
|
-
### 💡 Feature Requests
|
|
340
|
-
|
|
341
|
-
- **GitHub Discussions**:
|
|
342
|
-
[Suggest new features](https://github.com/
|
|
343
|
-
- Help us understand your use case and requirements
|
|
344
|
-
|
|
345
|
-
### ❓ Questions and Support
|
|
346
|
-
|
|
347
|
-
- **GitHub Discussions**:
|
|
348
|
-
[Ask questions here](https://github.com/
|
|
349
|
-
- **Documentation**: Check our README for common use cases
|
|
350
|
-
- **Examples**: Look at the templates directory for configuration examples
|
|
351
|
-
|
|
352
|
-
### 🔍 Before Reporting
|
|
353
|
-
|
|
354
|
-
1. **Search existing issues** to avoid duplicates
|
|
355
|
-
2. **Check the latest version** - your issue might already be fixed
|
|
356
|
-
3. **Review the documentation** - the answer might already be there
|
|
357
|
-
4. **Test with a minimal example** - helps us reproduce the issue
|
|
358
|
-
|
|
359
|
-
## 🌟 Community
|
|
360
|
-
|
|
361
|
-
Join our growing community of developers:
|
|
362
|
-
|
|
363
|
-
- ⭐ **Star the project** on GitHub to show your support
|
|
364
|
-
- 🐛 **Report issues** to help us improve
|
|
365
|
-
- 💬 **Join discussions** to share ideas and ask questions
|
|
366
|
-
- 🤝 **Contribute code** to make Inikit even better
|
|
367
|
-
- 📢 **Share with others** who might find Inikit useful
|
|
368
|
-
|
|
369
|
-
## 🔒 Security
|
|
370
|
-
|
|
371
|
-
If you discover a security vulnerability, please report it privately by emailing
|
|
372
|
-
[ajaykumarn3000@gmail.com](mailto:ajaykumarn3000@gmail.com). Please do not
|
|
373
|
-
report security vulnerabilities through public GitHub issues.
|
|
374
|
-
|
|
375
|
-
## 📊 Project Stats
|
|
376
|
-
|
|
377
|
-
- **Language**: TypeScript
|
|
378
|
-
- **Package Manager**: npm
|
|
379
|
-
- **License**: MIT
|
|
380
|
-
- **Maintained**: ✅ Actively maintained
|
|
381
|
-
- **Node.js**: 18.0+ required
|
|
382
|
-
|
|
383
|
-
### Key dependencies
|
|
384
|
-
|
|
385
|
-
- Runtime: `@clack/prompts` (interactive prompts), `chalk` (colors), `commander`
|
|
386
|
-
(CLI parsing), `execa` (shell commands), `tsx` (dev runner)
|
|
387
|
-
- Dev: `eslint`, `prettier`, `husky`, `@commitlint/cli`,
|
|
388
|
-
`@commitlint/config-conventional`, `typescript`
|
|
389
|
-
|
|
390
|
-
## 🗺️ Roadmap
|
|
391
|
-
|
|
392
|
-
We're continuously working to improve Inikit. Here's what's on our radar:
|
|
393
|
-
|
|
394
|
-
- [ ] **Framework Support**: Vue.js, Svelte, Angular
|
|
395
|
-
- [ ] **Additional Tools**: Vitest, Jest, Cypress
|
|
396
|
-
- [ ] **Package Managers**: Yarn, pnpm support
|
|
397
|
-
- [ ] **Templates**: More starter templates
|
|
398
|
-
- [ ] **CI/CD**: GitHub Actions, GitLab CI templates
|
|
399
|
-
- [ ] **Database**: Drizzle integration options
|
|
400
|
-
- [ ] **UI Libraries**: More component library options
|
|
401
|
-
|
|
402
|
-
Want to contribute to any of these? We'd love your help!
|
|
403
|
-
|
|
404
|
-
## 📜 License
|
|
405
|
-
|
|
406
|
-
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
407
|
-
for details.
|
|
408
|
-
|
|
409
|
-
## 🙏 Acknowledgments
|
|
410
|
-
|
|
411
|
-
Inikit stands on the shoulders of giants. We're grateful to:
|
|
412
|
-
|
|
413
|
-
- **Open Source Community**: For the amazing tools and libraries we integrate
|
|
414
|
-
- **Framework Teams**: Next.js, React, Vite, and TypeScript teams for their
|
|
415
|
-
excellent work
|
|
416
|
-
- **Tool Maintainers**: ESLint, Prettier, Husky, and Commitlint contributors
|
|
417
|
-
- **Contributors**: Everyone who has contributed code, reported issues, or
|
|
418
|
-
shared feedback
|
|
419
|
-
- **Users**: The developer community that uses and trusts Inikit
|
|
420
|
-
- **Inspiration**: Projects like create-next-app, create-react-app, and
|
|
421
|
-
create-vite
|
|
422
|
-
|
|
423
|
-
Special thanks to all the developers who believe in making development tools
|
|
424
|
-
better and more accessible.
|
|
425
|
-
|
|
426
|
-
---
|
|
427
|
-
|
|
428
|
-
<div align="center">
|
|
429
|
-
|
|
430
|
-
**Made with ❤️ by [
|
|
431
|
-
|
|
432
|
-
_Building tools that developers love to use_
|
|
433
|
-
|
|
434
|
-
[⭐ Star on GitHub](https://github.com/
|
|
435
|
-
[🐛 Report Bug](https://github.com/
|
|
436
|
-
[💡 Request Feature](https://github.com/
|
|
437
|
-
[🤝 Contribute](https://github.com/
|
|
438
|
-
|
|
439
|
-
</div>
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# Inikit 🚀
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/inikit)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
[](https://github.com/ajaykumarn3000/inikit/issues)
|
|
8
|
+
[](https://github.com/ajaykumarn3000/inikit/stargazers)
|
|
9
|
+
[](https://github.com/ajaykumarn3000/inikit/network)
|
|
10
|
+
[](https://github.com/ajaykumarn3000/inikit/graphs/contributors)
|
|
11
|
+
|
|
12
|
+
</div>
|
|
13
|
+
|
|
14
|
+
> The best way to get started with Next.js and React projects.
|
|
15
|
+
|
|
16
|
+
Inikit is a powerful, open-source CLI tool that scaffolds modern web
|
|
17
|
+
applications with industry-standard development tools and configurations. Built
|
|
18
|
+
for developers, by developers, to streamline the project setup process and
|
|
19
|
+
enforce best practices from day one.
|
|
20
|
+
|
|
21
|
+
<!-- ## 🌟 Why Inikit?
|
|
22
|
+
|
|
23
|
+
In the fast-paced world of web development, setting up a new project with all
|
|
24
|
+
the necessary tools and configurations can be time-consuming and error-prone.
|
|
25
|
+
Inikit solves this by providing:
|
|
26
|
+
|
|
27
|
+
- **Zero Configuration**: Get started immediately with sensible, battle-tested
|
|
28
|
+
defaults
|
|
29
|
+
- **Best Practices**: Industry-standard tools and configurations out of the box
|
|
30
|
+
- **Developer Experience**: Consistent setup across teams and projects
|
|
31
|
+
- **Modern Stack**: Latest versions of popular tools and frameworks
|
|
32
|
+
- **Flexibility**: Choose only the tools you need for your project
|
|
33
|
+
|
|
34
|
+
## ✨ Features
|
|
35
|
+
|
|
36
|
+
- 🎯 **Framework Support**: Next.js and React (with Vite)
|
|
37
|
+
- 📝 **TypeScript Ready**: Full TypeScript support out of the box
|
|
38
|
+
- 🎨 **Styling**: Tailwind CSS integration
|
|
39
|
+
- ✅ **Code Quality**: ESLint, Prettier, and Commitlint pre-configured
|
|
40
|
+
- 🔧 **Git Hooks**: Husky for automated code quality checks
|
|
41
|
+
- 🚀 **Zero Configuration**: Get started immediately with sensible defaults
|
|
42
|
+
- 📦 **Modern Tooling**: Latest versions of all dependencies -->
|
|
43
|
+
|
|
44
|
+
## 🚀 Quick Start
|
|
45
|
+
|
|
46
|
+
### Using npx (Recommended)
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npx inikit@latest
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npm install -g inikit
|
|
54
|
+
inikit
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### System Requirements
|
|
58
|
+
|
|
59
|
+
- **Node.js**: 18.0 or higher
|
|
60
|
+
- **npm**: 7.0 or higher (or **yarn**/**pnpm** equivalent)
|
|
61
|
+
- **Git**: For version control (recommended)
|
|
62
|
+
|
|
63
|
+
## 🛠️ What You Get
|
|
64
|
+
|
|
65
|
+
### Frameworks
|
|
66
|
+
|
|
67
|
+
- **Next.js** - Full-stack React framework with App Router
|
|
68
|
+
- **React** - Modern React with Vite for fast development
|
|
69
|
+
|
|
70
|
+
### Development Tools
|
|
71
|
+
|
|
72
|
+
- **TypeScript** - Type-safe JavaScript development
|
|
73
|
+
- **Tailwind CSS** - Utility-first CSS framework
|
|
74
|
+
- **Prettier** - Opinionated code formatter
|
|
75
|
+
- **ESLint** - JavaScript/TypeScript linter
|
|
76
|
+
- **Commitlint + Husky** - Enforce conventional commit messages
|
|
77
|
+
|
|
78
|
+
## 📋 Usage
|
|
79
|
+
|
|
80
|
+
### Interactive (Prompts)
|
|
81
|
+
|
|
82
|
+
When you run Inikit without flags, you'll be prompted to:
|
|
83
|
+
|
|
84
|
+
1. **Project Name**: Enter your project name (lowercase, no spaces)
|
|
85
|
+
2. **Framework**: Choose between Next.js or React
|
|
86
|
+
3. **TypeScript**: Enable/disable TypeScript support
|
|
87
|
+
4. **Dev Tools**: Select from Tailwind CSS, Prettier, and Husky+Commitlint
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
$ npx inikit@latest
|
|
91
|
+
|
|
92
|
+
Welcome to Inikit v3.0.0
|
|
93
|
+
|
|
94
|
+
✔ Enter the project name › my-awesome-app
|
|
95
|
+
✔ Select a framework › Next.js
|
|
96
|
+
✔ Do you want to use TypeScript? › Yes
|
|
97
|
+
✔ Select dev tools › Tailwind CSS, Prettier, Husky
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Non-Interactive (Flags)
|
|
102
|
+
|
|
103
|
+
Skip all prompts by providing options via flags. This is CI-friendly and great
|
|
104
|
+
for automation.
|
|
105
|
+
|
|
106
|
+
Examples:
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
|
|
110
|
+
# Next.js + TypeScript with recommended tools (Tailwind, Prettier, Commitlint)
|
|
111
|
+
npx inikit my-app --next --ts --tools
|
|
112
|
+
|
|
113
|
+
# React + JavaScript with no dev tools and no git init
|
|
114
|
+
npx inikit my-app --react --js --no-tools --no-git
|
|
115
|
+
|
|
116
|
+
# React + TypeScript with only Tailwind and Prettier
|
|
117
|
+
npx inikit my-app --react --ts --tailwind --prettier
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Note:
|
|
122
|
+
|
|
123
|
+
- Do not combine framework flags together: use either `--next` or `--react`.
|
|
124
|
+
- Do not combine language flags together: use either `--ts` or `--js`.
|
|
125
|
+
- If you don't pass `--tools`, you can choose tools individually with
|
|
126
|
+
`--tailwind`, `--prettier`, and/or `--commitlint`.
|
|
127
|
+
|
|
128
|
+
#### CLI reference
|
|
129
|
+
|
|
130
|
+
Below are the main CLI flags and options. Flags can be used together or in CI
|
|
131
|
+
scripts to skip interactive prompts.
|
|
132
|
+
|
|
133
|
+
General options
|
|
134
|
+
|
|
135
|
+
| Flag / Argument | Purpose |
|
|
136
|
+
| ----------------- | ----------------------------------------------------------------------------- |
|
|
137
|
+
| `[directory]` | Target directory or project name to create (positional). |
|
|
138
|
+
| `-v`, `--version` | Print Inikit version (from `package.json`). |
|
|
139
|
+
| `-h`, `--help` | Show help and available options. |
|
|
140
|
+
| `--no-git` | Skip initializing a Git repository in the created project. |
|
|
141
|
+
| `--tools` | Use the recommended dev tools (recommended tools are marked below). |
|
|
142
|
+
| `--no-tools` | Skip automatic dev tool setup. Useful for minimal projects or custom tooling. |
|
|
143
|
+
|
|
144
|
+
Framework / language selection
|
|
145
|
+
|
|
146
|
+
| Flag | Behavior |
|
|
147
|
+
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
|
|
148
|
+
| `--next`, `--nextjs` | Initialize a Next.js project (uses `create-next-app`). Conflicts with `--react` and `--express`. |
|
|
149
|
+
| `--react`, `--reactjs` | Initialize a React project scaffolded with Vite. Conflicts with `--next` and `--express`. |
|
|
150
|
+
| `--express`, `--expressjs` | Initialize an Express.js TypeScript template (Express currently requires TypeScript). Conflicts with `--next` and `--react`. |
|
|
151
|
+
| `--ts`, `--typescript` | Generate TypeScript-based projects (default for most flows). Conflicts with `--js`. |
|
|
152
|
+
| `--js`, `--javascript` | Generate JavaScript-based projects. Conflicts with `--ts`. |
|
|
153
|
+
|
|
154
|
+
Tool-specific flags
|
|
155
|
+
|
|
156
|
+
The CLI dynamically adds one flag per tool defined in `inikit.config.ts`. Each
|
|
157
|
+
tool has a `baseName` and sometimes an `otherName` to provide a short flag
|
|
158
|
+
alias.
|
|
159
|
+
|
|
160
|
+
Use `--<baseName>` (or `--<otherName>` when available) to enable a specific tool
|
|
161
|
+
in non-interactive mode. When enabled, the CLI will validate language/framework
|
|
162
|
+
requirements and also add any tool dependencies automatically.
|
|
163
|
+
|
|
164
|
+
### Tools reference (flags and requirements)
|
|
165
|
+
|
|
166
|
+
The following table lists each tool flag available via the CLI (these are
|
|
167
|
+
defined in `inikit.config.ts`). For tools with an `otherName`, both flags are
|
|
168
|
+
accepted (e.g. `--tailwindcss` and `--tailwind`). The `Recommended` column
|
|
169
|
+
indicates whether the tool is included when you pass `--tools`.
|
|
170
|
+
|
|
171
|
+
| Flag(s) | Description | Recommended | Languages | Frameworks | Dependencies |
|
|
172
|
+
| ----------------------------- | -------------------------------------------------------------------------------------- | ----------: | --------- | -------------------------- | ------------- |
|
|
173
|
+
| `--tailwindcss`, `--tailwind` | Adds Tailwind CSS config and styles. | Yes | js, ts | reactjs, nextjs | — |
|
|
174
|
+
| `--eslint`, `--lint` | Adds ESLint configuration. | Yes | js, ts | reactjs, nextjs, expressjs | — |
|
|
175
|
+
| `--prettier` | Adds Prettier configuration and formatting helpers. | Yes | js, ts | reactjs, nextjs, expressjs | — |
|
|
176
|
+
| `--commitlint` | Adds Commitlint and Husky hooks for conventional commits. | Yes | js, ts | reactjs, nextjs, expressjs | — |
|
|
177
|
+
| `--shadcn` | Installs shadcn UI, copies Vite config and runs `shadcn init`. (TypeScript only). | No | ts | reactjs, nextjs | `tailwindcss` |
|
|
178
|
+
| `--prisma` | Adds Prisma ORM scaffold and installs `@prisma/client`. (TypeScript + Next.js). | No | ts | nextjs | — |
|
|
179
|
+
| `--authjs`, `--auth` | Adds Auth.js (next-auth) templates and runs `npx auth secret`. (TypeScript + Next.js). | No | ts | nextjs | `prisma` |
|
|
180
|
+
| `--zod` | Adds Zod validation templates. | No | ts | reactjs, nextjs | — |
|
|
181
|
+
| `--zustand` | Adds Zustand state store templates (JS/TS variants available). | No | ts | reactjs, nextjs | — |
|
|
182
|
+
|
|
183
|
+
Notes:
|
|
184
|
+
|
|
185
|
+
- Flags will be validated at runtime — if a tool requires TypeScript or a
|
|
186
|
+
specific framework and the provided flags don't match, the CLI will exit with
|
|
187
|
+
an error explaining the missing requirement.
|
|
188
|
+
- The `--tools` meta-flag will enable the recommended tools (`tailwindcss`,
|
|
189
|
+
`eslint`, `prettier`, `commitlint`) unless you explicitly pass other tool
|
|
190
|
+
flags.
|
|
191
|
+
- `--no-tools` disables all automatic tool installs.
|
|
192
|
+
|
|
193
|
+
### Templates included
|
|
194
|
+
|
|
195
|
+
The `templates/` folder contains template files copied into generated projects
|
|
196
|
+
when tools are enabled. Major template groups:
|
|
197
|
+
|
|
198
|
+
- `commitlint/` — commitlint configuration
|
|
199
|
+
- `husky/` — pre-configured Husky hooks (`pre-commit`, `commit-msg`)
|
|
200
|
+
- `prettier/` — `.prettierrc` and `.prettierignore`
|
|
201
|
+
- `tailwind/` — `vite.config` snippets and `index.css` bootstrap
|
|
202
|
+
- `shadcn-vite/` — Vite config and tsconfig snippets to support shadcn UI
|
|
203
|
+
- `prisma/` — `prisma` config and `schema.prisma` starter
|
|
204
|
+
- `authjs/` — example Auth.js/next-auth files and `.env` example
|
|
205
|
+
- `express-ts/` — an Express TypeScript starter used when `--express` is chosen
|
|
206
|
+
- `zod/` — example `validator.ts` and helper files
|
|
207
|
+
- `zustand/` — JS and TS store example implementations
|
|
208
|
+
|
|
209
|
+
If you add new tools in `inikit.config.ts`, the CLI will automatically expose
|
|
210
|
+
`--<baseName>` flags and include them in the interactive prompt options (via
|
|
211
|
+
`tli.ts`).
|
|
212
|
+
|
|
213
|
+
## ⚙️ How the CLI works (behind the scenes)
|
|
214
|
+
|
|
215
|
+
High-level flow when running `inikit` (interactive or non-interactive):
|
|
216
|
+
|
|
217
|
+
1. Validate and parse flags (commander). Conflicting flags are rejected (e.g.
|
|
218
|
+
`--next` vs `--react`).
|
|
219
|
+
2. Validate the project name using `validateProjectName` (`utils.ts`).
|
|
220
|
+
3. If interactive, prompt for framework, language, and dev tools (`tli.ts`).
|
|
221
|
+
4. Create the base project depending on the framework:
|
|
222
|
+
|
|
223
|
+
- Next.js: runs `npx create-next-app` (with `--ts` / `--js`, `--tailwind` when
|
|
224
|
+
requested).
|
|
225
|
+
- React (Vite): runs `npx create-vite` with `react` or `react-ts` template.
|
|
226
|
+
- Express (TypeScript): copies the `templates/express-ts` starter and installs
|
|
227
|
+
its dependencies.
|
|
228
|
+
|
|
229
|
+
5. For each selected tool, run the corresponding helper in `utils.ts` which
|
|
230
|
+
usually:
|
|
231
|
+
|
|
232
|
+
- Installs npm packages (dev or runtime)
|
|
233
|
+
- Copies template files from `templates/<tool>` into the new project
|
|
234
|
+
- Runs additional CLI helpers (for example: `npx shadcn init`,
|
|
235
|
+
`npx prisma generate`, `npx auth secret`, `npx husky init`).
|
|
236
|
+
|
|
237
|
+
6. Initialize Git (unless `--no-git` was passed).
|
|
238
|
+
7. Print a success message and exit.
|
|
239
|
+
|
|
240
|
+
Notes & edge cases:
|
|
241
|
+
|
|
242
|
+
- Tools are validated against `language` and `framework` requirements defined in
|
|
243
|
+
`inikit.config.ts`. If a tool requires TypeScript or a specific framework and
|
|
244
|
+
the flags don't match, the CLI exits with a clear error.
|
|
245
|
+
- When running with `--tools`, the CLI will enable all `recommended: true` tools
|
|
246
|
+
(see `inikit.config.ts`). You can override that by passing individual tool
|
|
247
|
+
flags.
|
|
248
|
+
- Express currently relies on a TypeScript starter; the code forces `typescript`
|
|
249
|
+
for Express-created projects (see `index.ts`).
|
|
250
|
+
- The CLI uses `execa` to run external commands; these subprocesses will emit
|
|
251
|
+
output to the terminal (e.g., `npx create-next-app`, `npm install`).
|
|
252
|
+
|
|
253
|
+
## 🏗️ Local Development
|
|
254
|
+
|
|
255
|
+
Want to contribute to Inikit or test changes locally? Here's how to get started:
|
|
256
|
+
|
|
257
|
+
### Prerequisites
|
|
258
|
+
|
|
259
|
+
- Node.js 18.0 or higher
|
|
260
|
+
- npm 7.0 or higher
|
|
261
|
+
- Git
|
|
262
|
+
|
|
263
|
+
### Clone and Setup
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
# Clone the repository
|
|
267
|
+
git clone https://github.com/ajaykumarn3000/inikit.git
|
|
268
|
+
cd Inikit
|
|
269
|
+
|
|
270
|
+
# Install dependencies
|
|
271
|
+
npm install
|
|
272
|
+
|
|
273
|
+
# Run in development mode
|
|
274
|
+
npm run dev
|
|
275
|
+
|
|
276
|
+
# Build the project
|
|
277
|
+
npm run build
|
|
278
|
+
|
|
279
|
+
# Test the CLI locally (creates a global symlink)
|
|
280
|
+
npm link
|
|
281
|
+
inikit
|
|
282
|
+
|
|
283
|
+
# Unlink when done testing
|
|
284
|
+
npm unlink -g inikit
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### Available Scripts
|
|
288
|
+
|
|
289
|
+
| Script | Description |
|
|
290
|
+
| ---------------------- | -------------------------------------------------------------------- |
|
|
291
|
+
| `npm run dev` | Run the CLI in development mode with `tsx` |
|
|
292
|
+
| `npm run build` | Build the project for production |
|
|
293
|
+
| `npm run lint` | Run ESLint to check for code issues |
|
|
294
|
+
| `npm run lint:fix` | Auto-fix ESLint issues where possible |
|
|
295
|
+
| `npm run format` | Format code with Prettier |
|
|
296
|
+
| `npm run format:check` | Check if code is properly formatted |
|
|
297
|
+
| `npm run clean` | Remove the `dist` directory |
|
|
298
|
+
| `npm run deploy` | Build and publish to npm (maintainers only) |
|
|
299
|
+
| `npm run prepare` | Run `husky` prepare script to set up git hooks (used by CI/prepare). |
|
|
300
|
+
|
|
301
|
+
### Project Structure
|
|
302
|
+
|
|
303
|
+
```text
|
|
304
|
+
Inikit/
|
|
305
|
+
├── index.ts # Main CLI entry point
|
|
306
|
+
├── tli.ts # Interactive prompt helpers
|
|
307
|
+
├── utils.ts # Core utility functions (commands to scaffold and add tools)
|
|
308
|
+
├── inikit.config.ts # Tool configuration (defines flags, requirements, and templates)
|
|
309
|
+
├── package.json # Project configuration
|
|
310
|
+
├── templates/ # Template files for different tools (copied into generated projects)
|
|
311
|
+
│ ├── commitlint/ # Commitlint configuration
|
|
312
|
+
│ ├── husky/ # Git hooks
|
|
313
|
+
│ ├── prettier/ # Prettier configuration
|
|
314
|
+
│ ├── shadcn-vite/ # Shadcn UI Vite/TypeScript template files
|
|
315
|
+
│ └── tailwind/ # Tailwind CSS files
|
|
316
|
+
├── dist/ # Compiled output (created after build)
|
|
317
|
+
└── README.md # This file
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
## 📄 Project Policies & Community Files
|
|
321
|
+
|
|
322
|
+
For details on contributing, security, and community standards, see:
|
|
323
|
+
|
|
324
|
+
- [LICENSE](./LICENSE)
|
|
325
|
+
- [Code of Conduct](./CODE_OF_CONDUCT.md)
|
|
326
|
+
- [Contributing Guidelines](./CONTRIBUTING.md)
|
|
327
|
+
- [Security Policy](./SECURITY.md)
|
|
328
|
+
|
|
329
|
+
## 🐛 Issues and Support
|
|
330
|
+
|
|
331
|
+
We're here to help! If you encounter any issues or have questions:
|
|
332
|
+
|
|
333
|
+
### 🚨 Bug Reports
|
|
334
|
+
|
|
335
|
+
- **GitHub Issues**:
|
|
336
|
+
[Report bugs here](https://github.com/ajaykumarn3000/inikit/issues)
|
|
337
|
+
- Please use our bug report template for faster resolution
|
|
338
|
+
|
|
339
|
+
### 💡 Feature Requests
|
|
340
|
+
|
|
341
|
+
- **GitHub Discussions**:
|
|
342
|
+
[Suggest new features](https://github.com/ajaykumarn3000/inikit/discussions)
|
|
343
|
+
- Help us understand your use case and requirements
|
|
344
|
+
|
|
345
|
+
### ❓ Questions and Support
|
|
346
|
+
|
|
347
|
+
- **GitHub Discussions**:
|
|
348
|
+
[Ask questions here](https://github.com/ajaykumarn3000/inikit/discussions)
|
|
349
|
+
- **Documentation**: Check our README for common use cases
|
|
350
|
+
- **Examples**: Look at the templates directory for configuration examples
|
|
351
|
+
|
|
352
|
+
### 🔍 Before Reporting
|
|
353
|
+
|
|
354
|
+
1. **Search existing issues** to avoid duplicates
|
|
355
|
+
2. **Check the latest version** - your issue might already be fixed
|
|
356
|
+
3. **Review the documentation** - the answer might already be there
|
|
357
|
+
4. **Test with a minimal example** - helps us reproduce the issue
|
|
358
|
+
|
|
359
|
+
## 🌟 Community
|
|
360
|
+
|
|
361
|
+
Join our growing community of developers:
|
|
362
|
+
|
|
363
|
+
- ⭐ **Star the project** on GitHub to show your support
|
|
364
|
+
- 🐛 **Report issues** to help us improve
|
|
365
|
+
- 💬 **Join discussions** to share ideas and ask questions
|
|
366
|
+
- 🤝 **Contribute code** to make Inikit even better
|
|
367
|
+
- 📢 **Share with others** who might find Inikit useful
|
|
368
|
+
|
|
369
|
+
## 🔒 Security
|
|
370
|
+
|
|
371
|
+
If you discover a security vulnerability, please report it privately by emailing
|
|
372
|
+
[ajaykumarn3000@gmail.com](mailto:ajaykumarn3000@gmail.com). Please do not
|
|
373
|
+
report security vulnerabilities through public GitHub issues.
|
|
374
|
+
|
|
375
|
+
## 📊 Project Stats
|
|
376
|
+
|
|
377
|
+
- **Language**: TypeScript
|
|
378
|
+
- **Package Manager**: npm
|
|
379
|
+
- **License**: MIT
|
|
380
|
+
- **Maintained**: ✅ Actively maintained
|
|
381
|
+
- **Node.js**: 18.0+ required
|
|
382
|
+
|
|
383
|
+
### Key dependencies
|
|
384
|
+
|
|
385
|
+
- Runtime: `@clack/prompts` (interactive prompts), `chalk` (colors), `commander`
|
|
386
|
+
(CLI parsing), `execa` (shell commands), `tsx` (dev runner)
|
|
387
|
+
- Dev: `eslint`, `prettier`, `husky`, `@commitlint/cli`,
|
|
388
|
+
`@commitlint/config-conventional`, `typescript`
|
|
389
|
+
|
|
390
|
+
## 🗺️ Roadmap
|
|
391
|
+
|
|
392
|
+
We're continuously working to improve Inikit. Here's what's on our radar:
|
|
393
|
+
|
|
394
|
+
- [ ] **Framework Support**: Vue.js, Svelte, Angular
|
|
395
|
+
- [ ] **Additional Tools**: Vitest, Jest, Cypress
|
|
396
|
+
- [ ] **Package Managers**: Yarn, pnpm support
|
|
397
|
+
- [ ] **Templates**: More starter templates
|
|
398
|
+
- [ ] **CI/CD**: GitHub Actions, GitLab CI templates
|
|
399
|
+
- [ ] **Database**: Drizzle integration options
|
|
400
|
+
- [ ] **UI Libraries**: More component library options
|
|
401
|
+
|
|
402
|
+
Want to contribute to any of these? We'd love your help!
|
|
403
|
+
|
|
404
|
+
## 📜 License
|
|
405
|
+
|
|
406
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
407
|
+
for details.
|
|
408
|
+
|
|
409
|
+
## 🙏 Acknowledgments
|
|
410
|
+
|
|
411
|
+
Inikit stands on the shoulders of giants. We're grateful to:
|
|
412
|
+
|
|
413
|
+
- **Open Source Community**: For the amazing tools and libraries we integrate
|
|
414
|
+
- **Framework Teams**: Next.js, React, Vite, and TypeScript teams for their
|
|
415
|
+
excellent work
|
|
416
|
+
- **Tool Maintainers**: ESLint, Prettier, Husky, and Commitlint contributors
|
|
417
|
+
- **Contributors**: Everyone who has contributed code, reported issues, or
|
|
418
|
+
shared feedback
|
|
419
|
+
- **Users**: The developer community that uses and trusts Inikit
|
|
420
|
+
- **Inspiration**: Projects like create-next-app, create-react-app, and
|
|
421
|
+
create-vite
|
|
422
|
+
|
|
423
|
+
Special thanks to all the developers who believe in making development tools
|
|
424
|
+
better and more accessible.
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
428
|
+
<div align="center">
|
|
429
|
+
|
|
430
|
+
**Made with ❤️ by [Ajaykumar Nadar](https://github.com/ajaykumarn3000/)**
|
|
431
|
+
|
|
432
|
+
_Building tools that developers love to use_
|
|
433
|
+
|
|
434
|
+
[⭐ Star on GitHub](https://github.com/ajaykumarn3000/inikit) •
|
|
435
|
+
[🐛 Report Bug](https://github.com/ajaykumarn3000/inikit/issues) •
|
|
436
|
+
[💡 Request Feature](https://github.com/ajaykumarn3000/inikit/discussions) •
|
|
437
|
+
[🤝 Contribute](https://github.com/ajaykumarn3000/inikit/blob/main/CONTRIBUTING.md)
|
|
438
|
+
|
|
439
|
+
</div>
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "inikit",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.1",
|
|
4
4
|
"description": "Best way to get started with Javascript project.",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
],
|
|
23
23
|
"repository": {
|
|
24
24
|
"type": "git",
|
|
25
|
-
"url": "https://github.com/
|
|
25
|
+
"url": "https://github.com/ajaykumarn3000/inikit.git"
|
|
26
26
|
},
|
|
27
27
|
"keywords": [
|
|
28
28
|
"inikit",
|
package/dist/utils.js
CHANGED
|
@@ -24,10 +24,10 @@ export const titleCase = (str) => {
|
|
|
24
24
|
.join(' ');
|
|
25
25
|
};
|
|
26
26
|
export const runTaskAnimation = async (startMessage, stopMessage, callback) => {
|
|
27
|
-
const
|
|
28
|
-
|
|
27
|
+
const spinner = p.spinner();
|
|
28
|
+
spinner.start(startMessage);
|
|
29
29
|
await callback();
|
|
30
|
-
|
|
30
|
+
spinner.stop(stopMessage);
|
|
31
31
|
};
|
|
32
32
|
export const createNextApp = async (appName, typeScript, tailwind = true) => {
|
|
33
33
|
await $({
|
|
@@ -40,8 +40,8 @@ export const createNextApp = async (appName, typeScript, tailwind = true) => {
|
|
|
40
40
|
export const createReactApp = async (appName, typeScript) => {
|
|
41
41
|
await $({
|
|
42
42
|
cwd: process.cwd(),
|
|
43
|
-
}) `
|
|
44
|
-
npm install -g create-vite@latest
|
|
43
|
+
}) `
|
|
44
|
+
npm install -g create-vite@latest
|
|
45
45
|
`;
|
|
46
46
|
await $({
|
|
47
47
|
cwd: process.cwd(),
|
|
@@ -108,10 +108,10 @@ export const addShadcnUi = async (appPath) => {
|
|
|
108
108
|
export const addPrisma = async (appPath) => {
|
|
109
109
|
await $({
|
|
110
110
|
cwd: appPath,
|
|
111
|
-
}) `npm install -D prisma`;
|
|
111
|
+
}) `npm install -D prisma@6`;
|
|
112
112
|
await $({
|
|
113
113
|
cwd: appPath,
|
|
114
|
-
}) `npm install @prisma/client dotenv`;
|
|
114
|
+
}) `npm install @prisma/client@6 dotenv`;
|
|
115
115
|
cpSync(path.join(templateDir, 'prisma'), path.resolve(appPath), {
|
|
116
116
|
force: true,
|
|
117
117
|
recursive: true,
|
package/package.json
CHANGED
|
@@ -1,95 +1,95 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "inikit",
|
|
3
|
-
"version": "3.0.
|
|
4
|
-
"description": "Best way to get started with Javascript project.",
|
|
5
|
-
"main": "./dist/index.js",
|
|
6
|
-
"scripts": {
|
|
7
|
-
"build": "npx eslint . && npm run clean && tsc && cp -r templates dist/templates",
|
|
8
|
-
"clean": "rm -rf dist",
|
|
9
|
-
"lint": "eslint . ",
|
|
10
|
-
"lint:fix": "eslint . --fix",
|
|
11
|
-
"format:check": "prettier --check .",
|
|
12
|
-
"format": "prettier --write .",
|
|
13
|
-
"dev": "tsx index.ts",
|
|
14
|
-
"deploy": "npm run build && npm publish --access public",
|
|
15
|
-
"prepare": "husky"
|
|
16
|
-
},
|
|
17
|
-
"bin": {
|
|
18
|
-
"inikit": "./dist/index.js"
|
|
19
|
-
},
|
|
20
|
-
"files": [
|
|
21
|
-
"dist"
|
|
22
|
-
],
|
|
23
|
-
"repository": {
|
|
24
|
-
"type": "git",
|
|
25
|
-
"url": "https://github.com/
|
|
26
|
-
},
|
|
27
|
-
"keywords": [
|
|
28
|
-
"inikit",
|
|
29
|
-
"cli",
|
|
30
|
-
"nextjs",
|
|
31
|
-
"typescript",
|
|
32
|
-
"eslint",
|
|
33
|
-
"prettier",
|
|
34
|
-
"commitlint",
|
|
35
|
-
"husky",
|
|
36
|
-
"template",
|
|
37
|
-
"prisma",
|
|
38
|
-
"tailwindcss",
|
|
39
|
-
"vite",
|
|
40
|
-
"reactjs",
|
|
41
|
-
"expressjs",
|
|
42
|
-
"zod",
|
|
43
|
-
"zustand",
|
|
44
|
-
"authjs",
|
|
45
|
-
"scaffold",
|
|
46
|
-
"development",
|
|
47
|
-
"tools"
|
|
48
|
-
],
|
|
49
|
-
"author": {
|
|
50
|
-
"username": "ajaykumarn3000",
|
|
51
|
-
"url": "https://ajaykumarn3000.in",
|
|
52
|
-
"name": "Ajaykumar Nadar",
|
|
53
|
-
"email": "ajaykumarn3000@gmail.com"
|
|
54
|
-
},
|
|
55
|
-
"contributors": [
|
|
56
|
-
{
|
|
57
|
-
"name": "Vishal R Mahajan",
|
|
58
|
-
"email": "me@vishalrmahajan.in",
|
|
59
|
-
"url": "https://vishalrmahajan.in"
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
"name": "Kevin Nadar",
|
|
63
|
-
"email": "me@itskevin.in",
|
|
64
|
-
"url": "https://itskevin.in"
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
"name": "Subhodeep Modak",
|
|
68
|
-
"email": "ssmodak787@gmail.com",
|
|
69
|
-
"url": "https://github.com/subhodeepmodak"
|
|
70
|
-
}
|
|
71
|
-
],
|
|
72
|
-
"license": "MIT",
|
|
73
|
-
"type": "module",
|
|
74
|
-
"devDependencies": {
|
|
75
|
-
"@commitlint/cli": "^19.8.1",
|
|
76
|
-
"@commitlint/config-conventional": "^19.8.1",
|
|
77
|
-
"@eslint/js": "^9.27.0",
|
|
78
|
-
"@eslint/json": "^0.12.0",
|
|
79
|
-
"@eslint/markdown": "^6.4.0",
|
|
80
|
-
"@types/node": "^22.15.21",
|
|
81
|
-
"eslint": "^9.27.0",
|
|
82
|
-
"globals": "^16.2.0",
|
|
83
|
-
"husky": "^9.1.7",
|
|
84
|
-
"prettier": "^3.5.3",
|
|
85
|
-
"typescript": "^5.8.3",
|
|
86
|
-
"typescript-eslint": "^8.32.1"
|
|
87
|
-
},
|
|
88
|
-
"dependencies": {
|
|
89
|
-
"@clack/prompts": "^0.11.0",
|
|
90
|
-
"chalk": "^5.4.1",
|
|
91
|
-
"commander": "^14.0.0",
|
|
92
|
-
"execa": "^9.5.3",
|
|
93
|
-
"tsx": "^4.19.4"
|
|
94
|
-
}
|
|
95
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "inikit",
|
|
3
|
+
"version": "3.0.1",
|
|
4
|
+
"description": "Best way to get started with Javascript project.",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build": "npx eslint . && npm run clean && tsc && cp -r templates dist/templates",
|
|
8
|
+
"clean": "rm -rf dist",
|
|
9
|
+
"lint": "eslint . ",
|
|
10
|
+
"lint:fix": "eslint . --fix",
|
|
11
|
+
"format:check": "prettier --check .",
|
|
12
|
+
"format": "prettier --write .",
|
|
13
|
+
"dev": "tsx index.ts",
|
|
14
|
+
"deploy": "npm run build && npm publish --access public",
|
|
15
|
+
"prepare": "husky"
|
|
16
|
+
},
|
|
17
|
+
"bin": {
|
|
18
|
+
"inikit": "./dist/index.js"
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist"
|
|
22
|
+
],
|
|
23
|
+
"repository": {
|
|
24
|
+
"type": "git",
|
|
25
|
+
"url": "https://github.com/ajaykumarn3000/inikit.git"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"inikit",
|
|
29
|
+
"cli",
|
|
30
|
+
"nextjs",
|
|
31
|
+
"typescript",
|
|
32
|
+
"eslint",
|
|
33
|
+
"prettier",
|
|
34
|
+
"commitlint",
|
|
35
|
+
"husky",
|
|
36
|
+
"template",
|
|
37
|
+
"prisma",
|
|
38
|
+
"tailwindcss",
|
|
39
|
+
"vite",
|
|
40
|
+
"reactjs",
|
|
41
|
+
"expressjs",
|
|
42
|
+
"zod",
|
|
43
|
+
"zustand",
|
|
44
|
+
"authjs",
|
|
45
|
+
"scaffold",
|
|
46
|
+
"development",
|
|
47
|
+
"tools"
|
|
48
|
+
],
|
|
49
|
+
"author": {
|
|
50
|
+
"username": "ajaykumarn3000",
|
|
51
|
+
"url": "https://ajaykumarn3000.in",
|
|
52
|
+
"name": "Ajaykumar Nadar",
|
|
53
|
+
"email": "ajaykumarn3000@gmail.com"
|
|
54
|
+
},
|
|
55
|
+
"contributors": [
|
|
56
|
+
{
|
|
57
|
+
"name": "Vishal R Mahajan",
|
|
58
|
+
"email": "me@vishalrmahajan.in",
|
|
59
|
+
"url": "https://vishalrmahajan.in"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"name": "Kevin Nadar",
|
|
63
|
+
"email": "me@itskevin.in",
|
|
64
|
+
"url": "https://itskevin.in"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"name": "Subhodeep Modak",
|
|
68
|
+
"email": "ssmodak787@gmail.com",
|
|
69
|
+
"url": "https://github.com/subhodeepmodak"
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"license": "MIT",
|
|
73
|
+
"type": "module",
|
|
74
|
+
"devDependencies": {
|
|
75
|
+
"@commitlint/cli": "^19.8.1",
|
|
76
|
+
"@commitlint/config-conventional": "^19.8.1",
|
|
77
|
+
"@eslint/js": "^9.27.0",
|
|
78
|
+
"@eslint/json": "^0.12.0",
|
|
79
|
+
"@eslint/markdown": "^6.4.0",
|
|
80
|
+
"@types/node": "^22.15.21",
|
|
81
|
+
"eslint": "^9.27.0",
|
|
82
|
+
"globals": "^16.2.0",
|
|
83
|
+
"husky": "^9.1.7",
|
|
84
|
+
"prettier": "^3.5.3",
|
|
85
|
+
"typescript": "^5.8.3",
|
|
86
|
+
"typescript-eslint": "^8.32.1"
|
|
87
|
+
},
|
|
88
|
+
"dependencies": {
|
|
89
|
+
"@clack/prompts": "^0.11.0",
|
|
90
|
+
"chalk": "^5.4.1",
|
|
91
|
+
"commander": "^14.0.0",
|
|
92
|
+
"execa": "^9.5.3",
|
|
93
|
+
"tsx": "^4.19.4"
|
|
94
|
+
}
|
|
95
|
+
}
|