Product Backlog: PHP Form Manager
Future Features (Not in MVP)
- Audio Recording in Form: Allow users to record an audio message directly in the form before submitting.
- Webhooks & App Integrations: Connect submissions to other apps (Google Drive, Notion, Slack, etc.) via webhooks.
- Visual Form Builder: A drag-and-drop interface in the admin panel to generate the HTML for the forms, which can then be embedded into static pages.
- Advanced Spam Protection: Integrate reCAPTCHA, hCaptcha, or Turnstile to prevent bot submissions.
- Email Templates: Customizable email templates for notifications and auto-responders to the person who submitted the form.
- Multi-user Admin: Support for multiple administrator accounts with different permission levels.
- Analytics / Dashboard: Charts and metrics showing form submission rates over time.
Novas Ideias / Backlog Expandido
- Fila de e-mails com tratamento de erros (Persistência):
- *Contexto:* Evitar perda de e-mails caso o servidor SMTP/mail falhe temporariamente e dar visibilidade aos erros.
- *Caminho:* Criar uma tabela
email_queue. No process.php, ao invés de enviar na hora, inserir na fila. Ter um cron job (cron.php) ou execução assíncrona que tenta enviar e atualiza o status (enviado, falhou). Logs de falha podem ser visualizados no painel admin.- Gerador automático de configuração de forms (Importar HTML):
- *Contexto:* Criar toda a estrutura do form no DB apenas colando o HTML.
- *Caminho:* Criar um parser no admin (usando
DOMDocument em PHP) que recebe um HTML de formulário, extrai os campos <input>, <select>, <textarea>, suas propriedades (type, required, etc.), cria o form no BD, gera um ID e retorna o HTML com o action correto e dicas de validação.- Gestão detalhada de respostas (Visualizações e Gráficos):
- *Contexto:* Melhorar a experiência de análise dos dados enviados.
- *Caminho:* Atualizar
submissions.php para incluir filtros (busca, ordenação). Integrar uma biblioteca leve de gráficos (como Chart.js) para exibir estatísticas simples de campos do tipo radio ou select se esses dados forem identificáveis.- Criação da tabela de cada form a partir do primeiro POST:
- *Contexto:* Atualmente os dados são salvos em JSON numa única coluna. Ter tabelas reais facilitaria exportações e integrações.
- *Caminho:* No
process.php, ao receber o primeiro POST de um form, criar dinamicamente uma tabela (ex: form_data_2148...) com colunas baseadas nas chaves do POST. Submissões futuras seriam inseridas nesta tabela. (Atenção a injeção de SQL nas chaves).- Criador de forms completo:
- *Contexto:* Permitir construir o form visualmente no admin e gerar tanto o BD quanto o HTML.
- *Caminho:* Desenvolver um construtor arrastar-e-soltar (ou via opções) no admin onde se define campos, tipos (datapicker, números, máscaras para CPF/telefone), validações. Gerar a estrutura de BD ideal e o snippet HTML completo para o usuário copiar.
- Mensagens personalizadas e multi-idioma por formulário:
- *Contexto:* Formulários diferentes podem precisar de mensagens de sucesso/erro específicas ou estar em idiomas diferentes.
- *Caminho:* Permitir configurar mensagens de confirmação e erro para cada form. No mínimo, ter a opção de escolher o idioma (PT-BR e EN) para as mensagens padrão exibidas ao usuário.
Funcionalidades de Form Schema (Planejamento)
- Máscaras e Validadores Específicos:
- *Contexto:* O
form_schema atual aceita a definição de campos, mas ainda não aplica máscaras de formatação (telefone, CPF, CEP, etc) ou validações avançadas (regex, tamanho mínimo) além de checar se está vazio.- *Caminho:* Adicionar propriedades ao JSON como
mask e regex. O process.php deve interpretar essas regras e rejeitar a submissão se não baterem. O HTML de embed.php deve injetar JavaScript leve (ou usar bibliotecas via CDN) para aplicar a máscara no frontend se ativado.- Configurações Globais de Form (Toggles):
- *Contexto:* Integrar mais opções na tela de edição do form para controle de segurança e UX.
- *Caminho:* Checkboxes no "Manage/Edit Forms" para:
- Ativar/Desativar validação via JavaScript no client-side.
- Ativar/Desativar máscaras via JavaScript.
- Impedir envio duplo por script.
(Esses toggles podem ser salvos como novas colunas na tabela
forms ou dentro de um campo de settings JSON).- Integração do Form Schema com Tabelas do Banco de Dados:
- *Contexto:* Atualmente todas as respostas vão para uma coluna
data em formato JSON.- *Caminho:* Quando um form tem um schema definido, o sistema deve ser capaz de criar/atualizar uma tabela específica para aquele formulário (ex:
form_data_abc123) e gerar as colunas baseadas no name de cada input do schema, para visualizações e queries mais avançadas.