create-aron-app 0.1.5 → 0.1.6
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/README.md +73 -38
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# create-aron-app
|
|
2
2
|
|
|
3
|
-
> CLI scaffolding tool
|
|
3
|
+
> CLI scaffolding tool that stamps out a production-ready Nx monorepo with Convex, Clerk, and either Next.js 15 or React Router v7.
|
|
4
4
|
|
|
5
5
|
## Usage
|
|
6
6
|
|
|
@@ -14,54 +14,66 @@ bunx create-aron-app
|
|
|
14
14
|
|
|
15
15
|
The CLI will ask a few questions and scaffold a new project:
|
|
16
16
|
|
|
17
|
-
- **Project name** —
|
|
18
|
-
- **
|
|
19
|
-
- **
|
|
17
|
+
- **Project name** — lowercase alphanumeric + hyphens
|
|
18
|
+
- **Framework** — Next.js 15 (App Router) or React Router v7 (SPA/Vite)
|
|
19
|
+
- **Output directory** — where to create the project (defaults to `~/Desktop/<name>`)
|
|
20
|
+
- **Package manager** — Bun (recommended), pnpm, npm, or Yarn
|
|
20
21
|
- **Install dependencies** — run install automatically
|
|
21
22
|
- **Initialize git** — create an initial commit
|
|
22
23
|
|
|
23
|
-
##
|
|
24
|
-
|
|
25
|
-
### Point to your GitHub repo
|
|
24
|
+
## What gets scaffolded
|
|
26
25
|
|
|
27
|
-
|
|
26
|
+
The output is an **Nx monorepo** with two apps:
|
|
28
27
|
|
|
29
|
-
```
|
|
30
|
-
|
|
28
|
+
```
|
|
29
|
+
my-app/
|
|
30
|
+
├── apps/
|
|
31
|
+
│ ├── api/ # Convex backend (convex-ents + Zod validation)
|
|
32
|
+
│ └── web/ # Next.js 15 or React Router v7 frontend
|
|
33
|
+
├── shared/
|
|
34
|
+
│ ├── ui/ # ~20 shadcn/Radix UI components + hooks
|
|
35
|
+
│ ├── utils/ # Convex client helpers, date utils
|
|
36
|
+
│ └── assets/ # global.css (Tailwind 4)
|
|
37
|
+
├── emails/ # React Email templates
|
|
38
|
+
├── scripts/ # sync_convex_env.ts
|
|
39
|
+
├── .cursor/ # Pre-configured Cursor AI rules and skills
|
|
40
|
+
└── .github/
|
|
41
|
+
└── workflows/ci.yml
|
|
31
42
|
```
|
|
32
43
|
|
|
33
|
-
|
|
44
|
+
A working **Todos** feature is wired end-to-end as the canonical example of the data model pattern.
|
|
34
45
|
|
|
35
|
-
|
|
36
|
-
|--------|---------|
|
|
37
|
-
| GitHub | `github:user/repo` |
|
|
38
|
-
| GitHub branch | `github:user/repo#main` |
|
|
39
|
-
| GitHub subdirectory | `github:user/repo/subdir` |
|
|
40
|
-
| GitLab | `gitlab:user/repo` |
|
|
41
|
-
| Bitbucket | `bitbucket:user/repo` |
|
|
46
|
+
## Stack
|
|
42
47
|
|
|
43
|
-
|
|
48
|
+
- **Backend** — [Convex](https://docs.convex.dev) with [`convex-ents`](https://labs.convex.dev/convex-ents) for relational modeling and Zod-validated function wrappers
|
|
49
|
+
- **Frontend** — [Next.js 15](https://nextjs.org) (App Router) or [React Router v7](https://reactrouter.com) (SPA/Vite)
|
|
50
|
+
- **Auth** — [Clerk](https://clerk.com) wired to both Convex and the frontend
|
|
51
|
+
- **Data fetching** — [TanStack Query v5](https://tanstack.com/query)
|
|
52
|
+
- **UI** — Radix UI + Tailwind CSS 4 + shared component library
|
|
53
|
+
- **Monorepo** — [Nx](https://nx.dev) with Bun workspaces
|
|
54
|
+
- **Linting** — [Biome](https://biomejs.dev)
|
|
55
|
+
- **AI** — Pre-baked Cursor rules and skills for the entire stack
|
|
44
56
|
|
|
45
|
-
|
|
46
|
-
const TEMPLATE_SOURCE = "/absolute/path/to/project-template";
|
|
47
|
-
```
|
|
57
|
+
## Development
|
|
48
58
|
|
|
49
59
|
### Build
|
|
50
60
|
|
|
51
61
|
```bash
|
|
52
|
-
cd create
|
|
53
62
|
bun run build
|
|
54
63
|
```
|
|
55
64
|
|
|
56
|
-
Bundles `src/index.ts` into `dist/index.js` (a single Node.js-compatible file).
|
|
65
|
+
Bundles `src/index.ts` into `dist/index.js` (a single Node.js-compatible file with a shebang).
|
|
57
66
|
|
|
58
67
|
### Test locally
|
|
59
68
|
|
|
60
69
|
```bash
|
|
61
|
-
# Run the
|
|
70
|
+
# Run the CLI directly with Bun (no build needed):
|
|
71
|
+
bun run start
|
|
72
|
+
|
|
73
|
+
# Or build and run the output file:
|
|
62
74
|
node dist/index.js
|
|
63
75
|
|
|
64
|
-
# Or link globally for the full npm create experience:
|
|
76
|
+
# Or link globally for the full `npm create` experience:
|
|
65
77
|
npm link
|
|
66
78
|
npm create aron-app
|
|
67
79
|
|
|
@@ -69,23 +81,46 @@ npm create aron-app
|
|
|
69
81
|
npm unlink -g create-aron-app
|
|
70
82
|
```
|
|
71
83
|
|
|
72
|
-
### Publish
|
|
84
|
+
### Publish
|
|
73
85
|
|
|
74
86
|
```bash
|
|
87
|
+
# Patch release (bumps version + publishes):
|
|
88
|
+
npm run release
|
|
89
|
+
|
|
90
|
+
# Or manually:
|
|
75
91
|
npm publish --access public
|
|
76
92
|
```
|
|
77
93
|
|
|
78
|
-
|
|
94
|
+
Publishing is also automated via GitHub Actions — creating a GitHub Release triggers `.github/workflows/publish.yml`, which builds and publishes to npm.
|
|
79
95
|
|
|
80
|
-
|
|
81
|
-
2. Optionally: `git init` + initial commit
|
|
82
|
-
3. Optionally: `bun install` (or your chosen package manager)
|
|
96
|
+
### Project structure
|
|
83
97
|
|
|
84
|
-
|
|
98
|
+
```
|
|
99
|
+
create-aron-app/
|
|
100
|
+
├── src/
|
|
101
|
+
│ ├── index.ts # CLI entrypoint (prompts + orchestration)
|
|
102
|
+
│ ├── types.ts # Shared TS types
|
|
103
|
+
│ └── utils/
|
|
104
|
+
│ ├── constant.ts # Framework/PM options + dependency lists
|
|
105
|
+
│ └── helpers.ts # File ops, template merging helpers
|
|
106
|
+
├── templates/
|
|
107
|
+
│ ├── _base/ # Shared monorepo skeleton (copied first)
|
|
108
|
+
│ ├── nextjs/ # Next.js 15 App Router variant
|
|
109
|
+
│ └── react-router/ # React Router v7 SPA variant
|
|
110
|
+
├── dist/ # Built CLI output
|
|
111
|
+
└── .github/
|
|
112
|
+
└── workflows/
|
|
113
|
+
└── publish.yml # Auto-publish on GitHub Release
|
|
114
|
+
```
|
|
85
115
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
116
|
+
### How scaffolding works
|
|
117
|
+
|
|
118
|
+
1. Copy `templates/_base/` into the output directory
|
|
119
|
+
2. Copy the framework-specific template into `apps/web/`
|
|
120
|
+
3. Rename `_gitignore` files to `.gitignore` (npm strips dotfiles on publish)
|
|
121
|
+
4. Merge framework deps into the root `package.json`
|
|
122
|
+
5. Inject the right Nx plugins into `nx.json`
|
|
123
|
+
6. Replace the `project:` placeholder with the actual project name in all `project.json` files
|
|
124
|
+
7. Promote `apps/web/.env.example` to the root as `.env.example`
|
|
125
|
+
8. Optionally: `git init` + initial commit
|
|
126
|
+
9. Optionally: `<pm> install`
|