@nimbuslab/cli 0.16.4 → 0.16.5
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 +41 -75
- package/dist/index.js +4 -3
- package/package.json +4 -1
- package/.github/workflows/publish.yml +0 -67
- package/CLAUDE.md +0 -106
- package/MIGRATION-ROADMAP.md +0 -201
- package/bun.lock +0 -36
- package/docs/CI-CD.md +0 -181
- package/docs/analyze.md +0 -148
- package/docs/create.md +0 -219
- package/docs/migrate.md +0 -177
- package/docs/package.md +0 -229
- package/docs/upgrade.md +0 -152
- package/src/commands/analyze.ts +0 -210
- package/src/commands/create.ts +0 -1323
- package/src/commands/lola.ts +0 -1029
- package/src/commands/update.ts +0 -334
- package/src/commands/upgrade.ts +0 -251
- package/src/index.ts +0 -161
- package/tsconfig.json +0 -29
package/README.md
CHANGED
|
@@ -1,117 +1,83 @@
|
|
|
1
1
|
# @nimbuslab/cli
|
|
2
2
|
|
|
3
|
-
CLI
|
|
3
|
+
CLI para criar projetos com a stack moderna da nimbuslab.
|
|
4
|
+
|
|
5
|
+
## Instalacao
|
|
4
6
|
|
|
5
7
|
```bash
|
|
6
8
|
bun add -g @nimbuslab/cli
|
|
7
9
|
```
|
|
8
10
|
|
|
9
|
-
---
|
|
10
|
-
|
|
11
11
|
## Comandos
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
---
|
|
13
|
+
```bash
|
|
14
|
+
nimbus create # Criar novo projeto (interativo)
|
|
15
|
+
nimbus analyze # Analisar stack do projeto atual
|
|
16
|
+
nimbus upgrade # Planejar upgrades de dependencias
|
|
17
|
+
nimbus update # Atualizar o CLI
|
|
18
|
+
nimbus help # Ajuda
|
|
19
|
+
```
|
|
21
20
|
|
|
22
|
-
##
|
|
21
|
+
## Templates
|
|
23
22
|
|
|
24
|
-
###
|
|
23
|
+
### Landing Page
|
|
25
24
|
|
|
26
25
|
```bash
|
|
27
26
|
nimbus create meu-site --landing
|
|
28
|
-
cd meu-site
|
|
29
|
-
bun dev
|
|
30
27
|
```
|
|
31
28
|
|
|
32
|
-
|
|
29
|
+
Stack: Next.js 16 + React 19 + Tailwind CSS 4 + shadcn/ui
|
|
30
|
+
|
|
31
|
+
### Web App
|
|
33
32
|
|
|
34
33
|
```bash
|
|
35
34
|
nimbus create meu-app --app
|
|
36
|
-
cd meu-app
|
|
37
|
-
bun setup
|
|
38
|
-
bun dev
|
|
39
35
|
```
|
|
40
36
|
|
|
41
|
-
|
|
37
|
+
Stack: Landing + Better Auth + Drizzle ORM + Docker
|
|
38
|
+
|
|
39
|
+
### Monorepo
|
|
42
40
|
|
|
43
41
|
```bash
|
|
44
|
-
nimbus
|
|
45
|
-
nimbus upgrade --plan
|
|
42
|
+
nimbus create meu-projeto --turborepo
|
|
46
43
|
```
|
|
47
44
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
## Templates
|
|
51
|
-
|
|
52
|
-
| Template | Descricao | Docs |
|
|
53
|
-
|----------|-----------|------|
|
|
54
|
-
| `--landing` | Next.js 16 + Tailwind 4 + shadcn/ui | [docs/create.md#landing](./docs/create.md#landing-page---landing) |
|
|
55
|
-
| `--app` | Landing + Better Auth + Drizzle | [docs/create.md#app](./docs/create.md#web-app---app) |
|
|
56
|
-
| `--turborepo` | Monorepo com apps e packages | [docs/create.md#turborepo](./docs/create.md#turborepo---turborepo) |
|
|
57
|
-
| `--package` | Pacote npm com tsup + CI/CD | [docs/package.md](./docs/package.md) |
|
|
58
|
-
|
|
59
|
-
**Repos Open Source:**
|
|
60
|
-
- [create-next-landing](https://github.com/nimbuslab/create-next-landing)
|
|
61
|
-
- [create-next-app](https://github.com/nimbuslab/create-next-app)
|
|
62
|
-
- [create-turborepo](https://github.com/nimbuslab/create-turborepo)
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## Stack Alvo
|
|
45
|
+
Stack: Turborepo + apps/packages compartilhados
|
|
67
46
|
|
|
68
|
-
|
|
69
|
-
|-----------|------------|
|
|
70
|
-
| Framework | Next.js 16+ |
|
|
71
|
-
| Runtime | React 19+ |
|
|
72
|
-
| Styling | Tailwind CSS 4+ |
|
|
73
|
-
| Components | shadcn/ui |
|
|
74
|
-
| Package Manager | Bun |
|
|
75
|
-
| Auth | Better Auth |
|
|
76
|
-
| Database | Drizzle ORM |
|
|
77
|
-
| Monorepo | Turborepo |
|
|
47
|
+
## Analyze e Upgrade
|
|
78
48
|
|
|
79
|
-
|
|
49
|
+
```bash
|
|
50
|
+
# Analisar projeto existente
|
|
51
|
+
nimbus analyze ./meu-projeto
|
|
52
|
+
nimbus analyze --json
|
|
80
53
|
|
|
81
|
-
|
|
54
|
+
# Planejar upgrades
|
|
55
|
+
nimbus upgrade --plan
|
|
56
|
+
nimbus upgrade tailwind
|
|
57
|
+
nimbus upgrade next
|
|
58
|
+
```
|
|
82
59
|
|
|
83
|
-
|
|
84
|
-
|---------|----------|
|
|
85
|
-
| [docs/create.md](./docs/create.md) | Templates, opcoes, fluxo interativo |
|
|
86
|
-
| [docs/package.md](./docs/package.md) | Criar pacotes npm |
|
|
87
|
-
| [docs/analyze.md](./docs/analyze.md) | Deteccao de stack, recomendacoes |
|
|
88
|
-
| [docs/upgrade.md](./docs/upgrade.md) | Breaking changes, codemods |
|
|
89
|
-
| [docs/migrate.md](./docs/migrate.md) | Strangler Fig, estrategias |
|
|
90
|
-
| [MIGRATION-ROADMAP.md](./MIGRATION-ROADMAP.md) | Roadmap de migracao |
|
|
60
|
+
## Opcoes
|
|
91
61
|
|
|
92
|
-
|
|
62
|
+
| Flag | Descricao |
|
|
63
|
+
|------|-----------|
|
|
64
|
+
| `-y, --yes` | Aceitar padroes |
|
|
65
|
+
| `--no-git` | Nao inicializar Git |
|
|
66
|
+
| `--no-install` | Nao instalar dependencias |
|
|
93
67
|
|
|
94
68
|
## Requisitos
|
|
95
69
|
|
|
96
|
-
- [Bun](https://bun.sh)
|
|
97
|
-
- [Git](https://git-scm.com) - Controle de versao
|
|
70
|
+
- [Bun](https://bun.sh) >= 1.0
|
|
98
71
|
|
|
99
72
|
```bash
|
|
100
73
|
curl -fsSL https://bun.sh/install | bash
|
|
101
74
|
```
|
|
102
75
|
|
|
103
|
-
|
|
76
|
+
## Templates Open Source
|
|
104
77
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
gh repo clone nimbuslab/cli
|
|
109
|
-
cd cli
|
|
110
|
-
bun install
|
|
111
|
-
bun run dev
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
---
|
|
78
|
+
- [create-next-landing](https://github.com/nimbuslab/create-next-landing)
|
|
79
|
+
- [create-next-app](https://github.com/nimbuslab/create-next-app)
|
|
80
|
+
- [create-turborepo](https://github.com/nimbuslab/create-turborepo)
|
|
115
81
|
|
|
116
82
|
## Licenca
|
|
117
83
|
|
package/dist/index.js
CHANGED
|
@@ -156,6 +156,9 @@ var require_package = __commonJS((exports, module) => {
|
|
|
156
156
|
bin: {
|
|
157
157
|
nimbus: "./dist/index.js"
|
|
158
158
|
},
|
|
159
|
+
files: [
|
|
160
|
+
"dist"
|
|
161
|
+
],
|
|
159
162
|
scripts: {
|
|
160
163
|
dev: "bun run src/index.ts",
|
|
161
164
|
build: "bun build src/index.ts --outdir dist --target bun",
|
|
@@ -2653,8 +2656,6 @@ async function installLolaMemoryMCP() {
|
|
|
2653
2656
|
"claude",
|
|
2654
2657
|
"mcp",
|
|
2655
2658
|
"add",
|
|
2656
|
-
"-t",
|
|
2657
|
-
"sse",
|
|
2658
2659
|
"-s",
|
|
2659
2660
|
"user",
|
|
2660
2661
|
LOLA_MEMORY_NAME,
|
|
@@ -2668,7 +2669,7 @@ async function installLolaMemoryMCP() {
|
|
|
2668
2669
|
});
|
|
2669
2670
|
if (result.exitCode !== 0) {
|
|
2670
2671
|
console.log(import_picocolors7.default.yellow(" Erro ao adicionar MCP, pode ser adicionado manualmente:"));
|
|
2671
|
-
console.log(import_picocolors7.default.dim(` claude mcp add -
|
|
2672
|
+
console.log(import_picocolors7.default.dim(` claude mcp add -s user ${LOLA_MEMORY_NAME} -- bunx mcp-remote ${LOLA_MEMORY_URL}`));
|
|
2672
2673
|
return;
|
|
2673
2674
|
}
|
|
2674
2675
|
console.log(import_picocolors7.default.green(" MCP lola-memory instalado!"));
|
package/package.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nimbuslab/cli",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.5",
|
|
4
4
|
"description": "CLI para criar projetos nimbuslab",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"nimbus": "./dist/index.js"
|
|
8
8
|
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist"
|
|
11
|
+
],
|
|
9
12
|
"scripts": {
|
|
10
13
|
"dev": "bun run src/index.ts",
|
|
11
14
|
"build": "bun build src/index.ts --outdir dist --target bun",
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
name: Publish to npm
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches:
|
|
6
|
-
- main
|
|
7
|
-
|
|
8
|
-
jobs:
|
|
9
|
-
publish:
|
|
10
|
-
runs-on: ubuntu-latest
|
|
11
|
-
permissions:
|
|
12
|
-
contents: read
|
|
13
|
-
id-token: write
|
|
14
|
-
|
|
15
|
-
steps:
|
|
16
|
-
- name: Checkout
|
|
17
|
-
uses: actions/checkout@v4
|
|
18
|
-
|
|
19
|
-
- name: Check if version changed
|
|
20
|
-
id: version_check
|
|
21
|
-
run: |
|
|
22
|
-
LOCAL_VERSION=$(node -p "require('./package.json').version")
|
|
23
|
-
NPM_VERSION=$(npm view @nimbuslab/cli version 2>/dev/null || echo "0.0.0")
|
|
24
|
-
echo "local=$LOCAL_VERSION" >> $GITHUB_OUTPUT
|
|
25
|
-
echo "npm=$NPM_VERSION" >> $GITHUB_OUTPUT
|
|
26
|
-
if [ "$LOCAL_VERSION" = "$NPM_VERSION" ]; then
|
|
27
|
-
echo "changed=false" >> $GITHUB_OUTPUT
|
|
28
|
-
echo "Versao $LOCAL_VERSION ja existe no npm. Pulando publish."
|
|
29
|
-
else
|
|
30
|
-
echo "changed=true" >> $GITHUB_OUTPUT
|
|
31
|
-
echo "Nova versao detectada: $NPM_VERSION -> $LOCAL_VERSION"
|
|
32
|
-
fi
|
|
33
|
-
|
|
34
|
-
- name: Setup Bun
|
|
35
|
-
if: steps.version_check.outputs.changed == 'true'
|
|
36
|
-
uses: oven-sh/setup-bun@v2
|
|
37
|
-
with:
|
|
38
|
-
bun-version: latest
|
|
39
|
-
|
|
40
|
-
- name: Setup Node (for npm publish)
|
|
41
|
-
if: steps.version_check.outputs.changed == 'true'
|
|
42
|
-
uses: actions/setup-node@v4
|
|
43
|
-
with:
|
|
44
|
-
node-version: "24"
|
|
45
|
-
registry-url: "https://registry.npmjs.org"
|
|
46
|
-
|
|
47
|
-
- name: Install dependencies
|
|
48
|
-
if: steps.version_check.outputs.changed == 'true'
|
|
49
|
-
run: bun install
|
|
50
|
-
|
|
51
|
-
- name: Typecheck
|
|
52
|
-
if: steps.version_check.outputs.changed == 'true'
|
|
53
|
-
run: bun run typecheck
|
|
54
|
-
|
|
55
|
-
- name: Build
|
|
56
|
-
if: steps.version_check.outputs.changed == 'true'
|
|
57
|
-
run: bun run build
|
|
58
|
-
|
|
59
|
-
- name: Publish to npm
|
|
60
|
-
if: steps.version_check.outputs.changed == 'true'
|
|
61
|
-
run: npm publish --access public
|
|
62
|
-
env:
|
|
63
|
-
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
64
|
-
|
|
65
|
-
- name: Skip message
|
|
66
|
-
if: steps.version_check.outputs.changed == 'false'
|
|
67
|
-
run: echo "Publish pulado - versao ${{ steps.version_check.outputs.local }} ja existe no npm"
|
package/CLAUDE.md
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
Default to using Bun instead of Node.js.
|
|
3
|
-
|
|
4
|
-
- Use `bun <file>` instead of `node <file>` or `ts-node <file>`
|
|
5
|
-
- Use `bun test` instead of `jest` or `vitest`
|
|
6
|
-
- Use `bun build <file.html|file.ts|file.css>` instead of `webpack` or `esbuild`
|
|
7
|
-
- Use `bun install` instead of `npm install` or `yarn install` or `pnpm install`
|
|
8
|
-
- Use `bun run <script>` instead of `npm run <script>` or `yarn run <script>` or `pnpm run <script>`
|
|
9
|
-
- Use `bunx <package> <command>` instead of `npx <package> <command>`
|
|
10
|
-
- Bun automatically loads .env, so don't use dotenv.
|
|
11
|
-
|
|
12
|
-
## APIs
|
|
13
|
-
|
|
14
|
-
- `Bun.serve()` supports WebSockets, HTTPS, and routes. Don't use `express`.
|
|
15
|
-
- `bun:sqlite` for SQLite. Don't use `better-sqlite3`.
|
|
16
|
-
- `Bun.redis` for Redis. Don't use `ioredis`.
|
|
17
|
-
- `Bun.sql` for Postgres. Don't use `pg` or `postgres.js`.
|
|
18
|
-
- `WebSocket` is built-in. Don't use `ws`.
|
|
19
|
-
- Prefer `Bun.file` over `node:fs`'s readFile/writeFile
|
|
20
|
-
- Bun.$`ls` instead of execa.
|
|
21
|
-
|
|
22
|
-
## Testing
|
|
23
|
-
|
|
24
|
-
Use `bun test` to run tests.
|
|
25
|
-
|
|
26
|
-
```ts#index.test.ts
|
|
27
|
-
import { test, expect } from "bun:test";
|
|
28
|
-
|
|
29
|
-
test("hello world", () => {
|
|
30
|
-
expect(1).toBe(1);
|
|
31
|
-
});
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## Frontend
|
|
35
|
-
|
|
36
|
-
Use HTML imports with `Bun.serve()`. Don't use `vite`. HTML imports fully support React, CSS, Tailwind.
|
|
37
|
-
|
|
38
|
-
Server:
|
|
39
|
-
|
|
40
|
-
```ts#index.ts
|
|
41
|
-
import index from "./index.html"
|
|
42
|
-
|
|
43
|
-
Bun.serve({
|
|
44
|
-
routes: {
|
|
45
|
-
"/": index,
|
|
46
|
-
"/api/users/:id": {
|
|
47
|
-
GET: (req) => {
|
|
48
|
-
return new Response(JSON.stringify({ id: req.params.id }));
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
},
|
|
52
|
-
// optional websocket support
|
|
53
|
-
websocket: {
|
|
54
|
-
open: (ws) => {
|
|
55
|
-
ws.send("Hello, world!");
|
|
56
|
-
},
|
|
57
|
-
message: (ws, message) => {
|
|
58
|
-
ws.send(message);
|
|
59
|
-
},
|
|
60
|
-
close: (ws) => {
|
|
61
|
-
// handle close
|
|
62
|
-
}
|
|
63
|
-
},
|
|
64
|
-
development: {
|
|
65
|
-
hmr: true,
|
|
66
|
-
console: true,
|
|
67
|
-
}
|
|
68
|
-
})
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
HTML files can import .tsx, .jsx or .js files directly and Bun's bundler will transpile & bundle automatically. `<link>` tags can point to stylesheets and Bun's CSS bundler will bundle.
|
|
72
|
-
|
|
73
|
-
```html#index.html
|
|
74
|
-
<html>
|
|
75
|
-
<body>
|
|
76
|
-
<h1>Hello, world!</h1>
|
|
77
|
-
<script type="module" src="./frontend.tsx"></script>
|
|
78
|
-
</body>
|
|
79
|
-
</html>
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
With the following `frontend.tsx`:
|
|
83
|
-
|
|
84
|
-
```tsx#frontend.tsx
|
|
85
|
-
import React from "react";
|
|
86
|
-
import { createRoot } from "react-dom/client";
|
|
87
|
-
|
|
88
|
-
// import .css files directly and it works
|
|
89
|
-
import './index.css';
|
|
90
|
-
|
|
91
|
-
const root = createRoot(document.body);
|
|
92
|
-
|
|
93
|
-
export default function Frontend() {
|
|
94
|
-
return <h1>Hello, world!</h1>;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
root.render(<Frontend />);
|
|
98
|
-
```
|
|
99
|
-
|
|
100
|
-
Then, run index.ts
|
|
101
|
-
|
|
102
|
-
```sh
|
|
103
|
-
bun --hot ./index.ts
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
For more information, read the Bun API docs in `node_modules/bun-types/docs/**.mdx`.
|
package/MIGRATION-ROADMAP.md
DELETED
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
# Roadmap - Sistema de Migracao nimbuslab
|
|
2
|
-
|
|
3
|
-
> Lola Migration Assistant - Facilitar migracoes de projetos para o ecossistema nimbuslab
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## Visao Geral
|
|
8
|
-
|
|
9
|
-
O sistema de migracao permite:
|
|
10
|
-
1. **Analisar** projetos existentes (detectar stack)
|
|
11
|
-
2. **Planejar** caminho de migracao
|
|
12
|
-
3. **Executar** transformacoes automaticas (codemods)
|
|
13
|
-
4. **Verificar** resultado final
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Fase 1: Fundacao (v0.9.0)
|
|
18
|
-
|
|
19
|
-
### M80: Estrutura base do sistema de migracao
|
|
20
|
-
- [ ] Criar `src/commands/migrate.ts`
|
|
21
|
-
- [ ] Criar `src/commands/analyze.ts`
|
|
22
|
-
- [ ] Criar `src/commands/upgrade.ts`
|
|
23
|
-
- [ ] Estrutura de pastas para codemods
|
|
24
|
-
|
|
25
|
-
### M81: Comando `nimbus analyze`
|
|
26
|
-
- [ ] Detectar package.json (name, version, dependencies)
|
|
27
|
-
- [ ] Detectar framework (Next.js, React, Angular, Vue, etc)
|
|
28
|
-
- [ ] Detectar styling (Tailwind, CSS Modules, styled-components)
|
|
29
|
-
- [ ] Detectar package manager (bun, pnpm, npm, yarn)
|
|
30
|
-
- [ ] Detectar monorepo (Turborepo, Nx, Lerna)
|
|
31
|
-
- [ ] Detectar auth (Better Auth, NextAuth, Clerk, etc)
|
|
32
|
-
- [ ] Detectar DB (Drizzle, Prisma, TypeORM, etc)
|
|
33
|
-
- [ ] Output: JSON com analise completa
|
|
34
|
-
|
|
35
|
-
### M82: Comando `nimbus upgrade --plan`
|
|
36
|
-
- [ ] Comparar versoes atuais com recomendadas
|
|
37
|
-
- [ ] Listar breaking changes conhecidos
|
|
38
|
-
- [ ] Gerar plano de upgrade
|
|
39
|
-
- [ ] Estimar complexidade (low/medium/high)
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
## Fase 2: Codemods (v0.10.0)
|
|
44
|
-
|
|
45
|
-
### M83: Infraestrutura de codemods
|
|
46
|
-
- [ ] Criar `src/codemods/` estrutura
|
|
47
|
-
- [ ] Runner de codemods (jscodeshift ou ts-morph)
|
|
48
|
-
- [ ] Sistema de dry-run (preview)
|
|
49
|
-
- [ ] Rollback automatico em caso de erro
|
|
50
|
-
|
|
51
|
-
### M84: Codemod Tailwind 3 -> 4
|
|
52
|
-
- [ ] Migrar classes depreciadas
|
|
53
|
-
- [ ] Atualizar config (tailwind.config.js -> CSS)
|
|
54
|
-
- [ ] Converter @apply para novo formato
|
|
55
|
-
- [ ] Atualizar imports
|
|
56
|
-
|
|
57
|
-
### M85: Codemod React 18 -> 19
|
|
58
|
-
- [ ] Remover forwardRef (nao mais necessario)
|
|
59
|
-
- [ ] Atualizar tipos (ref como prop)
|
|
60
|
-
- [ ] Ajustar Suspense boundaries
|
|
61
|
-
- [ ] Atualizar async components
|
|
62
|
-
|
|
63
|
-
### M86: Codemod pnpm -> bun
|
|
64
|
-
- [ ] Converter pnpm-lock.yaml para bun.lockb
|
|
65
|
-
- [ ] Atualizar scripts no package.json
|
|
66
|
-
- [ ] Remover .npmrc especifico pnpm
|
|
67
|
-
- [ ] Atualizar CI/CD configs
|
|
68
|
-
|
|
69
|
-
### M87: Codemod Prisma -> Drizzle
|
|
70
|
-
- [ ] Converter schema.prisma para drizzle schema
|
|
71
|
-
- [ ] Gerar migrations Drizzle
|
|
72
|
-
- [ ] Atualizar queries (findMany -> select, etc)
|
|
73
|
-
- [ ] Atualizar auth config
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
## Fase 3: Templates Modulares (v0.11.0)
|
|
78
|
-
|
|
79
|
-
### M88: Refatorar templates em camadas
|
|
80
|
-
- [ ] Extrair `layers/base` (tsconfig, eslint, prettier)
|
|
81
|
-
- [ ] Extrair `layers/nextjs` (next.config, app structure)
|
|
82
|
-
- [ ] Extrair `layers/tailwind` (tailwind config, globals.css)
|
|
83
|
-
- [ ] Extrair `layers/shadcn` (components.json, ui/)
|
|
84
|
-
- [ ] Extrair `layers/auth` (Better Auth setup)
|
|
85
|
-
- [ ] Extrair `layers/db` (Drizzle setup)
|
|
86
|
-
- [ ] Extrair `layers/monorepo` (Turborepo config)
|
|
87
|
-
|
|
88
|
-
### M89: Comando `nimbus add <layer>`
|
|
89
|
-
- [ ] `nimbus add auth` - Adiciona Better Auth
|
|
90
|
-
- [ ] `nimbus add db` - Adiciona Drizzle
|
|
91
|
-
- [ ] `nimbus add shadcn` - Adiciona shadcn/ui
|
|
92
|
-
- [ ] `nimbus add monorepo` - Converte para Turborepo
|
|
93
|
-
- [ ] Detectar conflitos antes de aplicar
|
|
94
|
-
- [ ] Merge inteligente de configs
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## Fase 4: Migracao Assistida (v0.12.0)
|
|
99
|
-
|
|
100
|
-
### M90: Lola Migration Assistant
|
|
101
|
-
- [ ] Criar `.claude/agents/lola-migrate.md`
|
|
102
|
-
- [ ] Criar `.gemini/lola-migrate.md`
|
|
103
|
-
- [ ] Prompts especializados para migracao
|
|
104
|
-
- [ ] Checklist interativo
|
|
105
|
-
- [ ] Documentacao de decisoes
|
|
106
|
-
|
|
107
|
-
### M91: Comando `nimbus migrate`
|
|
108
|
-
- [ ] `nimbus migrate --from=angular` - Plano Angular -> Next.js
|
|
109
|
-
- [ ] `nimbus migrate --from=php` - Plano PHP -> Next.js
|
|
110
|
-
- [ ] `nimbus migrate --from=vue` - Plano Vue -> React
|
|
111
|
-
- [ ] Gerar plano detalhado (markdown)
|
|
112
|
-
- [ ] Estimar esforco (horas/dias)
|
|
113
|
-
|
|
114
|
-
### M92: Migration Guides
|
|
115
|
-
- [ ] `knowledge/migrations/nextjs-15-to-16.md`
|
|
116
|
-
- [ ] `knowledge/migrations/tailwind-3-to-4.md`
|
|
117
|
-
- [ ] `knowledge/migrations/prisma-to-drizzle.md`
|
|
118
|
-
- [ ] `knowledge/migrations/pnpm-to-bun.md`
|
|
119
|
-
- [ ] `knowledge/migrations/angular-to-nextjs.md`
|
|
120
|
-
- [ ] `knowledge/migrations/php-laravel-to-nextjs.md`
|
|
121
|
-
|
|
122
|
-
---
|
|
123
|
-
|
|
124
|
-
## Fase 5: Automacao Completa (v1.0.0)
|
|
125
|
-
|
|
126
|
-
### M93: Pipeline de migracao
|
|
127
|
-
- [ ] `nimbus migrate --execute` (aplica codemods)
|
|
128
|
-
- [ ] `nimbus migrate --verify` (roda build + lint + tests)
|
|
129
|
-
- [ ] Relatorio de migracao (o que mudou, o que revisar)
|
|
130
|
-
- [ ] Integracao com CI/CD
|
|
131
|
-
|
|
132
|
-
### M94: Atualizacao automatica
|
|
133
|
-
- [ ] `nimbus upgrade` detecta atualizacoes disponiveis
|
|
134
|
-
- [ ] `nimbus upgrade --all` aplica todas seguras
|
|
135
|
-
- [ ] Notificacao de breaking changes
|
|
136
|
-
- [ ] Changelog automatico
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
## Prioridade de Implementacao
|
|
141
|
-
|
|
142
|
-
| Milestone | Prioridade | Dependencia |
|
|
143
|
-
|-----------|------------|-------------|
|
|
144
|
-
| M80 | Alta | - |
|
|
145
|
-
| M81 | Alta | M80 |
|
|
146
|
-
| M82 | Alta | M81 |
|
|
147
|
-
| M83 | Alta | M80 |
|
|
148
|
-
| M84 | Media | M83 |
|
|
149
|
-
| M85 | Media | M83 |
|
|
150
|
-
| M86 | Media | M83 |
|
|
151
|
-
| M87 | Media | M83 |
|
|
152
|
-
| M88 | Media | M80 |
|
|
153
|
-
| M89 | Media | M88 |
|
|
154
|
-
| M90 | Alta | M80 |
|
|
155
|
-
| M91 | Media | M81, M83 |
|
|
156
|
-
| M92 | Media | - |
|
|
157
|
-
| M93 | Baixa | M91 |
|
|
158
|
-
| M94 | Baixa | M93 |
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
## Stack dos Codemods
|
|
163
|
-
|
|
164
|
-
- **Parser:** ts-morph (TypeScript AST)
|
|
165
|
-
- **Runner:** Custom (baseado em jscodeshift patterns)
|
|
166
|
-
- **Configs:** JSON transforms
|
|
167
|
-
- **CSS:** PostCSS para Tailwind
|
|
168
|
-
|
|
169
|
-
---
|
|
170
|
-
|
|
171
|
-
## Exemplo de Uso Final
|
|
172
|
-
|
|
173
|
-
```bash
|
|
174
|
-
# Analisar projeto
|
|
175
|
-
nimbus analyze ./meu-projeto
|
|
176
|
-
# Output: Next.js 15, React 18, Tailwind 3, pnpm, Prisma
|
|
177
|
-
|
|
178
|
-
# Ver plano de upgrade
|
|
179
|
-
nimbus upgrade --plan
|
|
180
|
-
# Output: Recomendado: Next 16, React 19, Tailwind 4, bun, Drizzle
|
|
181
|
-
|
|
182
|
-
# Upgrade especifico
|
|
183
|
-
nimbus upgrade tailwind
|
|
184
|
-
# Executa codemod Tailwind 3 -> 4
|
|
185
|
-
|
|
186
|
-
# Adicionar camada
|
|
187
|
-
nimbus add auth
|
|
188
|
-
# Adiciona Better Auth ao projeto
|
|
189
|
-
|
|
190
|
-
# Migracao completa
|
|
191
|
-
nimbus migrate --from=angular --plan
|
|
192
|
-
# Gera plano de migracao Angular -> Next.js
|
|
193
|
-
|
|
194
|
-
# Usar Lola para assistir
|
|
195
|
-
claude --agent lola-migrate
|
|
196
|
-
# Lola especializada em migracoes
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
---
|
|
200
|
-
|
|
201
|
-
*Ultima atualizacao: Janeiro 2026*
|
package/bun.lock
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"lockfileVersion": 1,
|
|
3
|
-
"configVersion": 1,
|
|
4
|
-
"workspaces": {
|
|
5
|
-
"": {
|
|
6
|
-
"name": "nimbus-cli",
|
|
7
|
-
"dependencies": {
|
|
8
|
-
"@clack/prompts": "^0.11.0",
|
|
9
|
-
"picocolors": "^1.1.1",
|
|
10
|
-
},
|
|
11
|
-
"devDependencies": {
|
|
12
|
-
"@types/bun": "latest",
|
|
13
|
-
"typescript": "^5",
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
},
|
|
17
|
-
"packages": {
|
|
18
|
-
"@clack/core": ["@clack/core@0.5.0", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow=="],
|
|
19
|
-
|
|
20
|
-
"@clack/prompts": ["@clack/prompts@0.11.0", "", { "dependencies": { "@clack/core": "0.5.0", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw=="],
|
|
21
|
-
|
|
22
|
-
"@types/bun": ["@types/bun@1.3.6", "", { "dependencies": { "bun-types": "1.3.6" } }, "sha512-uWCv6FO/8LcpREhenN1d1b6fcspAB+cefwD7uti8C8VffIv0Um08TKMn98FynpTiU38+y2dUO55T11NgDt8VAA=="],
|
|
23
|
-
|
|
24
|
-
"@types/node": ["@types/node@25.0.10", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-zWW5KPngR/yvakJgGOmZ5vTBemDoSqF3AcV/LrO5u5wTWyEAVVh+IT39G4gtyAkh3CtTZs8aX/yRM82OfzHJRg=="],
|
|
25
|
-
|
|
26
|
-
"bun-types": ["bun-types@1.3.6", "", { "dependencies": { "@types/node": "*" } }, "sha512-OlFwHcnNV99r//9v5IIOgQ9Uk37gZqrNMCcqEaExdkVq3Avwqok1bJFmvGMCkCE0FqzdY8VMOZpfpR3lwI+CsQ=="],
|
|
27
|
-
|
|
28
|
-
"picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="],
|
|
29
|
-
|
|
30
|
-
"sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="],
|
|
31
|
-
|
|
32
|
-
"typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
|
|
33
|
-
|
|
34
|
-
"undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
|
|
35
|
-
}
|
|
36
|
-
}
|