@oktis-works/cms 0.1.5 → 0.1.7

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.
@@ -0,0 +1,7 @@
1
+ /** README.md do projeto scaffoldado. */
2
+ export declare function projectReadme(projectName: string): string;
3
+ /** PLUGIN.md — guia de desenvolvimento de plugins. */
4
+ export declare const PLUGIN_DOC = "# Desenvolvendo um Plugin\n\nPlugin \u00E9 a extens\u00E3o que se registra no runtime do CMS e participa do sistema\nde **hooks e filters** (transformar dados, reagir a eventos de conte\u00FAdo etc.).\nO cat\u00E1logo de hooks dispon\u00EDveis \u00E9 servido pela API em\n`GET /api/v1/hooks/catalog`.\n\n## Estrutura gerada\n\n```bash\nokcms plugin:create --name meu-plugin\n```\n\n```\nplugins/meu-plugin/\n\u251C\u2500\u2500 manifest.json # identidade + permiss\u00F5es + compatibilidade\n\u251C\u2500\u2500 index.js # entrypoint: module.exports.register(registry)\n\u2514\u2500\u2500 README.md\n```\n\n### manifest.json\n\n```json\n{\n \"name\": \"meu-plugin\",\n \"version\": \"0.1.0\",\n \"description\": \"Plugin meu-plugin para OkCMS\",\n \"type\": \"plugin\",\n \"main\": \"index.js\",\n \"scope\": \"tenant\",\n \"permissions\": [],\n \"compatibility\": { \"okcms\": \"^0.1.x\" }\n}\n```\n\n| Campo | Significado |\n|---|---|\n| `type` | `\"plugin\"` (fixo \u2014 temas usam `\"theme\"`) |\n| `main` | Arquivo de entrada com o registro |\n| `scope` | Escopo de atua\u00E7\u00E3o no multi-tenant (ex.: `tenant`) |\n| `permissions` | Permiss\u00F5es que o plugin pede (vazio = nenhuma) |\n| `compatibility.okcms` | Range semver exigido do CMS. **O scaffold preenche com a vers\u00E3o atual automaticamente** e o valor \u00E9 validado no scaffold e em cada instala\u00E7\u00E3o \u2014 manifesto incompat\u00EDvel \u00E9 rejeitado. |\n\n### index.js\n\n```js\n'use strict';\n\nmodule.exports.register = function register(registry) {\n registry.addFilter('theme:data:posts', (value) => value);\n};\n```\n\nO `register(registry)` \u00E9 chamado quando o plugin \u00E9 carregado. Use o registro\npara expor filters (transforma\u00E7\u00F5es) \u2014 veja o que existe em\n`GET /api/v1/hooks/catalog` para os nomes e contratos dispon\u00EDveis.\n\n## Fluxo de desenvolvimento\n\n```bash\n# 1. Crie (em ./plugins do projeto, ou num workspace externo com --dir)\nokcms plugin:create --name meu-plugin\n\n# 2. Implemente plugins/meu-plugin/index.js\n\n# 3. Se criou FORA do projeto, instale (valida compatibilidade e copia para plugins/)\nokcms plugin:install --name ../meu-plugin-fonte\n\n# 4. Gest\u00E3o\nokcms plugin:list # instalados + status\nokcms plugin:manage -n meu-plugin --info # informa\u00E7\u00F5es do manifesto\nokcms plugin:manage -n meu-plugin --disable # desabilita (mant\u00E9m os arquivos)\nokcms plugin:manage -n meu-plugin --enable # habilita de novo\nokcms plugin:manage -n meu-plugin --uninstall # remove arquivos + registro\n\n# 5. Busca no npm (pacotes com a keyword okcms-plugin)\nokcms plugin:search -q galeria\n```\n\n## Publicando\n\nEmpacote o diret\u00F3rio do plugin como pacote npm com a keyword\n`okcms-plugin` (\u00E9 o que o `okcms plugin:search` consulta) e mantenha\n`compatibility.okcms` atualizado para a linha do CMS que voc\u00EA suporta.\n";
5
+ /** THEME.md — guia de desenvolvimento de temas. */
6
+ export declare const THEME_DOC = "# Desenvolvendo um Tema\n\nTema \u00E9 o visual do site p\u00FAblico: **templates** (hierarquia de p\u00E1ginas) +\n**estilos**, com isolamento por `[data-theme]` para que um tema nunca vaze\nCSS para outro.\n\n## Estrutura gerada\n\n```bash\nokcms theme:create --name meu-tema --style css # css | scss | tailwind\n```\n\n```\nthemes/meu-tema/\n\u251C\u2500\u2500 theme.json # manifest (type: theme + compatibilidade)\n\u251C\u2500\u2500 templates/\n\u2502 \u251C\u2500\u2500 index.html # listagem (home)\n\u2502 \u2514\u2500\u2500 single.html # p\u00E1gina \u00FAnica (post/conte\u00FAdo)\n\u251C\u2500\u2500 style.css # engine css \u2014 ou styles/main.scss \u2014 ou src/input.css\n\u2514\u2500\u2500 README.md\n```\n\n### theme.json\n\n```json\n{\n \"name\": \"meu-tema\",\n \"version\": \"0.1.0\",\n \"description\": \"Tema meu-tema para OkCMS\",\n \"type\": \"theme\",\n \"compatibility\": { \"okcms\": \"^0.1.x\" }\n}\n```\n\nCom `--style scss` ou `--style tailwind`, o manifesto ganha tamb\u00E9m\n`stylesConfig` (`engine`, `entry`, `output`, `isolation`) apontando para a\nentrada de estilos. `compatibility.okcms` \u00E9 preenchido e validado\nautomaticamente, como nos plugins.\n\n### Templates\n\nSintaxe de template com vari\u00E1veis e la\u00E7os:\n\n```html\n<main class=\"site\">\n {{#each posts}}\n <article>\n <h2>{{this.title}}</h2>\n <p>{{this.excerpt}}</p>\n </article>\n {{/each}}\n</main>\n```\n\n- `templates/index.html` \u2014 listagem (ex.: `{{#each posts}}`)\n- `templates/single.html` \u2014 item individual (ex.: `{{title}}`, `{{content}}`)\n\n## Estilos por engine\n\n| `--style` | Arquivo gerado | Build |\n|---|---|---|\n| `css` (default) | `style.css` | nenhum \u2014 servido direto |\n| `scss` | `styles/main.scss` (+ `components.scss`) | `okcms theme:build -n meu-tema` |\n| `tailwind` | `src/input.css` + `tailwind.config.js` | `okcms theme:build -n meu-tema` |\n\nO build compila para `dist/theme.css` **com isolamento\n`[data-theme=\"meu-tema\"]`** (sem vazar estilos entre temas; o Tailwind j\u00E1\nsai com `preflight: false`).\n\n## Fluxo de desenvolvimento\n\n```bash\n# 1. Crie\nokcms theme:create --name meu-tema --style scss\n\n# 2. Edite templates/ e estilos\n\n# 3. Compile os estilos (scss/tailwind)\nokcms theme:build --name meu-tema\n\n# 4. Ative (grava activeTheme no okcms.config.json)\nokcms theme:manage --name meu-tema --set-active\n# (equivalente: ACTIVE_THEME=meu-tema no .env)\n\n# 5. Gest\u00E3o\nokcms theme:list # instalados + status\nokcms theme:manage -n meu-tema --info # informa\u00E7\u00F5es do theme.json\nokcms theme:manage -n meu-tema --disable|enable\nokcms theme:manage -n meu-tema --uninstall\nokcms theme:search -q blog # busca no npm (keyword okcms-theme)\n\n# Se criou FORA do projeto:\nokcms theme:install --name ../meu-tema-fonte\n```\n\n## Publicando\n\nPublique como pacote npm com a keyword `okcms-theme` (alvo do\n`okcms theme:search`) e mantenha `compatibility.okcms` na linha suportada\ndo CMS. O `theme:build` deve ser executado no seu processo de release para\nque `dist/theme.css` v\u00E1 junto no pacote.\n";
7
+ //# sourceMappingURL=scaffold-docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold-docs.d.ts","sourceRoot":"","sources":["../src/scaffold-docs.ts"],"names":[],"mappings":"AAIA,wCAAwC;AACxC,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA2LzD;AAED,sDAAsD;AACtD,eAAO,MAAM,UAAU,64FAoFtB,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,SAAS,qqGAqGrB,CAAC"}
@@ -0,0 +1,382 @@
1
+ // @oktis-works/cms - Documentação gerada no scaffold do projeto
2
+ // README.md (uso local/Docker + visão do sistema), PLUGIN.md e THEME.md
3
+ // (guias de desenvolvimento de extensões). Só escreve se o arquivo não existir.
4
+ /** README.md do projeto scaffoldado. */
5
+ export function projectReadme(projectName) {
6
+ return `# ${projectName}
7
+
8
+ Projeto OkCMS criado com \`okcms init\`. Este guia explica o sistema e como
9
+ rodar em desenvolvimento local e com Docker.
10
+
11
+ ## O que é o OkCMS
12
+
13
+ CMS API-first, multi-tenant e extensível. Quatro apps + uma CLI:
14
+
15
+ | App | Pacote | Função |
16
+ |---|---|---|
17
+ | **API** | \`@oktis-works/api\` | Servidor REST (Hono) em \`/api/v1\`: conteúdo, auth, mídia, plugins |
18
+ | **Admin** | \`@oktis-works/admin\` | Painel de administração (Astro + SolidJS) |
19
+ | **Web** | \`@oktis-works/web\` | Site público (Astro) |
20
+ | **Worker** | \`@oktis-works/worker\` | Filas/jobs em background (bullmq): publicação, mídia, webhooks, cache |
21
+ | **CLI** | \`@oktis-works/cms\` | \`okcms\` — init, start, banco, extensões, update |
22
+
23
+ - **Banco:** PostgreSQL (Row-Level Security, multi-tenant)
24
+ - **Cache e filas:** Redis
25
+ - **Extensões:** [plugins](./PLUGIN.md) (hooks/filters no runtime) e [temas](./THEME.md) (templates + estilos isolados)
26
+
27
+ ## Estrutura do projeto
28
+
29
+ | Caminho | O que é |
30
+ |---|---|
31
+ | \`okcms.config.json\` | Estrutura: nome, ports, storage, dirs, tema ativo. **Sem credenciais de banco.** |
32
+ | \`.env\` | **Fonte única de conexão**: banco (\`DB_*\` ou \`DATABASE_URL\`), Redis, JWT, ports |
33
+ | \`package.json\` | Apps do CMS (\`api\`, \`admin\`, \`web\`, \`worker\`) + CLI em devDependencies |
34
+ | \`plugins/\`, \`themes/\` | Extensões do projeto |
35
+ | \`migrations/\` | SQL de migrations (\`okcms db:migrate\`) |
36
+ | \`docker-compose.yml\` | Infra local: PostgreSQL + Redis (com healthcheck e volume) |
37
+
38
+ ## Começando (desenvolvimento local)
39
+
40
+ Pré-requisitos: **Node 20+** ou **Bun 1.3+** · **PostgreSQL 16+** (obrigatório) ·
41
+ **Redis** (opcional — só para filas do worker).
42
+
43
+ \`\`\`bash
44
+ # 1. Banco no .env — escolha UM formato:
45
+ # (a) variáveis separadas (default)
46
+ DB_HOST=localhost
47
+ DB_PORT=5432
48
+ DB_NAME=okcms
49
+ DB_USER=postgres
50
+ # (b) URL única — tem precedência sobre as DB_* acima
51
+ # DATABASE_URL=postgresql://postgres:senha@localhost:5432/okcms
52
+
53
+ # 2. Suba a infra (Postgres + Redis) — com Docker:
54
+ docker compose up -d
55
+ # Sem Docker: aponte DB_* para um Postgres seu. Sem Redis, use:
56
+ # REDIS_HOST=disabled (cache em memória; filas do worker exigem Redis)
57
+
58
+ # 3. Migrações
59
+ okcms db:migrate
60
+
61
+ # 4. Sobe tudo: api + admin + web + worker
62
+ okcms start
63
+
64
+ # 5. Se algo falhar
65
+ okcms doctor
66
+ \`\`\`
67
+
68
+ Ports padrão (ajustáveis no \`.env\`): **API 3000** (\`PORT\`) · **Admin 3001**
69
+ (\`ADMIN_PORT\`) · **Web 3002** (\`WEB_PORT\`).
70
+
71
+ ## Começando (Docker)
72
+
73
+ \`\`\`bash
74
+ docker compose up -d # só a infra: postgres:16 + redis:7 (healthcheck + volumes)
75
+ okcms db:migrate
76
+ okcms start # apps rodam como processos normais, fora do compose
77
+ \`\`\`
78
+
79
+ O \`.env\` gerado já aponta para \`localhost\`, que é onde o compose expõe as
80
+ portas do Postgres (5432) e do Redis (6379). Os apps em si rodam via
81
+ \`okcms start\` — o compose é só a infraestrutura.
82
+
83
+ ## Produção
84
+
85
+ Em produção **não use \`okcms start\` como supervisor** — ele é conveniência
86
+ de dev: não reinicia filhos que morrem e mistura os logs de todos os apps num
87
+ único fluxo. Escolha um dos caminhos abaixo.
88
+
89
+ ### Caminho 1: pm2 (processos no host)
90
+
91
+ Um processo pm2 **por app** — restart em crash, log por processo, \`pm2
92
+ startup\` na inicialização do servidor e \`pm2 reload\` individual
93
+ (zero-downtime). Requer **Bun instalado no servidor** (os apps sobem via
94
+ \`bunx\`).
95
+
96
+ \`\`\`js
97
+ // ecosystem.config.js
98
+ module.exports = {
99
+ apps: [
100
+ { name: 'okcms-api', script: 'bunx', args: '@oktis-works/api', env: { NODE_ENV: 'production', PORT: 3000 } },
101
+ { name: 'okcms-admin', script: 'bunx', args: '@oktis-works/admin', env: { NODE_ENV: 'production', PORT: 3001 } },
102
+ { name: 'okcms-web', script: 'bunx', args: '@oktis-works/web', env: { NODE_ENV: 'production', PORT: 3002 } },
103
+ { name: 'okcms-worker', script: 'bunx', args: '@oktis-works/worker', env: { NODE_ENV: 'production', WORKER_MODE: 'pm2' } },
104
+ ],
105
+ };
106
+ \`\`\`
107
+
108
+ \`\`\`bash
109
+ pm2 start ecosystem.config.js
110
+ pm2 save && pm2 startup # sobe com o servidor
111
+ pm2 reload okcms-api # atualiza sem downtime (por app)
112
+ pm2 logs okcms-api # log por processo
113
+ pm2 unmonitor okcms-api && pm2 delete okcms-api # remover
114
+ \`\`\`
115
+
116
+ - O worker tem **modo pm2 nativo**: \`WORKER_MODE=pm2\` (cluster) combinado com
117
+ \`WORKER_COUNT\` e \`WORKER_CONCURRENCY\`.
118
+ - Como cada app é um executável independente, o \`okcms start\` não é
119
+ necessário em produção — o pm2 supervisoria cada um diretamente.
120
+
121
+ ### Caminho 2: Docker imutável
122
+
123
+ Deploy por **imagem**: builda → sobe → troca; nunca se atualiza pacote dentro
124
+ de um container rodando. O template de imagem da API é multi-stage (bun,
125
+ \`NODE_ENV=production\`, expõe 3000) e fica em \`apps/api/Dockerfile\` no
126
+ repositório do OkCMS — o build precisa do contexto do monorepo:
127
+
128
+ \`\`\`bash
129
+ git clone https://github.com/oktis-works/cms.git
130
+ cd cms
131
+ docker build -f apps/api/Dockerfile -t okcms-api:v1 .
132
+ docker run -d --env-file /caminho/para/.env -p 3000:3000 okcms-api:v1
133
+ \`\`\`
134
+
135
+ - **Atualização** = build da imagem nova + subir + desligar a antiga;
136
+ **rollback** = voltar à imagem anterior (tague cada build).
137
+ - Postgres/Redis de produção: serviços gerenciados ou containers próprios com
138
+ volume e backup — não use o \`docker-compose.yml\` de dev.
139
+ - **Migração como passo de deploy**: \`okcms db:migrate\` antes de subir a
140
+ versão nova da aplicação.
141
+
142
+ ### Checklist (ambos os caminhos)
143
+
144
+ - [ ] \`NODE_ENV=production\` e \`JWT_SECRET\` forte e único
145
+ - [ ] \`.env\` fora do versionamento; credenciais nunca em \`okcms.config.json\`
146
+ - [ ] Proxy reverso com TLS (nginx/caddy) na frente de api/admin/web
147
+ - [ ] Versões fixas no \`package.json\` do projeto (nada de \`@latest\` em deploy)
148
+ - [ ] \`okcms db:migrate\` no pipeline de deploy e \`okcms db:backup\` agendado
149
+ - [ ] Redis real em produção (as filas do worker não funcionam sem Redis)
150
+ - [ ] \`okcms doctor\` verde no ambiente de destino
151
+ - [ ] Logs com destino (pm2 logrotate, ou stdout do container coletado)
152
+
153
+ ## Comandos da CLI
154
+
155
+ | Comando | O que faz |
156
+ |---|---|
157
+ | \`okcms init <dir>\` | Cria o projeto (arquivos + docs) e instala as dependências |
158
+ | \`okcms start [--api\|--admin\|--web\|--worker\|--all]\` | Sobe os apps (default: todos) |
159
+ | \`okcms stop\` / \`okcms status\` | Para / mostra os processos (pidfiles) |
160
+ | \`okcms doctor\` | Diagnóstico: node, \`.env\`, database (\`DB_*\` ou \`DATABASE_URL\`), config |
161
+ | \`okcms db:migrate\` · \`db:rollback\` · \`db:status\` | Migrations da pasta \`migrations/\` (\`--tenant\` opcional) |
162
+ | \`okcms db:backup\` · \`db:restore -f <arquivo>\` | Backup/restore do Postgres |
163
+ | \`okcms plugin:create -n <nome>\` | Scaffold de plugin — guia em [PLUGIN.md](./PLUGIN.md) |
164
+ | \`okcms plugin:install -n <caminho>\` | Instala plugin de um caminho local + registra |
165
+ | \`okcms plugin:list\` · \`plugin:search\` · \`plugin:manage\` | Lista, busca (npm) e habilita/desabilita plugins |
166
+ | \`okcms theme:create -n <nome> --style css\|scss\|tailwind\` | Scaffold de tema — guia em [THEME.md](./THEME.md) |
167
+ | \`okcms theme:install\` · \`theme:list\` · \`theme:search\` · \`theme:manage\` | Gestão de temas (\`--set-active\` define o ativo) |
168
+ | \`okcms theme:build -n <nome>\` | Compila SCSS/Tailwind → \`dist/theme.css\` isolado |
169
+ | \`okcms update [-i]\` | Lista/atualiza os pacotes \`@oktis-works/*\` do projeto |
170
+
171
+ ## Banco de dados
172
+
173
+ - **Conexão** (no \`.env\`, escolha um formato): \`DB_HOST/DB_PORT/DB_NAME/DB_USER/DB_PASSWORD\`
174
+ **ou** \`DATABASE_URL\` (tem precedência). O \`okcms doctor\` valida os dois.
175
+ - **Migrations**: arquivos SQL em \`migrations/\`; \`okcms db:migrate\` aplica,
176
+ \`db:rollback\` reverte, \`db:status\` mostra o estado. \`--tenant\` selectiva
177
+ (default \`default\`) — o banco é multi-tenant via Row-Level Security.
178
+ - **Backup**: \`okcms db:backup\` gera dump com timestamp; \`db:restore -f <arquivo>\` restaura.
179
+
180
+ ## Atualizando
181
+
182
+ \`\`\`bash
183
+ okcms update # lista pacotes @oktis-works/* com versão nova
184
+ okcms update -i # aplica a atualização
185
+ \`\`\`
186
+
187
+ ## Próximos passos
188
+
189
+ - Extender o CMS com plugins → [PLUGIN.md](./PLUGIN.md)
190
+ - Criar/ativar um tema → [THEME.md](./THEME.md)
191
+ `;
192
+ }
193
+ /** PLUGIN.md — guia de desenvolvimento de plugins. */
194
+ export const PLUGIN_DOC = `# Desenvolvendo um Plugin
195
+
196
+ Plugin é a extensão que se registra no runtime do CMS e participa do sistema
197
+ de **hooks e filters** (transformar dados, reagir a eventos de conteúdo etc.).
198
+ O catálogo de hooks disponíveis é servido pela API em
199
+ \`GET /api/v1/hooks/catalog\`.
200
+
201
+ ## Estrutura gerada
202
+
203
+ \`\`\`bash
204
+ okcms plugin:create --name meu-plugin
205
+ \`\`\`
206
+
207
+ \`\`\`
208
+ plugins/meu-plugin/
209
+ ├── manifest.json # identidade + permissões + compatibilidade
210
+ ├── index.js # entrypoint: module.exports.register(registry)
211
+ └── README.md
212
+ \`\`\`
213
+
214
+ ### manifest.json
215
+
216
+ \`\`\`json
217
+ {
218
+ "name": "meu-plugin",
219
+ "version": "0.1.0",
220
+ "description": "Plugin meu-plugin para OkCMS",
221
+ "type": "plugin",
222
+ "main": "index.js",
223
+ "scope": "tenant",
224
+ "permissions": [],
225
+ "compatibility": { "okcms": "^0.1.x" }
226
+ }
227
+ \`\`\`
228
+
229
+ | Campo | Significado |
230
+ |---|---|
231
+ | \`type\` | \`"plugin"\` (fixo — temas usam \`"theme"\`) |
232
+ | \`main\` | Arquivo de entrada com o registro |
233
+ | \`scope\` | Escopo de atuação no multi-tenant (ex.: \`tenant\`) |
234
+ | \`permissions\` | Permissões que o plugin pede (vazio = nenhuma) |
235
+ | \`compatibility.okcms\` | Range semver exigido do CMS. **O scaffold preenche com a versão atual automaticamente** e o valor é validado no scaffold e em cada instalação — manifesto incompatível é rejeitado. |
236
+
237
+ ### index.js
238
+
239
+ \`\`\`js
240
+ 'use strict';
241
+
242
+ module.exports.register = function register(registry) {
243
+ registry.addFilter('theme:data:posts', (value) => value);
244
+ };
245
+ \`\`\`
246
+
247
+ O \`register(registry)\` é chamado quando o plugin é carregado. Use o registro
248
+ para expor filters (transformações) — veja o que existe em
249
+ \`GET /api/v1/hooks/catalog\` para os nomes e contratos disponíveis.
250
+
251
+ ## Fluxo de desenvolvimento
252
+
253
+ \`\`\`bash
254
+ # 1. Crie (em ./plugins do projeto, ou num workspace externo com --dir)
255
+ okcms plugin:create --name meu-plugin
256
+
257
+ # 2. Implemente plugins/meu-plugin/index.js
258
+
259
+ # 3. Se criou FORA do projeto, instale (valida compatibilidade e copia para plugins/)
260
+ okcms plugin:install --name ../meu-plugin-fonte
261
+
262
+ # 4. Gestão
263
+ okcms plugin:list # instalados + status
264
+ okcms plugin:manage -n meu-plugin --info # informações do manifesto
265
+ okcms plugin:manage -n meu-plugin --disable # desabilita (mantém os arquivos)
266
+ okcms plugin:manage -n meu-plugin --enable # habilita de novo
267
+ okcms plugin:manage -n meu-plugin --uninstall # remove arquivos + registro
268
+
269
+ # 5. Busca no npm (pacotes com a keyword okcms-plugin)
270
+ okcms plugin:search -q galeria
271
+ \`\`\`
272
+
273
+ ## Publicando
274
+
275
+ Empacote o diretório do plugin como pacote npm com a keyword
276
+ \`okcms-plugin\` (é o que o \`okcms plugin:search\` consulta) e mantenha
277
+ \`compatibility.okcms\` atualizado para a linha do CMS que você suporta.
278
+ `;
279
+ /** THEME.md — guia de desenvolvimento de temas. */
280
+ export const THEME_DOC = `# Desenvolvendo um Tema
281
+
282
+ Tema é o visual do site público: **templates** (hierarquia de páginas) +
283
+ **estilos**, com isolamento por \`[data-theme]\` para que um tema nunca vaze
284
+ CSS para outro.
285
+
286
+ ## Estrutura gerada
287
+
288
+ \`\`\`bash
289
+ okcms theme:create --name meu-tema --style css # css | scss | tailwind
290
+ \`\`\`
291
+
292
+ \`\`\`
293
+ themes/meu-tema/
294
+ ├── theme.json # manifest (type: theme + compatibilidade)
295
+ ├── templates/
296
+ │ ├── index.html # listagem (home)
297
+ │ └── single.html # página única (post/conteúdo)
298
+ ├── style.css # engine css — ou styles/main.scss — ou src/input.css
299
+ └── README.md
300
+ \`\`\`
301
+
302
+ ### theme.json
303
+
304
+ \`\`\`json
305
+ {
306
+ "name": "meu-tema",
307
+ "version": "0.1.0",
308
+ "description": "Tema meu-tema para OkCMS",
309
+ "type": "theme",
310
+ "compatibility": { "okcms": "^0.1.x" }
311
+ }
312
+ \`\`\`
313
+
314
+ Com \`--style scss\` ou \`--style tailwind\`, o manifesto ganha também
315
+ \`stylesConfig\` (\`engine\`, \`entry\`, \`output\`, \`isolation\`) apontando para a
316
+ entrada de estilos. \`compatibility.okcms\` é preenchido e validado
317
+ automaticamente, como nos plugins.
318
+
319
+ ### Templates
320
+
321
+ Sintaxe de template com variáveis e laços:
322
+
323
+ \`\`\`html
324
+ <main class="site">
325
+ {{#each posts}}
326
+ <article>
327
+ <h2>{{this.title}}</h2>
328
+ <p>{{this.excerpt}}</p>
329
+ </article>
330
+ {{/each}}
331
+ </main>
332
+ \`\`\`
333
+
334
+ - \`templates/index.html\` — listagem (ex.: \`{{#each posts}}\`)
335
+ - \`templates/single.html\` — item individual (ex.: \`{{title}}\`, \`{{content}}\`)
336
+
337
+ ## Estilos por engine
338
+
339
+ | \`--style\` | Arquivo gerado | Build |
340
+ |---|---|---|
341
+ | \`css\` (default) | \`style.css\` | nenhum — servido direto |
342
+ | \`scss\` | \`styles/main.scss\` (+ \`components.scss\`) | \`okcms theme:build -n meu-tema\` |
343
+ | \`tailwind\` | \`src/input.css\` + \`tailwind.config.js\` | \`okcms theme:build -n meu-tema\` |
344
+
345
+ O build compila para \`dist/theme.css\` **com isolamento
346
+ \`[data-theme="meu-tema"]\`** (sem vazar estilos entre temas; o Tailwind já
347
+ sai com \`preflight: false\`).
348
+
349
+ ## Fluxo de desenvolvimento
350
+
351
+ \`\`\`bash
352
+ # 1. Crie
353
+ okcms theme:create --name meu-tema --style scss
354
+
355
+ # 2. Edite templates/ e estilos
356
+
357
+ # 3. Compile os estilos (scss/tailwind)
358
+ okcms theme:build --name meu-tema
359
+
360
+ # 4. Ative (grava activeTheme no okcms.config.json)
361
+ okcms theme:manage --name meu-tema --set-active
362
+ # (equivalente: ACTIVE_THEME=meu-tema no .env)
363
+
364
+ # 5. Gestão
365
+ okcms theme:list # instalados + status
366
+ okcms theme:manage -n meu-tema --info # informações do theme.json
367
+ okcms theme:manage -n meu-tema --disable|enable
368
+ okcms theme:manage -n meu-tema --uninstall
369
+ okcms theme:search -q blog # busca no npm (keyword okcms-theme)
370
+
371
+ # Se criou FORA do projeto:
372
+ okcms theme:install --name ../meu-tema-fonte
373
+ \`\`\`
374
+
375
+ ## Publicando
376
+
377
+ Publique como pacote npm com a keyword \`okcms-theme\` (alvo do
378
+ \`okcms theme:search\`) e mantenha \`compatibility.okcms\` na linha suportada
379
+ do CMS. O \`theme:build\` deve ser executado no seu processo de release para
380
+ que \`dist/theme.css\` vá junto no pacote.
381
+ `;
382
+ //# sourceMappingURL=scaffold-docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scaffold-docs.js","sourceRoot":"","sources":["../src/scaffold-docs.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,wEAAwE;AACxE,gFAAgF;AAEhF,wCAAwC;AACxC,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/C,OAAO,KAAK,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyLxB,CAAC;AACF,CAAC;AAED,sDAAsD;AACtD,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoFzB,CAAC;AAEF,mDAAmD;AACnD,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqGxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAM/C,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4ItF;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,SAAS,CAAA;CAAO,GACzC,aAAa,CAmBf"}
1
+ {"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAM/C,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2JtF;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,SAAS,CAAA;CAAO,GACzC,aAAa,CAmBf"}
package/dist/scaffold.js CHANGED
@@ -122,6 +122,19 @@ volumes:
122
122
  redisdata:
123
123
  `;
124
124
  await writeFile(join(root, 'docker-compose.yml'), compose, 'utf-8');
125
+ // Documentação do projeto — só escreve se não existir (não sobrescreve
126
+ // README editado pelo usuário em re-init).
127
+ const { projectReadme, PLUGIN_DOC, THEME_DOC } = await import('./scaffold-docs.js');
128
+ for (const [filename, content] of [
129
+ ['README.md', projectReadme(name)],
130
+ ['PLUGIN.md', PLUGIN_DOC],
131
+ ['THEME.md', THEME_DOC],
132
+ ]) {
133
+ const docPath = join(root, filename);
134
+ if (!existsSync(docPath)) {
135
+ await writeFile(docPath, content, 'utf-8');
136
+ }
137
+ }
125
138
  const relTarget = targetDir === '.' ? null : targetDir;
126
139
  const cfgName = DEFAULT_CONFIG_FILENAME;
127
140
  console.log(`Projeto "${name}" criado em ${root}`);
@@ -136,6 +149,7 @@ volumes:
136
149
  console.log(` ${step++}. okcms start (sobe api, admin, web e worker)`);
137
150
  console.log('');
138
151
  console.log(`Config do projeto: ${cfgName} | para ajuda: okcms --help`);
152
+ console.log(`Documentação: README.md (uso local/Docker) · PLUGIN.md e THEME.md (extensões)`);
139
153
  return root;
140
154
  }
141
155
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oktis-works/cms",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -19,11 +19,11 @@
19
19
  "clean": "rm -rf dist tsconfig.tsbuildinfo"
20
20
  },
21
21
  "dependencies": {
22
- "@oktis-works/config": "0.1.5",
23
- "@oktis-works/core": "0.1.5",
24
- "@oktis-works/database": "0.1.5",
25
- "@oktis-works/validation": "0.1.5",
26
- "@oktis-works/theme-runtime": "0.1.5"
22
+ "@oktis-works/config": "0.1.7",
23
+ "@oktis-works/core": "0.1.7",
24
+ "@oktis-works/database": "0.1.7",
25
+ "@oktis-works/validation": "0.1.7",
26
+ "@oktis-works/theme-runtime": "0.1.7"
27
27
  },
28
28
  "devDependencies": {
29
29
  "typescript": "5.7.3"