@oktis-works/cms 0.1.6 → 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.
@@ -1 +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,CAqHzD;AAED,sDAAsD;AACtD,eAAO,MAAM,UAAU,64FAoFtB,CAAC;AAEF,mDAAmD;AACnD,eAAO,MAAM,SAAS,qqGAqGrB,CAAC"}
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"}
@@ -80,6 +80,76 @@ O \`.env\` gerado já aponta para \`localhost\`, que é onde o compose expõe as
80
80
  portas do Postgres (5432) e do Redis (6379). Os apps em si rodam via
81
81
  \`okcms start\` — o compose é só a infraestrutura.
82
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
+
83
153
  ## Comandos da CLI
84
154
 
85
155
  | Comando | O que faz |
@@ -1 +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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmHxB,CAAC;AACF,CAAC;AAED,sDAAsD;AACtD,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoFzB,CAAC;AAEF,mDAAmD;AACnD,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqGxB,CAAC"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oktis-works/cms",
3
- "version": "0.1.6",
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.6",
23
- "@oktis-works/core": "0.1.6",
24
- "@oktis-works/database": "0.1.6",
25
- "@oktis-works/validation": "0.1.6",
26
- "@oktis-works/theme-runtime": "0.1.6"
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"