fwinit 1.3.0 → 1.3.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.
Files changed (2) hide show
  1. package/README.md +84 -22
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # fwinit
2
2
 
3
- CLI para crear proyectos desde templates. Instalás una vez y scaffoldás proyectos con un comando.
3
+ CLI para crear proyectos desde templates. Instalás una vez y scaffoldás proyectos con un comando: un solo template, o un proyecto full stack completo (backend + frontend + base de datos).
4
4
 
5
5
  ## Instalación
6
6
 
@@ -17,51 +17,112 @@ bun add -g fwinit
17
17
 
18
18
  ## Uso
19
19
 
20
- ### Modo directo
21
-
22
20
  ```bash
21
+ # Menú interactivo: elegís entre full stack, solo backend o solo frontend
22
+ fwinit
23
+
24
+ # Crear un solo template (backend o frontend)
23
25
  fwinit fastify mi-api
24
26
  fwinit aspnet mi-app
25
27
  fwinit react-native mi-mobile
28
+
29
+ # Crear un proyecto completo: backend + frontend (+ db incluida)
30
+ fwinit fullstack mi-proyecto
31
+
32
+ # Elegir los templates sin preguntas (modo scripting/CI)
33
+ fwinit fullstack mi-proyecto -b fastify -f react-native -p pnpm
34
+
35
+ # Ver templates disponibles (agrupados por capa)
36
+ fwinit list
37
+
38
+ # Ayuda
39
+ fwinit --help
26
40
  ```
27
41
 
28
42
  ### Modo interactivo
29
43
 
30
- ```bash
31
- fwinit
44
+ `fwinit` sin argumentos abre el menú principal:
45
+
46
+ ```
47
+ ? ¿Qué querés crear?
48
+ > Full stack (backend + frontend)
49
+ Solo backend (API)
50
+ Solo frontend (app)
32
51
  ```
33
52
 
34
- Te pregunta qué template usar y el nombre del proyecto.
53
+ - **Full stack**: te pregunta primero el backend y después el frontend, y arma el monorepo completo.
54
+ - **Solo backend / Solo frontend**: te pregunta el template de la capa, el nombre, el layout y el package manager.
35
55
 
36
- ### Ver templates disponibles
56
+ ### Proyecto full stack
37
57
 
38
58
  ```bash
39
- fwinit list
59
+ fwinit fullstack mi-proyecto
40
60
  ```
41
61
 
42
- ### Help
62
+ Pregunta qué backend querés (ASP.NET, Express, Fastify, Node.js Vanilla) y qué frontend (React Native). Genera:
63
+
64
+ ```
65
+ mi-proyecto/
66
+ ├── backend/ # API (template elegido — trae su DB: Prisma o EF)
67
+ ├── frontend/ # App (template frontend elegido)
68
+ ├── .gitignore # .atl/ · odd · .opencode/
69
+ ├── .opencode/ # Skills de opencode (create-specs incluida)
70
+ ├── README.md # Cómo correr backend y frontend
71
+ └── specs/ # La creás con /create-specs
72
+ ```
73
+
74
+ La base de datos no se configura aparte: viene incluida en el template backend (Prisma en los templates JS/TS, EF Core en ASP.NET).
75
+
76
+ ### Layout de capa (monorepo liviano)
77
+
78
+ Al crear un solo template, el CLI pregunta si querés empaquetar el código en una carpeta de capa (default: sí):
43
79
 
44
80
  ```bash
45
- fwinit --help
81
+ # backend/ + .opencode/ + specs/ al mismo nivel
82
+ fwinit express mi-api
83
+ # raíz limpia (todo el código en mi-api/)
84
+ fwinit express mi-api --no-backend
85
+ # forzar el layout de capa sin preguntas
86
+ fwinit express mi-api --backend
46
87
  ```
47
88
 
89
+ Igual para frontend: `fwinit react-native mi-app` pregunta por `frontend/`.
90
+
91
+ ## Flags
92
+
93
+ | Flag | Descripción |
94
+ |------|-------------|
95
+ | `-p, --pm <manager>` | Package manager: `npm`, `pnpm` o `bun` (saltea la pregunta) |
96
+ | `--backend` | Empaquetar el código en `backend/` (solo modo single, saltea la pregunta) |
97
+ | `--no-backend` | Dejar el código en la raíz del proyecto (saltea la pregunta) |
98
+ | `-b, --backend-template <tpl>` | Backend a usar en fullstack (saltea la pregunta) |
99
+ | `-f, --frontend-template <tpl>` | Frontend a usar en fullstack (saltea la pregunta) |
100
+
48
101
  ## Templates disponibles
49
102
 
50
- | Template | Descripción | Runtime |
51
- |----------|-------------|---------|
52
- | `aspnet` | API REST con ASP.NET Core, Clean Architecture y C# | dotnet |
53
- | `express` | API REST con Express, Prisma, TypeScript y Bun | bun |
54
- | `fastify` | API REST con Fastify, Prisma, TypeScript y Bun | bun |
55
- | `nodejs` | API con Node.js puro, Prisma, TypeScript y tsx | node |
56
- | `react-native` | App móvil con React Native, Expo y TypeScript | node |
103
+ | Template | Capa | Descripción | Runtime |
104
+ |----------|------|-------------|---------|
105
+ | `aspnet` | backend | API REST con ASP.NET Core, Clean Architecture y C# | dotnet |
106
+ | `express` | backend | API REST con Express, Prisma, TypeScript y Bun | bun |
107
+ | `fastify` | backend | API REST con Fastify, Prisma, TypeScript y Bun | bun |
108
+ | `nodejs` | backend | API con Node.js puro, Prisma, TypeScript y tsx | node |
109
+ | `react-native` | frontend | App móvil con React Native, Expo y TypeScript | node |
110
+
111
+ La capa es metadata de cada template (`layer` en `templates/<TEMPLATE>/template.json`): para sumar un frontend nuevo (Astro, Next.js...), alcanza con agregar la carpeta del template y su `layer`. Los templates se clasifican por capa en la metadata, no por estructura de carpetas.
112
+
113
+ El runtime `bun` de un template se porta automáticamente a `node` (npm/pnpm) si elegís npm o pnpm: scripts con `tsx`, tests con `vitest` y sin `bun-types`.
57
114
 
58
115
  ## Qué hace
59
116
 
60
- 1. Descarga el ZIP del repositorio de templates desde GitHub
61
- 2. Extrae el template seleccionado
62
- 3. Lo copia al directorio del proyecto
63
- 4. Limpia los lock files (cada proyecto instala los suyos)
64
- 5. Te muestra los próximos pasos (install y dev)
117
+ 1. Descarga el ZIP del repositorio de templates desde GitHub (una sola vez, también en fullstack)
118
+ 2. Extrae y copia el template (o los dos, `backend/` + `frontend/`) al proyecto
119
+ 3. Sustituye el nombre del proyecto (package.json, app.json de Expo, proyectos ASP.NET con "Example")
120
+ 4. Si corresponde, porta el template de runtime bun a node (npm/pnpm)
121
+ 5. Instala `.opencode/` con la skill `create-specs` y el comando `/create-specs`
122
+ 6. Limpia los lock files (cada proyecto instala los suyos)
123
+ 7. Te muestra los próximos pasos (install y dev de cada carpeta)
124
+
125
+ En modo fullstack, además crea `.gitignore` y `README.md` en la raíz del monorepo.
65
126
 
66
127
  ## Desarrollo
67
128
 
@@ -93,6 +154,7 @@ bun run typecheck
93
154
  ```bash
94
155
  node dist/index.js list
95
156
  node dist/index.js fastify mi-api
157
+ node dist/index.js fullstack mi-proyecto -b fastify -f react-native -p pnpm
96
158
  ```
97
159
 
98
160
  ### Link global para desarrollo
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fwinit",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "CLI para crear proyectos desde templates",
5
5
  "type": "module",
6
6
  "bin": {