@exanderal/stackcraft 0.0.1 → 0.1.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/README.md +38 -0
- package/dist/add/index.d.ts +2 -0
- package/dist/add/index.d.ts.map +1 -0
- package/dist/add/index.js +7 -0
- package/dist/add/index.js.map +1 -0
- package/dist/create/index.d.ts +2 -0
- package/dist/create/index.d.ts.map +1 -0
- package/dist/create/index.js +50 -0
- package/dist/create/index.js.map +1 -0
- package/dist/create/scaffold.d.ts +3 -0
- package/dist/create/scaffold.d.ts.map +1 -0
- package/dist/create/scaffold.js +22 -0
- package/dist/create/scaffold.js.map +1 -0
- package/dist/create/scaffolders/__tests__/web-vite.test.d.ts +2 -0
- package/dist/create/scaffolders/__tests__/web-vite.test.d.ts.map +1 -0
- package/dist/create/scaffolders/__tests__/web-vite.test.js +31 -0
- package/dist/create/scaffolders/__tests__/web-vite.test.js.map +1 -0
- package/dist/create/scaffolders/api-nestjs-rest.d.ts +3 -0
- package/dist/create/scaffolders/api-nestjs-rest.d.ts.map +1 -0
- package/dist/create/scaffolders/api-nestjs-rest.js +14 -0
- package/dist/create/scaffolders/api-nestjs-rest.js.map +1 -0
- package/dist/create/scaffolders/base.d.ts +3 -0
- package/dist/create/scaffolders/base.d.ts.map +1 -0
- package/dist/create/scaffolders/base.js +14 -0
- package/dist/create/scaffolders/base.js.map +1 -0
- package/dist/create/scaffolders/utils/copy.d.ts +2 -0
- package/dist/create/scaffolders/utils/copy.d.ts.map +1 -0
- package/dist/create/scaffolders/utils/copy.js +34 -0
- package/dist/create/scaffolders/utils/copy.js.map +1 -0
- package/dist/create/scaffolders/web-nextjs.d.ts +3 -0
- package/dist/create/scaffolders/web-nextjs.d.ts.map +1 -0
- package/dist/create/scaffolders/web-nextjs.js +14 -0
- package/dist/create/scaffolders/web-nextjs.js.map +1 -0
- package/dist/create/scaffolders/web-vite.d.ts +3 -0
- package/dist/create/scaffolders/web-vite.d.ts.map +1 -0
- package/dist/create/scaffolders/web-vite.js +14 -0
- package/dist/create/scaffolders/web-vite.js.map +1 -0
- package/dist/create/types.d.ts +11 -0
- package/dist/create/types.d.ts.map +1 -0
- package/dist/create/types.js +2 -0
- package/dist/create/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/eslint/index.js +9 -0
- package/package.json +39 -4
- package/prettier/index.js +8 -0
- package/templates/api-nestjs-rest/.prettierrc +4 -0
- package/templates/api-nestjs-rest/eslint.config.mjs +34 -0
- package/templates/api-nestjs-rest/nest-cli.json +8 -0
- package/templates/api-nestjs-rest/package.json +74 -0
- package/templates/api-nestjs-rest/project.json +21 -0
- package/templates/api-nestjs-rest/src/app.controller.spec.ts +22 -0
- package/templates/api-nestjs-rest/src/app.controller.ts +12 -0
- package/templates/api-nestjs-rest/src/app.module.ts +10 -0
- package/templates/api-nestjs-rest/src/app.service.ts +8 -0
- package/templates/api-nestjs-rest/src/main.ts +8 -0
- package/templates/api-nestjs-rest/test/app.e2e-spec.ts +25 -0
- package/templates/api-nestjs-rest/test/jest-e2e.json +9 -0
- package/templates/api-nestjs-rest/tsconfig.build.json +4 -0
- package/templates/api-nestjs-rest/tsconfig.json +21 -0
- package/templates/base/.gitkeep +0 -0
- package/templates/base/nx.json +16 -0
- package/templates/base/package.json +14 -0
- package/templates/base/pnpm-workspace.yaml +3 -0
- package/templates/base/tsconfig.base.json +8 -0
- package/templates/web-nextjs/AGENTS.md +5 -0
- package/templates/web-nextjs/CLAUDE.md +1 -0
- package/templates/web-nextjs/app/favicon.ico +0 -0
- package/templates/web-nextjs/app/globals.css +10 -0
- package/templates/web-nextjs/app/layout.tsx +30 -0
- package/templates/web-nextjs/app/page.tsx +3 -0
- package/templates/web-nextjs/next.config.ts +8 -0
- package/templates/web-nextjs/package.json +23 -0
- package/templates/web-nextjs/project.json +17 -0
- package/templates/web-nextjs/public/file.svg +1 -0
- package/templates/web-nextjs/public/globe.svg +1 -0
- package/templates/web-nextjs/public/window.svg +1 -0
- package/templates/web-nextjs/tsconfig.json +34 -0
- package/templates/web-vite/eslint.config.js +23 -0
- package/templates/web-vite/index.html +13 -0
- package/templates/web-vite/package.json +30 -0
- package/templates/web-vite/project.json +21 -0
- package/templates/web-vite/public/favicon.svg +1 -0
- package/templates/web-vite/src/App.tsx +5 -0
- package/templates/web-vite/src/index.css +8 -0
- package/templates/web-vite/src/main.tsx +10 -0
- package/templates/web-vite/tsconfig.app.json +28 -0
- package/templates/web-vite/tsconfig.json +7 -0
- package/templates/web-vite/tsconfig.node.json +26 -0
- package/templates/web-vite/vite.config.ts +7 -0
- package/tsconfig/base.json +13 -0
- package/CLAUDE.md +0 -95
- package/index.js +0 -1
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
|
|
4
|
+
"target": "ES2023",
|
|
5
|
+
"lib": ["ES2023"],
|
|
6
|
+
"module": "ESNext",
|
|
7
|
+
"types": ["node"],
|
|
8
|
+
"skipLibCheck": true,
|
|
9
|
+
|
|
10
|
+
/* Bundler mode */
|
|
11
|
+
"moduleResolution": "bundler",
|
|
12
|
+
"allowImportingTsExtensions": true,
|
|
13
|
+
"verbatimModuleSyntax": true,
|
|
14
|
+
"moduleDetection": "force",
|
|
15
|
+
"noEmit": true,
|
|
16
|
+
|
|
17
|
+
/* Linting */
|
|
18
|
+
"strict": true,
|
|
19
|
+
"noUnusedLocals": true,
|
|
20
|
+
"noUnusedParameters": true,
|
|
21
|
+
"erasableSyntaxOnly": true,
|
|
22
|
+
"noFallthroughCasesInSwitch": true,
|
|
23
|
+
"noUncheckedSideEffectImports": true
|
|
24
|
+
},
|
|
25
|
+
"include": ["vite.config.ts"]
|
|
26
|
+
}
|
package/CLAUDE.md
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
# Stackcraft — Claude Context
|
|
2
|
-
|
|
3
|
-
## What is this project
|
|
4
|
-
|
|
5
|
-
Stackcraft is an opinionated full-stack project scaffolding CLI tool, open source on GitHub under the `@exanderal` npm scope. The goal is to let developers (including beginners and AI agents) spin up production-ready monorepo projects with minimal configuration.
|
|
6
|
-
|
|
7
|
-
**npm package name:** `stackcraft` (unscoped, claimed by exanderal)
|
|
8
|
-
**npm scope:** `@exanderal`
|
|
9
|
-
**npm username:** `exanderal`
|
|
10
|
-
|
|
11
|
-
## Architecture Decisions
|
|
12
|
-
|
|
13
|
-
- **Monorepo tool:** Nx (chosen over Turborepo for first-class Expo/React Native support via `@nx/expo`)
|
|
14
|
-
- **Package manager:** pnpm
|
|
15
|
-
- **Prompt library:** `@clack/prompts` (not inquirer)
|
|
16
|
-
- **Process runner:** `execa`
|
|
17
|
-
- **Language:** TypeScript throughout
|
|
18
|
-
|
|
19
|
-
## Repo Structure
|
|
20
|
-
|
|
21
|
-
```
|
|
22
|
-
/
|
|
23
|
-
├── packages/
|
|
24
|
-
│ ├── cli/ # Binary: npx stackcraft
|
|
25
|
-
│ ├── config-eslint/ # @exanderal/config-eslint (versioned)
|
|
26
|
-
│ ├── config-typescript/ # @exanderal/config-typescript (versioned)
|
|
27
|
-
│ └── config-prettier/ # @exanderal/config-prettier (versioned)
|
|
28
|
-
├── templates/
|
|
29
|
-
│ ├── base/ # Nx workspace root scaffolding
|
|
30
|
-
│ ├── api-nestjs-rest/ # NestJS REST structure
|
|
31
|
-
│ ├── api-nestjs-graphql/ # NestJS GraphQL structure (Phase 2)
|
|
32
|
-
│ ├── web-vite/ # Vite + React
|
|
33
|
-
│ ├── web-nextjs/ # Next.js
|
|
34
|
-
│ └── mobile-expo/ # Expo (Phase 2)
|
|
35
|
-
├── addons/ # Post-creation installers (Phase 3+)
|
|
36
|
-
├── nx.json
|
|
37
|
-
└── pnpm-workspace.yaml
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## CLI Design
|
|
41
|
-
|
|
42
|
-
Two layers:
|
|
43
|
-
|
|
44
|
-
1. **Create** — `npx stackcraft` interactive wizard for beginners, presets for power users
|
|
45
|
-
2. **Add** — `stackcraft add [addon]` post-creation addon system for power users and AI agents
|
|
46
|
-
|
|
47
|
-
### Create Flow (wizard)
|
|
48
|
-
- Project name
|
|
49
|
-
- Backend: NestJS REST / NestJS GraphQL
|
|
50
|
-
- Frontend: Vite + React / Next.js
|
|
51
|
-
- Mobile: None / Expo
|
|
52
|
-
- Package manager: pnpm (default) / npm
|
|
53
|
-
|
|
54
|
-
### Add System (addon interface)
|
|
55
|
-
```ts
|
|
56
|
-
interface Addon {
|
|
57
|
-
name: string
|
|
58
|
-
description: string
|
|
59
|
-
requires: AppType[]
|
|
60
|
-
incompatible?: AddonName[]
|
|
61
|
-
install: (ctx: AddonContext) => Promise<void>
|
|
62
|
-
}
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Phase Roadmap
|
|
66
|
-
|
|
67
|
-
| Phase | Scope |
|
|
68
|
-
|---|---|
|
|
69
|
-
| 1 (current) | Nx workspace + CLI skeleton + NestJS REST + Vite + Next.js templates |
|
|
70
|
-
| 2 | NestJS GraphQL template + codegen pipeline + Expo |
|
|
71
|
-
| 3 | `stackcraft add` system + first addons (auth, supabase, firebase) |
|
|
72
|
-
| 4 | Presets, --config JSON input, dry-run mode for AI agents |
|
|
73
|
-
|
|
74
|
-
## Key Conventions
|
|
75
|
-
|
|
76
|
-
- `apps/` — runnable applications (api, web, mobile, landing)
|
|
77
|
-
- `packages/` — shared code (graphql types, ui components, configs)
|
|
78
|
-
- Every app has the same scripts: `dev`, `build`, `test`, `lint`
|
|
79
|
-
- Shared configs live in versioned `@exanderal/config-*` packages so users can update via `pnpm update`
|
|
80
|
-
- Generated GraphQL types live in `packages/graphql/generated` — single source of truth
|
|
81
|
-
|
|
82
|
-
## Addons Strategy
|
|
83
|
-
|
|
84
|
-
Handpicked only due to maintenance overhead. Planned categories:
|
|
85
|
-
- Auth (e.g. better-auth)
|
|
86
|
-
- State management
|
|
87
|
-
- DB services (Supabase, Firebase)
|
|
88
|
-
- NestJS repository patterns
|
|
89
|
-
|
|
90
|
-
## What NOT to do
|
|
91
|
-
|
|
92
|
-
- Do not add features beyond what is asked
|
|
93
|
-
- Do not over-engineer templates — they should be minimal and clear
|
|
94
|
-
- Do not add addons that can't be properly maintained
|
|
95
|
-
- Keep the beginner wizard flow simple — descriptions on every option
|
package/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
console.log("stackcraft coming soon");
|