@codigodoleo/wp-kit 3.3.0 → 3.4.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 CHANGED
@@ -1,240 +1,119 @@
1
- # @codigodoleo/wp-kit (CLI: leo-wp)
1
+ # @codigodoleo/wp-kit
2
2
 
3
- Simplifique e padronize seus projetos WordPress em minutos. Este CLI cria um esqueleto moderno, opinativo e pronto para CI/CD, com integração a temas (Sage), qualidade de código e fluxos de deploy — tudo com escolhas inteligentes e mínima fricção.
3
+ [![npm version](https://img.shields.io/npm/v/@codigodoleo/wp-kit)](https://www.npmjs.com/package/@codigodoleo/wp-kit)
4
+ [![license](https://img.shields.io/npm/l/@codigodoleo/wp-kit)](LICENSE)
4
5
 
5
- ## Por que usar
6
+ wp-kit monta a estrutura que você sempre recria do zero — lint, CI, deploy, scaffolds WordPress — em menos de um minuto.
6
7
 
7
- - Padronização entre projetos e equipes
8
- - Onboarding rápido (menos passos manuais, menos erros)
9
- - CI/CD dinâmico que se adapta às suas escolhas (GitLab, GitHub ou Bitbucket)
10
- - Convenções modernas (Conventional Commits, linters, hooks)
8
+ ## O que você quer fazer hoje?
11
9
 
12
- ## Requisitos
13
-
14
- - Node.js 18+ (recomendado 22+)
15
- - npm
16
- - Git
17
- - PHP 8.2+ e Composer (necessário para tema Sage e ferramentas PHP)
10
+ | Cenário | Módulos ativos | Quickstart |
11
+ | ----------------------------- | ------------------------- | ----------------------------- |
12
+ | lint, git e deploy | `lint` + `git` + `deploy` | [→ Quickstart](#quickstart) |
13
+ | Tema WordPress moderno (Sage) | + `sage` | [→ Sage](#sage) |
14
+ | MU Plugin customizado | + `mu-plugin` | [→ MU Plugin](#mu-plugin) |
15
+ | Plugin WordPress | + `plugin` | [→ Plugin](#plugin) |
16
+ | Tema do zero com Vite | + `blank-theme` | [→ Blank Theme](#blank-theme) |
18
17
 
19
- ## Quickstart (1 minuto)
18
+ > Os módulos são combinantes — você pode ter Sage + mu-plugin + lint no mesmo projeto. E pode adicionar módulos rodando o `init` novamente.
20
19
 
21
- - Criar projeto interativo:
20
+ ## Quickstart
22
21
 
23
22
  ```bash
24
- npx @codigodoleo/wp-kit init --output meu-projeto
23
+ npx @codigodoleo/wp-kit init --output meu-site
25
24
  ```
26
25
 
27
- - Projeto padrão (sem perguntas):
26
+ Sem perguntas (defaults inteligentes):
28
27
 
29
28
  ```bash
30
- npx @codigodoleo/wp-kit init --output meu-projeto --defaults
29
+ npx @codigodoleo/wp-kit init --output meu-site --defaults
31
30
  ```
32
31
 
33
- - Instalação global (opcional):
32
+ Instalação global (opcional):
34
33
 
35
34
  ```bash
36
35
  npm install -g @codigodoleo/wp-kit
37
- leo-wp init --output meu-projeto
38
- ```
39
-
40
- ## O que é gerado
41
-
42
- - Estrutura WordPress com `content/` (temas, plugins, uploads)
43
- - Configurações úteis em `server/` e arquivos base (`.env`, `.editorconfig`, etc.)
44
- - Workspace do VSCode (opcional)
45
- - Pipelines de CI prontos, conforme o provedor escolhido:
46
- - GitLab: `.gitlab-ci.yml`
47
- - GitHub: `.github/workflows/ci.yml`
48
- - Bitbucket: `bitbucket-pipelines.yml`
49
- - Convenções de Git e qualidade (husky, commitlint, lint-staged, ESLint, Prettier, Stylelint, Pint)
50
- - Integração opcional com tema Sage (v10/v11), com build automatizado
51
-
52
- ## Como funciona (visão rápida)
53
-
54
- 1. Você roda `init` e responde às perguntas (ou usa `--defaults`).
55
- 2. O CLI infere capacidades (Composer, Node, Sage, Docker) e monta `context.ci`.
56
- 3. O módulo `deploy` gera o pipeline certo para seu provedor (GitLab/GitHub/Bitbucket) com jobs somente do que faz sentido para o seu projeto.
57
-
58
- Exemplo: Se você ativar Sage 11, ajustamos versões automaticamente (PHP/Node/WP) e incluímos o job de build do tema no CI.
59
-
60
- ## Fluxo recomendado
61
-
62
- 1. Execute o comando (interativo):
63
-
64
- ```bash
65
- npx @codigodoleo/wp-kit init --output meu-wp
36
+ leo-wp init --output meu-site
66
37
  ```
67
38
 
68
- 2. Escolha o provedor de Git (ex.: GitLab ou GitHub) no prompt do módulo "git".
69
- 3. Ative o módulo "deploy" (gera a pipeline automática).
70
- 4. Se desejar, habilite o tema Sage (o build entra na pipeline automaticamente).
71
- 5. Faça o primeiro commit e suba o repositório. O CI já estará pronto para rodar.
39
+ ## Scaffolds disponíveis
72
40
 
73
- ## Comandos disponíveis
41
+ | | Sage | MU Plugin | Plugin | Blank Theme |
42
+ | ------------- | ------------------------- | --------------------------- | ------------------------ | ------------------------- |
43
+ | **Diretório** | `content/themes/{name}` | `content/mu-plugins/{name}` | `content/plugins/{name}` | `content/themes/{name}` |
44
+ | **PHP** | Acorn + Blade | PSR-4 | PSR-4 | Mínimo |
45
+ | **JS/CSS** | Vite (Bud) | — | — | Vite + SCSS |
46
+ | **ACF** | ACF Composer | — | — | — |
47
+ | **Lint** | ESLint + Stylelint + Pint | Pint | Pint | ESLint + Stylelint + Pint |
74
48
 
75
- - `init [options]` — Inicializa um novo projeto WordPress com DevOps
76
- - `--help` — Ajuda
77
- - `--version` — Versão
78
-
79
- ### Opções do `init`
80
-
81
- - `--output <path>` — Diretório de saída do projeto
82
- - `--defaults` — Usa configurações padrão sem interação
83
-
84
- ## Exemplos práticos
85
-
86
- - Interativo, escolhendo tudo pelo prompt:
87
-
88
- ```bash
89
- npx @codigodoleo/wp-kit init --output site-corporativo
90
- ```
91
-
92
- - Projeto padrão, sem prompts (padrões inteligentes):
93
-
94
- ```bash
95
- npx @codigodoleo/wp-kit init --output blog-interno --defaults
96
- ```
97
-
98
- ## Estrutura essencial de pastas
99
-
100
- ```
101
- meu-projeto/
102
- content/
103
- themes/
104
- plugins/
105
- uploads/
106
- server/
107
- .gitlab-ci.yml | .github/workflows/ci.yml | bitbucket-pipelines.yml
108
- .env, .editorconfig, README.md, etc.
109
- ```
49
+ ## Requisitos
110
50
 
111
- ## CI Dinâmico (como decidimos o que rodar)
51
+ - Node.js 18+ (recomendado 22+)
52
+ - npm
53
+ - Git
54
+ - PHP 8.2+ e Composer — necessário para Sage, mu-plugin e plugin
112
55
 
113
- Detectamos automaticamente:
56
+ ## Módulos
114
57
 
115
- - `composer.json` (root/tema) job de Composer
116
- - `package.json` (root/tema) job de Node
117
- - Tema Sage ativo job de build do tema
118
- - Deploy Docker escolhido job de deploy Docker
58
+ | Módulo | O que faz |
59
+ | ------------- | ------------------------------------------------------------------- |
60
+ | `git` | Inicializa repositório, Husky, commitlint, lint-staged |
61
+ | `deploy` | Gera pipeline de CI (GitLab, GitHub Actions ou Bitbucket Pipelines) |
62
+ | `lint` | Configura ESLint, Prettier, Stylelint, Pint, commitlint e hooks |
63
+ | `sage` | Scaffold do tema Roots Sage v11 em `content/themes/` |
64
+ | `mu-plugin` | Scaffold de MU Plugin em `content/mu-plugins/` |
65
+ | `plugin` | Scaffold de Plugin em `content/plugins/` |
66
+ | `blank-theme` | Scaffold de tema Vite+SCSS em `content/themes/` |
67
+ | `php` | Scripts e configs auxiliares para PHP |
68
+ | `docs` | Gera README do projeto gerado |
119
69
 
120
- Provedores suportados:
70
+ Documentação completa: [docs/04-Módulos.md](docs/04-Módulos.md)
121
71
 
122
- - GitLab CI, GitHub Actions, Bitbucket Pipelines
72
+ ## Lint modular
123
73
 
124
- ## Convenções e qualidade
74
+ O sistema de lint é modular: cada scaffold tem suas próprias configs instaladas de forma independente.
125
75
 
126
- - Commits: Conventional Commits (ex.: `feat:`, `fix:`, `docs:`)
127
- - Hooks: Husky + lint-staged (validação automática ao fazer commit)
128
- - Linters: ESLint (flat config), Prettier, Stylelint, Pint
129
- - Commitlint: Validação de mensagens de commit convencionais
130
- - Interactive commits: Use `npm run commit` para commits interativos
76
+ > ⚠️ `enable_lint` controla apenas Husky + commitlint + `.lintstagedrc.json` dinâmico. Os arquivos de config (`pint.json`, `.prettierrc.json`, `eslint.config.mjs`) são sempre instalados em cada scaffold, independentemente dessa flag.
131
77
 
132
- ## Script de desenvolvimento
78
+ O `.lintstagedrc.json` na raiz é gerado dinamicamente com base nos módulos ativos — apenas os linters relevantes para o que você habilitou.
133
79
 
134
- Comandos disponíveis para desenvolvimento:
80
+ ## CI Dinâmico
135
81
 
136
- - `npm run lint` Validar código com ESLint
137
- - `npm run lint:fix` — Corrigir automaticamente problemas de linting
138
- - `npm run format` — Formatar código com Prettier
139
- - `npm run commit` — Criar commit interativo (cz)
140
- - `npm run test:setup` — Gerar sandbox de teste
141
- - `npm run test:scaffold` — Criar novo projeto de teste
82
+ O pipeline é gerado com base nos módulos que você ativou:
142
83
 
143
- ## Git Workflows
84
+ - `ci.build.composer` — composer.json detectado ou Sage ativo
85
+ - `ci.build.node` — package.json detectado ou Sage ativo
86
+ - `ci.lint.sage` — Sage ativo + `enable_lint`
87
+ - `ci.lint.mu_plugin` — mu-plugin ativo + `enable_lint`
88
+ - `ci.lint.plugin` — plugin ativo + `enable_lint`
89
+ - `ci.lint.blank_theme` — blank-theme ativo + `enable_lint`
90
+ - `ci.deploy.docker` — estratégia Docker selecionada
144
91
 
145
- O projeto usa Husky para automatizar validações:
92
+ > 💡 Você não precisa editar o pipeline manualmente — se ativar um módulo, o job correspondente já aparece no CI.
146
93
 
147
- - **pre-commit**: Executa lint-staged em arquivos modificados
148
- - **commit-msg**: Valida mensagem com commitlint
94
+ Documentação completa: [docs/05-CI-Dinâmico.md](docs/05-CI-Dinâmico.md)
149
95
 
150
- Se precisar pular hooks (situação de emergência apenas):
96
+ ## Scripts de desenvolvimento
151
97
 
152
98
  ```bash
153
- git commit --no-verify
99
+ npm run lint # ESLint
100
+ npm run lint:fix # ESLint com correção automática
101
+ npm run format # Prettier
102
+ npm run commit # Commit interativo (commitizen)
154
103
  ```
155
104
 
156
- ## ESLint Flat Config (moderne)
157
-
158
- O projeto agora usa o novo formato ESLint flat config (`eslint.config.mjs`):
159
-
160
- - Melhor inicialização de projeto
161
- - Sem `eslintrc.json` legado
162
- - Ignores integradas na configuração principal
163
- - Melhor performance
164
-
165
- Projetos gerados também usarão este novo formato.
166
-
167
- ## Dicas e solução de problemas
168
-
169
- - Pipeline não foi gerado? Verifique se habilitou o módulo `deploy` e qual provedor selecionou no módulo `git`.
170
- - Tema Sage não compilou? Garanta Composer/Node instalados e que o tema existe em `content/themes/<projectName>`.
171
-
172
- ## AI Co-Pilot Support 🤖
173
-
174
- wp-kit agora inclui suporte integrado para assistência de IA via **Claude Code** (e futuramente Cursor e VSCode).
175
-
176
- ### Funcionalidades
177
-
178
- Três skills prontos para ajudar no desenvolvimento:
179
-
180
- 1. **Building Sage Themes** — Master Sage 11 & Acorn
181
- - Service providers e injeção de dependência
182
- - Componentes Blade e view composers
183
- - theme.json e configuração WordPress
184
- - Padrões de desenvolvimento
185
-
186
- 2. **Optimizing Vite Builds** — Performance de assets
187
- - Configuração Vite e bundling
188
- - Code splitting e análise de bundle
189
- - Cache busting e asset versioning
190
- - Monitoramento de performance
105
+ ## Convenções
191
106
 
192
- 3. **Developing ACF Blocks** Criação de blocos Gutenberg
193
- - Anatomia de blocos ACF
194
- - Todos os 20+ tipos de campos ACF
195
- - Templates com Blade
196
- - Padrões avançados
107
+ - **Commits:** Conventional Commits (`feat:`, `fix:`, `docs:`, `refactor:`, `chore:`)
108
+ - **Hooks:** Husky + lint-staged validam no pré-commit
109
+ - **Commitlint:** Valida mensagem no commit-msg
197
110
 
198
- ### Como usar
199
-
200
- #### Com Claude Code
201
-
202
- 1. Abra seu projeto wp-kit no Claude Code
203
- 2. Use `/` para ver os skills disponíveis
204
- 3. Procure por "sage", "vite" ou "acf"
205
- 4. Clique para acessar o skill
206
-
207
- #### Busca Direta
208
-
209
- ```
210
- /building-sage-themes → Desenvolvimento de temas
211
- /optimizing-vite-builds → Otimização de assets
212
- /developing-acf-blocks → Blocos Gutenberg
213
- ```
214
-
215
- ### Estrutura de Skills
216
-
217
- Cada skill segue um padrão progressivo:
218
-
219
- - **SKILL.md** — Quick start em 2-3 minutos
220
- - **Decision Trees** — Guias "qual ferramenta usar?"
221
- - **Reference Files** — Documentação completa com exemplos
222
- - **150+ Exemplos** — Código pronto para copiar/colar
223
-
224
- ### Futuro
111
+ ## Contribuição
225
112
 
226
- Suporte planejado para:
113
+ Pull Requests são bem-vindos. Use commits convencionais, mudanças pequenas e atualize a documentação quando alterar comportamentos.
227
114
 
228
- - Claude Code (atual, disponível)
229
- - ⏳ Cursor (em desenvolvimento)
230
- - ⏳ VSCode AI Assistant (em desenvolvimento)
231
- - ⏳ Plugin customizado (roadmap futuro)
115
+ Guia completo: [docs/06-Contribuicao.md](docs/06-Contribuicao.md)
232
116
 
233
117
  ---
234
118
 
235
- ## Contribuição
236
-
237
- Pull Requests são muito bem-vindos! Use commits convencionais, escreva mudanças pequenas e inclua atualizações na documentação quando necessário.
238
-
239
-
240
- Se quiser entender a fundo (arquitetura, módulos e CI dinâmico), veja a wiki em `docs/` deste repositório.
119
+ Para entender a fundo a arquitetura, módulos e CI dinâmico: [docs/](docs/)
@@ -74,6 +74,18 @@ export async function runPrompts({ defaults = false } = {}) {
74
74
  message: 'Enable debug mode?',
75
75
  default: false,
76
76
  },
77
+ {
78
+ type: 'checkbox',
79
+ name: 'selectedContentModules',
80
+ message: 'Selecione os módulos de conteúdo do projeto:',
81
+ choices: [
82
+ { name: 'Sage theme (Roots + Acorn + Vite)', value: 'sage' },
83
+ { name: 'Blank theme (Vite + SCSS, sem Sage)', value: 'blank-theme' },
84
+ { name: 'MU Plugin scaffold', value: 'mu-plugin' },
85
+ { name: 'Plugin scaffold', value: 'plugin' },
86
+ ],
87
+ default: ['sage'],
88
+ },
77
89
  ];
78
90
 
79
91
  const modulePromptDefs = await loadModulePrompts();
@@ -88,9 +100,50 @@ export async function runPrompts({ defaults = false } = {}) {
88
100
  defaultAnswers[prompt.name] = typeof def === 'function' ? def(defaultAnswers) : def;
89
101
  }
90
102
 
103
+ const sel = defaultAnswers.selectedContentModules || [];
104
+ defaultAnswers.enable_sage = sel.includes('sage');
105
+ defaultAnswers.enable_blank_theme = sel.includes('blank-theme');
106
+ defaultAnswers.enable_mu_plugin = sel.includes('mu-plugin');
107
+ defaultAnswers.enable_plugin = sel.includes('plugin');
108
+
109
+ // WP_KIT_ENABLE_SAGE: legacy single-module override. Use WP_KIT_CONTENT_MODULES for full control.
91
110
  const envEnableSage = parseBooleanEnv(process.env.WP_KIT_ENABLE_SAGE);
92
- if (envEnableSage !== null) {
111
+ if (envEnableSage !== null && process.env.WP_KIT_CONTENT_MODULES === undefined) {
93
112
  defaultAnswers.enable_sage = envEnableSage;
113
+ // Sync selectedContentModules with env override
114
+ if (envEnableSage) {
115
+ defaultAnswers.selectedContentModules = [
116
+ ...new Set([...(defaultAnswers.selectedContentModules || []), 'sage']),
117
+ ];
118
+ } else {
119
+ defaultAnswers.selectedContentModules = (
120
+ defaultAnswers.selectedContentModules || []
121
+ ).filter((m) => m !== 'sage');
122
+ }
123
+ }
124
+
125
+ // WP_KIT_CONTENT_MODULES: comma-separated list that fully overrides selectedContentModules.
126
+ // Use empty string to select no content modules. Takes precedence over WP_KIT_ENABLE_SAGE.
127
+ // Example: WP_KIT_CONTENT_MODULES="sage,blank-theme"
128
+ const envContentModules = process.env.WP_KIT_CONTENT_MODULES;
129
+ if (envContentModules !== undefined) {
130
+ const modules = envContentModules
131
+ ? envContentModules
132
+ .split(',')
133
+ .map((m) => m.trim())
134
+ .filter(Boolean)
135
+ : [];
136
+ defaultAnswers.selectedContentModules = modules;
137
+ defaultAnswers.enable_sage = modules.includes('sage');
138
+ defaultAnswers.enable_blank_theme = modules.includes('blank-theme');
139
+ defaultAnswers.enable_mu_plugin = modules.includes('mu-plugin');
140
+ defaultAnswers.enable_plugin = modules.includes('plugin');
141
+ }
142
+
143
+ // WP_KIT_PROJECT_NAME: overrides the default project name (used for E2E tests).
144
+ const envProjectName = process.env.WP_KIT_PROJECT_NAME;
145
+ if (envProjectName) {
146
+ defaultAnswers.projectName = envProjectName;
94
147
  }
95
148
 
96
149
  const envGitProvider = process.env.WP_KIT_GIT_PROVIDER;
@@ -113,6 +166,13 @@ export async function runPrompts({ defaults = false } = {}) {
113
166
 
114
167
  const answers = await inquirer.prompt(allPrompts);
115
168
 
169
+ // Derive enable_* flags from the checkbox selection
170
+ const sel = answers.selectedContentModules || [];
171
+ answers.enable_sage = sel.includes('sage');
172
+ answers.enable_blank_theme = sel.includes('blank-theme');
173
+ answers.enable_mu_plugin = sel.includes('mu-plugin');
174
+ answers.enable_plugin = sel.includes('plugin');
175
+
116
176
  const enabledModules = Object.keys(modulePromptDefs).filter(
117
177
  (mod) => answers[`enable_${mod.replace(/-/g, '_')}`] === true
118
178
  );
@@ -1,36 +1,33 @@
1
1
  export default [
2
- {
3
- type: 'confirm',
4
- name: 'enable_blank_theme',
5
- message: 'Enable Blank Theme scaffold (Vite + SCSS, no Sage)?',
6
- default: false,
7
- },
8
2
  {
9
3
  type: 'input',
10
4
  name: 'blank_theme_name',
11
5
  message: 'Blank theme slug (used as directory name):',
12
6
  default: (answers) => `${answers.projectName || 'wordpress'}-theme`,
13
- when: (answers) => answers.enable_blank_theme,
7
+ when: (answers) => answers.selectedContentModules?.includes('blank-theme'),
14
8
  },
15
9
  {
16
10
  type: 'confirm',
17
11
  name: 'blank_theme_lint_eslint',
18
12
  message: 'Blank Theme: enable ESLint for JS/TS?',
19
13
  default: true,
20
- when: (answers) => answers.enable_blank_theme && answers.enable_lint,
14
+ when: (answers) =>
15
+ answers.selectedContentModules?.includes('blank-theme') && answers.enable_lint,
21
16
  },
22
17
  {
23
18
  type: 'confirm',
24
19
  name: 'blank_theme_lint_stylelint',
25
20
  message: 'Blank Theme: enable Stylelint for CSS/SCSS?',
26
21
  default: true,
27
- when: (answers) => answers.enable_blank_theme && answers.enable_lint,
22
+ when: (answers) =>
23
+ answers.selectedContentModules?.includes('blank-theme') && answers.enable_lint,
28
24
  },
29
25
  {
30
26
  type: 'confirm',
31
27
  name: 'blank_theme_lint_pint',
32
28
  message: 'Blank Theme: enable Pint for PHP?',
33
29
  default: true,
34
- when: (answers) => answers.enable_blank_theme && answers.enable_lint,
30
+ when: (answers) =>
31
+ answers.selectedContentModules?.includes('blank-theme') && answers.enable_lint,
35
32
  },
36
33
  ];
@@ -1,67 +1,160 @@
1
- # 🏠 Pipefy WordPress Website Bem-vindo à documentação oficial do site **pipefy.com** - um projeto
2
- WordPress robusto e moderno da Pipefy. ## 🎯 **Visão Geral** Este é o repositório principal do site
3
- institucional da Pipefy, construído com **WordPress** e uma infraestrutura cloud-native moderna. O
4
- projeto utiliza tecnologias de ponta para garantir performance, escalabilidade e facilidade de
5
- manutenção. ### 📊 **Status do Projeto** - **Versão Atual**: `1.1.7` (2025-05-23) - **WordPress**:
6
- Customizado com tema Pipefy 2020 - **Ambiente**: Multi-ambiente (Local, Development, Staging,
7
- Production) - **Deploy**: Automatizado via GitLab CI/CD + Kubernetes ## 🚀 **Quick Start** ###
8
- Pré-requisitos - [Lando](https://lando.dev/) (para desenvolvimento local) -
9
- [Docker](https://docker.com/) - [Git](https://git-scm.com/) - [Node.js](https://nodejs.org/) (versão
10
- especificada em `.nvmrc`) ### Setup Rápido ```bash # 1. Clone o repositório git clone
11
- git@gitlab.com:pipefy/wordpress/pipefy-website.git cd pipefy-website # 2. Inicie o ambiente local
12
- lando start # 3. Configure WordPress lando ssh -c "development/scripts/init-wp.sh
13
- --user=seu-email@pipefy.com" # 4. Acesse o site # Frontend: https://pipefy.lndo.site # Admin:
14
- https://pipefy.lndo.site/wp-admin ``` ## 🏗️ **Arquitetura** ``` ┌─────────────────┐
15
- ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ Local │────│ Development │────│
16
- Staging │────│ Production │ │ pipefy.lndo.site│ │development-www │ │ staging-www │ │ www.pipefy.com
17
- │ │ │ .pipefy.com │ │ .pipefy.com │ │ │ └─────────────────┘ └─────────────────┘
18
- └─────────────────┘ └─────────────────┘ │ │
19
- └───────────────────────┼───────────────────────┼───────────────────────┘ │ │ ┌─────────────────┐
20
- ┌─────────────────┐ │ GitLab CI/CD │ │ Kubernetes │ │ Pipelines │ │ + CloudFlare │
21
- └─────────────────┘ └─────────────────┘ ``` ### 🛠️ **Stack Tecnológico** | Categoria | Tecnologia |
22
- |-----------|------------| | **CMS** | WordPress (customizado) | | **Tema** | Pipefy 2020 (custom
23
- theme) | | **Frontend** | PHP, JavaScript, Sass, Gutenberg Blocks | | **Containerização** | Docker,
24
- Lando | | **Orquestração** | Kubernetes, Helm | | **CI/CD** | GitLab CI/CD | | **Infraestrutura** |
25
- Terraform, OCI (Oracle Cloud) | | **CDN/DNS** | CloudFlare | | **Monitoramento** | Custom health
26
- checks | ## 📁 **Estrutura do Projeto** ``` pipefy-website/ ├── 📂 dist/ # WordPress core +
27
- customizações │ └── 📂 wp-content/ │ ├── 📂 themes/pipefy-2020/ # Tema principal │ ├── 📂 plugins/ #
28
- Plugins WordPress │ └── 📂 mu-plugins/ # Must-use plugins ├── 📂 development/ # Scripts e config.
29
- desenvolvimento ├── 📂 helm/ # Charts Kubernetes ├── 📂 k8s/ # Manifests Kubernetes ├── 📂
30
- terraform/ # Infraestrutura como código ├── 📂 .gitlab/ # Templates GitLab CI/CD ├── 📄 .lando.yml #
31
- Configuração ambiente local ├── 📄 .gitlab-ci.yml # Pipeline CI/CD └── 📄 CHANGELOG.md # Histórico
32
- de mudanças ``` ## 🌍 **Ambientes** | Ambiente | URL | Branch | Namespace K8s | Finalidade |
33
- |----------|-----|--------|---------------|------------| | **Local** | `pipefy.lndo.site` |
34
- `feature/*` | - | Desenvolvimento local | | **Development** | `development-www.pipefy.com` |
35
- `development` | `website-dev` | Testes contínuos | | **Staging** | `staging-www.pipefy.com` |
36
- `staging` | `website-stg` | Homologação | | **Production** | `www.pipefy.com` | `master` |
37
- `website-prod` | Site oficial | ## 🔄 **Workflow de Desenvolvimento** ```mermaid graph LR A[Feature
38
- Branch] --> B[Pull Request] B --> C[Code Review] C --> D[Merge to Development] D --> E["🚀
39
- development-www.pipefy.com"] E --> F[Merge to Staging] F --> G["🔍 staging-www.pipefy.com"] G -->
40
- H[Tests + QA] H --> I[Merge to Master] I --> J["✅ www.pipefy.com"] ``` ## 📚 **Documentação
41
- Principal** ### 🚀 **Para Desenvolvedores** - [Getting Started](Getting-Started) - Setup completo do
42
- ambiente - [Arquitetura](Arquitetura) - Estrutura técnica detalhada -
43
- [Desenvolvimento](Desenvolvimento) - Guias de desenvolvimento - [Deploy Pipeline](Deploy-Pipeline) -
44
- Processo de deploy ### 🔧 **Para DevOps** - [Infraestrutura](Infraestrutura) - Kubernetes,
45
- Terraform, AWS - [Monitoramento](Monitoramento) - Health checks e observabilidade -
46
- [Troubleshooting](Troubleshooting) - Resolução de problemas ### 📦 **Para Gestão** - [Plugins &
47
- Integrações](Plugins-Integracoes) - Componentes externos -
48
- [Changelog](https://gitlab.com/pipefy/wordpress/pipefy-website/-/blob/master/CHANGELOG.md) -
49
- Histórico de versões -
50
- [CODEOWNERS](https://gitlab.com/pipefy/wordpress/pipefy-website/-/blob/master/CODEOWNERS) -
51
- Responsabilidades ## 🆘 **Precisa de Ajuda?** ### 🐛 **Problemas Comuns** -
52
- [Troubleshooting](Troubleshooting) - Guia de resolução - [FAQ](FAQ) - Perguntas frequentes ### 📞
53
- **Contatos** - **Equipe**: @Approvers (conforme
54
- [CODEOWNERS](https://gitlab.com/pipefy/wordpress/pipefy-website/-/blob/master/CODEOWNERS)) -
55
- **Issues**: [GitLab Issues](https://gitlab.com/pipefy/wordpress/pipefy-website/-/issues) - **Pipefy
56
- Cards**: Vinculados no
57
- [CHANGELOG.md](https://gitlab.com/pipefy/wordpress/pipefy-website/-/blob/master/CHANGELOG.md) ## 🎯
58
- **Links Importantes** | Recurso | Link | Ambiente | |---------|------|----------| | **Site
59
- Produção** | [www.pipefy.com](https://www.pipefy.com) | 🔴 Production | | **Site Staging** |
60
- [staging-www.pipefy.com](https://staging-www.pipefy.com) | 🟡 Staging | | **Site Development** |
61
- [development-www.pipefy.com](https://development-www.pipefy.com) | 🟠 Development | | **Site Local**
62
- | [pipefy.lndo.site](https://pipefy.lndo.site) | 🔵 Local | | **GitLab Project** |
63
- [pipefy/wordpress/pipefy-website](https://gitlab.com/pipefy/wordpress/pipefy-website) | - | |
64
- **CI/CD Pipelines** | [Pipelines](https://gitlab.com/pipefy/wordpress/pipefy-website/-/pipelines) |
65
- - | | **Kubernetes Dashboards** | *[Links internos conforme ambiente]* | - | --- 📝 **Última
66
- atualização**: Junho 2025 🔄 **Versão da documentação**: 1.1 ✨ **Criado com**: Análise automatizada
67
- do projeto + GitHub Copilot 🌐 **Ambientes atualizados**: Local, Development, Staging, Production
1
+ # 🏠 Pipefy WordPress Website
2
+
3
+ Bem-vindo à documentação oficial do site **pipefy.com** - um projeto WordPress robusto e moderno da Pipefy.
4
+
5
+ ## 🎯 **Visão Geral**
6
+
7
+ Este é o repositório principal do site institucional da Pipefy, construído com **WordPress** e uma infraestrutura cloud-native moderna. O projeto utiliza tecnologias de ponta para garantir performance, escalabilidade e facilidade de manutenção.
8
+
9
+ ### 📊 **Status do Projeto**
10
+ - **Versão Atual**: `1.1.7` (2025-05-23)
11
+ - **WordPress**: Customizado com tema Pipefy 2020
12
+ - **Ambiente**: Multi-ambiente (Local, Development, Staging, Production)
13
+ - **Deploy**: Automatizado via GitLab CI/CD + Kubernetes
14
+
15
+ ## 🚀 **Quick Start**
16
+
17
+ ### Pré-requisitos
18
+ - [Lando](https://lando.dev/) (para desenvolvimento local)
19
+ - [Docker](https://docker.com/)
20
+ - [Git](https://git-scm.com/)
21
+ - [Node.js](https://nodejs.org/) (versão especificada em `.nvmrc`)
22
+
23
+ ### Setup Rápido
24
+ ```bash
25
+ # 1. Clone o repositório
26
+ git clone git@gitlab.com:pipefy/wordpress/pipefy-website.git
27
+ cd pipefy-website
28
+
29
+ # 2. Inicie o ambiente local
30
+ lando start
31
+
32
+ # 3. Configure WordPress
33
+ lando ssh -c "development/scripts/init-wp.sh --user=seu-email@pipefy.com"
34
+
35
+ # 4. Acesse o site
36
+ # Frontend: https://pipefy.lndo.site
37
+ # Admin: https://pipefy.lndo.site/wp-admin
38
+ ```
39
+
40
+ ## 🏗️ **Arquitetura**
41
+
42
+ ```
43
+ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
44
+ │ Local │────│ Development │────│ Staging │────│ Production │
45
+ pipefy.lndo.site│ │development-www │ │ staging-www │ │ www.pipefy.com
46
+ │ │ │ .pipefy.com │ │ .pipefy.com │ │ │
47
+ └─────────────────┘ └─────────────────┘ └─────────────────┘ └─────────────────┘
48
+ │ │ │ │
49
+ └───────────────────────┼───────────────────────┼───────────────────────┘
50
+ │ │
51
+ ┌─────────────────┐ ┌─────────────────┐
52
+ │ GitLab CI/CD │ │ Kubernetes │
53
+ │ Pipelines │ │ + CloudFlare │
54
+ └─────────────────┘ └─────────────────┘
55
+ ```
56
+
57
+ ### 🛠️ **Stack Tecnológico**
58
+
59
+ | Categoria | Tecnologia |
60
+ |-----------|------------|
61
+ | **CMS** | WordPress (customizado) |
62
+ | **Tema** | Pipefy 2020 (custom theme) |
63
+ | **Frontend** | PHP, JavaScript, Sass, Gutenberg Blocks |
64
+ | **Containerização** | Docker, Lando |
65
+ | **Orquestração** | Kubernetes, Helm |
66
+ | **CI/CD** | GitLab CI/CD |
67
+ | **Infraestrutura** | Terraform, OCI (Oracle Cloud) |
68
+ | **CDN/DNS** | CloudFlare |
69
+ | **Monitoramento** | Custom health checks |
70
+
71
+ ## 📁 **Estrutura do Projeto**
72
+
73
+ ```
74
+ pipefy-website/
75
+ ├── 📂 dist/ # WordPress core + customizações
76
+ │ └── 📂 wp-content/
77
+ │ ├── 📂 themes/pipefy-2020/ # Tema principal
78
+ │ ├── 📂 plugins/ # Plugins WordPress
79
+ │ └── 📂 mu-plugins/ # Must-use plugins
80
+ ├── 📂 development/ # Scripts e config. desenvolvimento
81
+ ├── 📂 helm/ # Charts Kubernetes
82
+ ├── 📂 k8s/ # Manifests Kubernetes
83
+ ├── 📂 terraform/ # Infraestrutura como código
84
+ ├── 📂 .gitlab/ # Templates GitLab CI/CD
85
+ ├── 📄 .lando.yml # Configuração ambiente local
86
+ ├── 📄 .gitlab-ci.yml # Pipeline CI/CD
87
+ └── 📄 CHANGELOG.md # Histórico de mudanças
88
+ ```
89
+
90
+ ## 🌍 **Ambientes**
91
+
92
+ | Ambiente | URL | Branch | Namespace K8s | Finalidade |
93
+ |----------|-----|--------|---------------|------------|
94
+ | **Local** | `pipefy.lndo.site` | `feature/*` | - | Desenvolvimento local |
95
+ | **Development** | `development-www.pipefy.com` | `development` | `website-dev` | Testes contínuos |
96
+ | **Staging** | `staging-www.pipefy.com` | `staging` | `website-stg` | Homologação |
97
+ | **Production** | `www.pipefy.com` | `master` | `website-prod` | Site oficial |
98
+
99
+ ## 🔄 **Workflow de Desenvolvimento**
100
+
101
+ ```mermaid
102
+ graph LR
103
+ A[Feature Branch] --> B[Pull Request]
104
+ B --> C[Code Review]
105
+ C --> D[Merge to Development]
106
+ D --> E["🚀 development-www.pipefy.com"]
107
+ E --> F[Merge to Staging]
108
+ F --> G["🔍 staging-www.pipefy.com"]
109
+ G --> H[Tests + QA]
110
+ H --> I[Merge to Master]
111
+ I --> J["✅ www.pipefy.com"]
112
+ ```
113
+
114
+ ## 📚 **Documentação Principal**
115
+
116
+ ### 🚀 **Para Desenvolvedores**
117
+ - [Getting Started](Getting-Started) - Setup completo do ambiente
118
+ - [Arquitetura](Arquitetura) - Estrutura técnica detalhada
119
+ - [Desenvolvimento](Desenvolvimento) - Guias de desenvolvimento
120
+ - [Deploy Pipeline](Deploy-Pipeline) - Processo de deploy
121
+
122
+ ### 🔧 **Para DevOps**
123
+ - [Infraestrutura](Infraestrutura) - Kubernetes, Terraform, AWS
124
+ - [Monitoramento](Monitoramento) - Health checks e observabilidade
125
+ - [Troubleshooting](Troubleshooting) - Resolução de problemas
126
+
127
+ ### 📦 **Para Gestão**
128
+ - [Plugins & Integrações](Plugins-Integracoes) - Componentes externos
129
+ - [Changelog](https://gitlab.com/pipefy/wordpress/pipefy-website/-/blob/master/CHANGELOG.md) - Histórico de versões
130
+ - [CODEOWNERS](https://gitlab.com/pipefy/wordpress/pipefy-website/-/blob/master/CODEOWNERS) - Responsabilidades
131
+
132
+ ## 🆘 **Precisa de Ajuda?**
133
+
134
+ ### 🐛 **Problemas Comuns**
135
+ - [Troubleshooting](Troubleshooting) - Guia de resolução
136
+ - [FAQ](FAQ) - Perguntas frequentes
137
+
138
+ ### 📞 **Contatos**
139
+ - **Equipe**: @Approvers (conforme [CODEOWNERS](https://gitlab.com/pipefy/wordpress/pipefy-website/-/blob/master/CODEOWNERS))
140
+ - **Issues**: [GitLab Issues](https://gitlab.com/pipefy/wordpress/pipefy-website/-/issues)
141
+ - **Pipefy Cards**: Vinculados no [CHANGELOG.md](https://gitlab.com/pipefy/wordpress/pipefy-website/-/blob/master/CHANGELOG.md)
142
+
143
+ ## 🎯 **Links Importantes**
144
+
145
+ | Recurso | Link | Ambiente |
146
+ |---------|------|----------|
147
+ | **Site Produção** | [www.pipefy.com](https://www.pipefy.com) | 🔴 Production |
148
+ | **Site Staging** | [staging-www.pipefy.com](https://staging-www.pipefy.com) | 🟡 Staging |
149
+ | **Site Development** | [development-www.pipefy.com](https://development-www.pipefy.com) | 🟠 Development |
150
+ | **Site Local** | [pipefy.lndo.site](https://pipefy.lndo.site) | 🔵 Local |
151
+ | **GitLab Project** | [pipefy/wordpress/pipefy-website](https://gitlab.com/pipefy/wordpress/pipefy-website) | - |
152
+ | **CI/CD Pipelines** | [Pipelines](https://gitlab.com/pipefy/wordpress/pipefy-website/-/pipelines) | - |
153
+ | **Kubernetes Dashboards** | *[Links internos conforme ambiente]* | - |
154
+
155
+ ---
156
+
157
+ 📝 **Última atualização**: Junho 2025
158
+ 🔄 **Versão da documentação**: 1.1
159
+ ✨ **Criado com**: Análise automatizada do projeto + GitHub Copilot
160
+ 🌐 **Ambientes atualizados**: Local, Development, Staging, Production
@@ -1,4 +1,14 @@
1
- { "scripts": { "prepare": "husky", "commit": "lando git-cz" }, "devDependencies": {
2
- "@commitlint/cli": "^19.7.1", "@commitlint/config-conventional": "^19.7.1", "@commitlint/prompt":
3
- "^19.5.0", "commitizen": "^4.3.1", "husky": "^9.0.11",
4
- "lint-staged": "^15.5.0" } }
1
+ {
2
+ "scripts": {
3
+ "prepare": "husky",
4
+ "commit": "lando git-cz"
5
+ },
6
+ "devDependencies": {
7
+ "@commitlint/cli": "^19.7.1",
8
+ "@commitlint/config-conventional": "^19.7.1",
9
+ "@commitlint/prompt": "^19.5.0",
10
+ "commitizen": "^4.3.1",
11
+ "husky": "^9.0.11",
12
+ "lint-staged": "^15.5.0"
13
+ }
14
+ }
@@ -1,4 +1,16 @@
1
- { "scripts": { "format": "prettier --write .", "lint": "lando eslint .", "lint:fix":
2
- "lando eslint . --fix" }, "devDependencies": { "globals": "^16.3.0",
3
- "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.30.1", "eslint": "^9.30.1",
4
- "eslint-config-prettier": "^10.1.5", "eslint-plugin-prettier": "^5.3.1", "prettier": "^3.6.2" } }
1
+ {
2
+ "scripts": {
3
+ "format": "prettier --write .",
4
+ "lint": "lando eslint .",
5
+ "lint:fix": "lando eslint . --fix"
6
+ },
7
+ "devDependencies": {
8
+ "globals": "^16.3.0",
9
+ "@eslint/eslintrc": "^3.3.1",
10
+ "@eslint/js": "^9.30.1",
11
+ "eslint": "^9.30.1",
12
+ "eslint-config-prettier": "^10.1.5",
13
+ "eslint-plugin-prettier": "^5.3.1",
14
+ "prettier": "^3.6.2"
15
+ }
16
+ }
@@ -1,29 +1,23 @@
1
1
  export default [
2
- {
3
- type: 'confirm',
4
- name: 'enable_mu_plugin',
5
- message: 'Enable MU Plugin scaffold?',
6
- default: false,
7
- },
8
2
  {
9
3
  type: 'input',
10
4
  name: 'mu_plugin_name',
11
5
  message: 'MU Plugin slug (used as directory name):',
12
6
  default: (answers) => `${answers.projectName || 'wordpress'}-core`,
13
- when: (answers) => answers.enable_mu_plugin,
7
+ when: (answers) => answers.selectedContentModules?.includes('mu-plugin'),
14
8
  },
15
9
  {
16
10
  type: 'confirm',
17
11
  name: 'mu_plugin_lint_pint',
18
12
  message: 'MU Plugin: enable Pint for PHP?',
19
13
  default: true,
20
- when: (answers) => answers.enable_mu_plugin && answers.enable_lint,
14
+ when: (answers) => answers.selectedContentModules?.includes('mu-plugin') && answers.enable_lint,
21
15
  },
22
16
  {
23
17
  type: 'confirm',
24
18
  name: 'mu_plugin_lint_eslint',
25
19
  message: 'MU Plugin: enable ESLint for JS/TS?',
26
20
  default: false,
27
- when: (answers) => answers.enable_mu_plugin && answers.enable_lint,
21
+ when: (answers) => answers.selectedContentModules?.includes('mu-plugin') && answers.enable_lint,
28
22
  },
29
23
  ];
@@ -1,29 +1,23 @@
1
1
  export default [
2
- {
3
- type: 'confirm',
4
- name: 'enable_plugin',
5
- message: 'Enable Plugin scaffold?',
6
- default: false,
7
- },
8
2
  {
9
3
  type: 'input',
10
4
  name: 'plugin_name',
11
5
  message: 'Plugin slug (used as directory name):',
12
6
  default: (answers) => `${answers.projectName || 'wordpress'}-plugin`,
13
- when: (answers) => answers.enable_plugin,
7
+ when: (answers) => answers.selectedContentModules?.includes('plugin'),
14
8
  },
15
9
  {
16
10
  type: 'confirm',
17
11
  name: 'plugin_lint_pint',
18
12
  message: 'Plugin: enable Pint for PHP?',
19
13
  default: true,
20
- when: (answers) => answers.enable_plugin && answers.enable_lint,
14
+ when: (answers) => answers.selectedContentModules?.includes('plugin') && answers.enable_lint,
21
15
  },
22
16
  {
23
17
  type: 'confirm',
24
18
  name: 'plugin_lint_eslint',
25
19
  message: 'Plugin: enable ESLint for JS/TS?',
26
20
  default: false,
27
- when: (answers) => answers.enable_plugin && answers.enable_lint,
21
+ when: (answers) => answers.selectedContentModules?.includes('plugin') && answers.enable_lint,
28
22
  },
29
23
  ];
@@ -1,37 +1,31 @@
1
1
  export default [
2
- {
3
- type: 'confirm',
4
- name: 'enable_sage',
5
- message: 'Enable Sage theme (advanced setup is automatic)?',
6
- default: true,
7
- },
8
2
  {
9
3
  type: 'list',
10
4
  name: 'sageVersion',
11
5
  message: 'Sage version:',
12
6
  choices: ['11', '10'],
13
7
  default: '11',
14
- when: (answers) => answers.enable_sage,
8
+ when: (answers) => answers.selectedContentModules?.includes('sage'),
15
9
  },
16
10
  {
17
11
  type: 'confirm',
18
12
  name: 'sage_lint_eslint',
19
13
  message: 'Sage: enable ESLint for JS/TS/Vue?',
20
14
  default: true,
21
- when: (answers) => answers.enable_sage && answers.enable_lint,
15
+ when: (answers) => answers.selectedContentModules?.includes('sage') && answers.enable_lint,
22
16
  },
23
17
  {
24
18
  type: 'confirm',
25
19
  name: 'sage_lint_stylelint',
26
20
  message: 'Sage: enable Stylelint for CSS/SCSS?',
27
21
  default: true,
28
- when: (answers) => answers.enable_sage && answers.enable_lint,
22
+ when: (answers) => answers.selectedContentModules?.includes('sage') && answers.enable_lint,
29
23
  },
30
24
  {
31
25
  type: 'confirm',
32
26
  name: 'sage_lint_pint',
33
27
  message: 'Sage: enable Pint for PHP?',
34
28
  default: true,
35
- when: (answers) => answers.enable_sage && answers.enable_lint,
29
+ when: (answers) => answers.selectedContentModules?.includes('sage') && answers.enable_lint,
36
30
  },
37
31
  ];
@@ -1,6 +1,4 @@
1
1
  services:
2
- wordpress:
2
+ app:
3
3
  environment:
4
4
  SAGE_THEME_DIR: /workspace/content/themes/{{projectName}}
5
- ports:
6
- - "3009:3009"
@@ -7,10 +7,10 @@ services:
7
7
  scanner: false
8
8
  events:
9
9
  post-start:
10
- - bash ./server/cmd/setup-sage-php.sh
11
- - bash ./server/cmd/setup-sage-node.sh
12
- - wp theme activate {{projectName}}
13
- - cd /app/content/themes/{{projectName}} && wp acorn optimize:clear
10
+ - appserver: bash ./server/cmd/setup-sage-php.sh
11
+ - appserver: wp theme activate {{projectName}}
12
+ - appserver: cd /app/content/themes/{{projectName}} && wp acorn optimize:clear
13
+ - build: bash ./server/cmd/setup-sage-node.sh
14
14
  tooling:
15
15
  dev:
16
16
  service: build
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codigodoleo/wp-kit",
3
- "version": "3.3.0",
3
+ "version": "3.4.1",
4
4
  "description": "Kit opinativo para padronizar projetos WordPress com CI/CD dinâmico.",
5
5
  "main": "bin/index.js",
6
6
  "bin": {
@@ -30,6 +30,12 @@
30
30
  "test:setup": "npm run test:clean && npm run test:scaffold",
31
31
  "test:clean": "rm -rf __test-sandbox__",
32
32
  "test:scaffold": "node ./bin/index.js init --output=__test-sandbox__/test-project --defaults",
33
+ "test:e2e": "bash scripts/validate-e2e.sh",
34
+ "test:e2e:base": "bash scripts/validate-e2e.sh base",
35
+ "test:e2e:sage": "bash scripts/validate-e2e.sh sage",
36
+ "test:e2e:blank-theme": "bash scripts/validate-e2e.sh blank-theme",
37
+ "test:e2e:mu-plugin": "bash scripts/validate-e2e.sh mu-plugin",
38
+ "test:e2e:all": "bash scripts/validate-e2e.sh all",
33
39
  "open-cursor": "cursor ./__test-sandbox__/test-project/wordpress-dev.code-workspace"
34
40
  },
35
41
  "keywords": [
@@ -3,6 +3,9 @@ services:
3
3
  build:
4
4
  context: ..
5
5
  dockerfile: .devcontainer/Dockerfile
6
+ # Force linux/amd64 for Apple Silicon (ARM) compatibility via Rosetta 2.
7
+ # Remove this line if the base image gains a native linux/arm64 variant.
8
+ platform: linux/amd64
6
9
  container_name: {{projectName}}-app
7
10
  working_dir: /workspace
8
11
  env_file:
@@ -1,5 +1,39 @@
1
- root = true [*] charset = utf-8 indent_style = space indent_size = 2 end_of_line = lf
2
- insert_final_newline = true trim_trailing_whitespace = true [*.php] indent_size = 4 max_line_length
3
- = 120 [*.blade.php] indent_size = 4 insert_final_newline = true trim_trailing_whitespace = true
4
- [*.js] indent_size = 2 [*.json] indent_size = 2 [*.css] indent_size = 2 [*.scss] indent_size = 2
5
- [*.md] trim_trailing_whitespace = false [*.yml] indent_size = 2 [*.yaml] indent_size = 2
1
+ root = true
2
+
3
+ [*]
4
+ charset = utf-8
5
+ indent_style = space
6
+ indent_size = 2
7
+ end_of_line = lf
8
+ insert_final_newline = true
9
+ trim_trailing_whitespace = true
10
+
11
+ [*.php]
12
+ indent_size = 4
13
+ max_line_length = 120
14
+
15
+ [*.blade.php]
16
+ indent_size = 4
17
+ insert_final_newline = true
18
+ trim_trailing_whitespace = true
19
+
20
+ [*.js]
21
+ indent_size = 2
22
+
23
+ [*.json]
24
+ indent_size = 2
25
+
26
+ [*.css]
27
+ indent_size = 2
28
+
29
+ [*.scss]
30
+ indent_size = 2
31
+
32
+ [*.md]
33
+ trim_trailing_whitespace = false
34
+
35
+ [*.yml]
36
+ indent_size = 2
37
+
38
+ [*.yaml]
39
+ indent_size = 2
@@ -28,6 +28,7 @@ services:
28
28
  build:
29
29
  - bash /app/server/cmd/setup-php.sh
30
30
  overrides:
31
+ platform: linux/amd64
31
32
  extra_hosts:
32
33
  - "host.docker.internal:host-gateway"
33
34
  environment:
@@ -41,6 +42,7 @@ services:
41
42
  - bash /app/server/cmd/setup-node.sh
42
43
  scanner: false
43
44
  overrides:
45
+ platform: linux/amd64
44
46
  ports:
45
47
  - 5173:5173
46
48
  database:
@@ -1,28 +1,53 @@
1
- #
2
- {{projectName}}
1
+ # {{projectName}}
3
2
 
4
3
  > WordPress project scaffolded by [wp-kit](https://github.com/codigodoleo/wp-kit), using the
5
- [Roots](https://roots.io/) ecosystem: Bedrock, Sage, Acorn, and Lando. ## Stack - PHP
6
- {{phpVersion}}
7
- - Node.js
8
- {{nodeVersion}}
9
- - WordPress
10
- {{wpCoreVersion}}
11
- {{#if useSage}}- Sage
12
- {{sageVersion}}
13
- + Acorn
14
- {{/if}}- Lando (local development) ## Local Development ```bash lando start lando vite # HMR dev
15
- server lando vite-build # Production build ``` ## AI Co-Pilot This project includes
16
- [superpowers-sage](https://github.com/codigodoleo/superpowers-sage) skills in `.claude/`. Start a
17
- session with: ``` /sage-onboard ``` Available commands: | Command | Purpose | |---|---| |
18
- `/sage-onboard` | Project analysis and overview | | `/sage-plan` | Architecture decision for a new
19
- feature | | `/sage-scaffold` | Run generators and create stubs | | `/sage-review` | Review code
20
- against conventions | | `/sage-debug` | Guided troubleshooting | ## Theme
4
+ > [Roots](https://roots.io/) ecosystem: Bedrock, Sage, Acorn, and Lando.
5
+
6
+ ## Stack
7
+
8
+ - PHP {{phpVersion}}
9
+ - Node.js {{nodeVersion}}
10
+ - WordPress {{wpCoreVersion}}
11
+ {{#if useSage}}- Sage {{sageVersion}} + Acorn
12
+ {{/if}}- Lando (local development)
13
+
14
+ ## Local Development
15
+
16
+ ```bash
17
+ lando start
18
+ lando dev # HMR dev server (Vite)
19
+ lando theme-build # Production build
20
+ ```
21
+
22
+ ## AI Co-Pilot
23
+
24
+ This project includes [superpowers-sage](https://github.com/codigodoleo/superpowers-sage) skills in `.claude/`.
25
+ Start a session with:
26
+
27
+ ```
28
+ /sage-onboard
29
+ ```
30
+
31
+ Available commands:
32
+
33
+ | Command | Purpose |
34
+ |---|---|
35
+ | `/sage-onboard` | Project analysis and overview |
36
+ | `/sage-plan` | Architecture decision for a new feature |
37
+ | `/sage-scaffold` | Run generators and create stubs |
38
+ | `/sage-review` | Review code against conventions |
39
+ | `/sage-debug` | Guided troubleshooting |
40
+
41
+ ## Theme
21
42
 
22
43
  {{#if useSage}}
23
- Theme located at `content/themes/{{themeName}}/`. ```bash lando theme-composer require
24
- vendor/package lando theme-yarn add package-name lando acorn make:component ComponentName lando
25
- acorn acf:block BlockName ```
44
+ Theme located at `content/themes/{{themeName}}/`.
45
+
46
+ ```bash
47
+ lando theme-bootstrap # Install theme dependencies
48
+ lando acorn make:component ComponentName
49
+ lando acorn acf:block BlockName
50
+ ```
26
51
  {{else}}
27
- No Sage theme configured.
28
- {{/if}}
52
+ No Sage theme configured.
53
+ {{/if}}