# Aprova — plataforma de aprovação de imagens e vídeos para estúdios de visualização Plataforma web onde um estúdio 3D sobe os renders e as animações de um projeto, abre uma janela para o cliente comentar em cima da imagem, fecha o prazo, e só então libera os comentários para a equipe executar. Depois sobe a versão seguinte e o ciclo recomeça. Nasceu de um problema concreto: feedback de cliente chegando por WhatsApp em texto solto ("a parede de madeira na imagem 14"), sem indicação do ponto, sem versionamento, e a equipe começando a corrigir antes de todos os revisores terem falado. **Estado atual:** especificação revisada e protótipo completo navegável. Nenhuma linha de backend escrita. Este repositório é o ponto de partida para a implementação. --- ## Por onde começar 1. Leia `docs/01-produto.md` — o que o produto faz e para quem. 2. Abra `prototipos/v2/aprova.html` no navegador e percorra o roteiro de `prototipos/v2/README.md`. É a referência de comportamento; a implementação deve reproduzi-la. 3. Leia `docs/09-melhorias.md` — o que mudou em relação à especificação original e por quê. 4. Leia `docs/12-seguranca.md` **antes de escrever a primeira rota** — as regras de fase e de isolamento entre estúdios são a parte do produto que não pode falhar, e os testes delas vêm antes de qualquer tela. 5. Leia `docs/07-pendencias.md` — ainda há decisão de negócio em aberto. 6. `sql/schema-v2.sql` é o esquema atual. Revise antes de rodar. ## Estrutura ``` docs/ especificação: produto, decisões, arquitetura, dados, telas, medições, melhorias (09), sistema visual (10), contas e e-mails (11), segurança e dados (12) sql/ schema-v2.sql é o esquema atual; schema.sql é a primeira versão, mantida para leitura do raciocínio original prototipos/ v2/aprova.html é a referência; os quatro da raiz são a primeira geração scripts/ utilitários Python de imagem já prontos e testados interno/ material do caso real que originou o produto — contém dado de cliente ``` ## Stack proposta | camada | escolha | motivo | |---|---|---| | Hospedagem | Hostinger compartilhado (plano Unlimited já contratado) | custo zero adicional para validar; migra para VPS quando escalar | | Backend | PHP 8 + MySQL 8 | é o que hospedagem compartilhada entrega | | Frontend | HTML + CSS + JS sem framework | os protótipos já são isso; sem etapa de build, deploy por FTP/SSH | | Imagens | pirâmide de tiles WebP, servida por endpoint PHP | resolução total com pouco tráfego | | E-mail | SMTP externo (Brevo ou Resend, plano gratuito) | `mail()` do compartilhado cai em spam | A justificativa de cada escolha, incluindo as descartadas, está em `docs/02-decisoes.md`. ## Rodar os protótipos Não precisa de servidor. Abra o arquivo no navegador. São autocontidos: todo o CSS, JS e as imagens em base64 estão dentro do HTML. O `v2` é gerado a partir de `prototipos/v2/_fonte/`. Depois de mexer no template ou no JS, rode `python montar.py`. ## Roadmap **Fase 1 — fundação.** Contas de estúdio, login da equipe, CRUD de projeto e cliente, upload com processamento, visualizador com zoom. Sem cliente entrando ainda. **Fase 2 — o ciclo.** Conta do gerente do cliente e link mágico do revisor, comentário com marcação (ponto, área e seta), aprovação por item, as quatro fases da rodada, o gate dos revisores obrigatórios, etapas de produção com check da equipe, acompanhamento pelo cliente, relatório da rodada. **Fase 3 — versões e vídeo.** Nova versão por item, cortina de comparação, migração dos comentários não resolvidos, player com comentário por timecode. **Fase 4 — produto.** Planos e cobrança, marca do estúdio no link do cliente, importação do retorno que chegou por fora, domínio próprio. Contas, convites e os dez e-mails atravessam as fases 1 e 2 — especificação em `docs/11-contas-e-emails.md`. Critérios de aceite por fase em `docs/05-telas.md`; o que mudou de fase e por quê está em `docs/09-melhorias.md`. ## Aviso sobre dados Os protótipos em `prototipos/02`, `03`, `04`, `v2/` e a pasta `interno/` contêm renders de um cliente real; `02`, `03` e `interno/` contêm também apontamentos e nomes reais. Servem de referência de implementação e **não devem ser usados em demonstração comercial**. Detalhe em `docs/08-privacidade.md`. Trocar o conjunto de imagens do `v2` é editar o `CATALOGO` no topo de `prototipos/v2/_fonte/gerar_assets.py` e rodar os dois scripts. **Não publique este repositório num endereço aberto.** Deploy estático de Vercel, Netlify, Cloudflare Pages ou GitHub Pages é público por padrão, e isto aqui carrega renders de um empreendimento não lançado e nomes reais. A lista do que sai junto e as três saídas possíveis estão em `docs/08-privacidade.md`, na seção *Antes de publicar em qualquer lugar*. O `index.html` da raiz existe para o dia em que isso fizer sentido — e para o repositório abrir direito quando servido localmente. Ele traz `noindex` e o aviso de conteúdo restrito, o que é rede de segurança e não fechadura. ## Continuar com um agente de código Prompt inicial sugerido: > Leia o README e tudo em `docs/`. Implemente a Fase 1 conforme `docs/05-telas.md`, usando o > esquema de `sql/schema-v2.sql`. Comece pelos testes de permissão de `docs/12-seguranca.md` — > fase da rodada e isolamento entre estúdios são regra de servidor, e o protótipo não as > garante. Siga as decisões de `docs/02-decisoes.md`; se precisar contrariar alguma, pare e > explique antes. `prototipos/v2/aprova.html` é a referência visual e de comportamento: > reproduza o fluxo e o sistema visual, não invente telas novas.