feat(composer): adiciona composer.json e liga o Composer à imagem

Auditoria 6.5/7.1: sem Composer nem composer.json. Segue exatamente o
que a fotografia já faz (mesma imagem base, mesmo Dockerfile) — a
frota não converte o código próprio para classes com namespace (nem
lá isso existe), o composer.json serve para declarar PHP/extensões e
dependências, e para o botão "Atualizar dependências" do backoffice.

vendor/PHPMailer continua hand-vendored e é o que o functions_mail.php
partilhado espera por caminho fixo (vendor/PHPMailer/src/...) — mudar
isso é código partilhado, fora do alcance de uma app só. composer
install vai criar vendor/phpmailer/phpmailer/ em paralelo (igual à
fotografia, "harmless but useless" no comentário do Dockerfile deles).

.gitignore: vendor/ passa a gitignored exceto vendor/PHPMailer/
(allowlist, como o fpdf da fotografia); composer.lock fica versionado.

Dockerfile em /srv/stacks/fitme.andmore.pt/ (fora deste repo) ganhou o
binário do composer:2 e unzip — próximo passo é rebuild da imagem.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
andreandClaude Sonnet 5 committed 2026-09-25 17:16:10 +01:00
1 parent df1aad8769
commit 927cc1967d
2 files changed
+31 -3

No files matched your search

+9 -3
View File
@@ -59,9 +59,15 @@ Thumbs.db
.claude/
# ─── Dependências ───────────────────────────────────────────────────────────
# vendor/ ESTÁ versionado de propósito: não há Composer nesta app e o
# PHPMailer foi copiado à mão (vendor/PHPMailer). Quando houver composer.json,
# acrescentar aqui "vendor/" e retirá-lo do índice.
# vendor/ é output do composer install, exceto vendor/PHPMailer: o
# platform-tools partilhado (functions_mail.php) já espera esse caminho por
# require_once, igual em toda a frota — composer install criaria uma segunda
# árvore paralela (vendor/phpmailer/phpmailer/) que nada usa por si, mas fica
# para o botão "Atualizar dependências" do backoffice e para composer audit.
# composer.lock FICA versionado (fixa o que um deploy instala).
/vendor/*
!/vendor/PHPMailer/
!/vendor/PHPMailer/**
node_modules/
# ─── Lixo de editores / temporários ─────────────────────────────────────────
+22
View File
@@ -0,0 +1,22 @@
{
"name": "andmore/fitme3070",
"description": "FitMe 3070 — site público + backoffice de ginásio (PHP simples, sem framework, sem build step).",
"type": "project",
"license": "proprietary",
"require": {
"php": ">=8.4",
"ext-pdo": "*",
"ext-pdo_mysql": "*",
"ext-mbstring": "*",
"ext-gd": "*",
"ext-curl": "*",
"ext-json": "*",
"ext-zip": "*",
"ext-intl": "*",
"phpmailer/phpmailer": "^7.1"
},
"config": {
"vendor-dir": "vendor",
"optimize-autoloader": true
}
}