- Backend: Ruby on Rails
- Frontend: HTML/CSS (simples ou futuro app)
- Banco de Dados: PostgreSQL
- Autenticação: Devise (sessões via cookie)
- Upload de Arquivos: Active Storage ou Paperclip
- Autorização: Pundit ou CanCanCan
- Admin: Acesso total ao sistema
- Atendente: Gerencia clientes, orçamentos e arquivos
- Cliente (empresa): Acesso restrito aos próprios dados e orçamentos
Usuário conterá um campo role para identificar o tipo:
enum role: { admin: 0, attendant: 1, client: 2 }- name
- cpf
- password_digest (ou Devise padrão)
- role (enum)
- name (razão social)
- cpf_cnpj
- phone
- address
- user_id (relaciona com usuário cliente)
- client_id (referência para Client)
- description
- value
- status (pendente, aprovado, recusado)
- due_date
- attachable (polimórfico: Client ou Estimate)
- file (upload)
- uploaded_by (user_id)
- Login tradicional via sessão (Devise)
- Controle de acesso por
role
- Log de ações (criação, edição, login etc.)
- Ex:
ActivityLogcom user_id, action, target, timestamp
- Comentários internos nos orçamentos (model
Comment) - Visíveis apenas por admins/atendentes
- Upload de documentos e imagens
- Visualização e validação
- Exportar orçamentos como PDF (Prawn ou WickedPDF)
- Botão para envio por e-mail
- Internas no sistema
- E-mails de atualização de status
- Total de orçamentos por período
- Filtragem por cliente, atendente, status
- Cliente pode aprovar/recusar orçamentos no painel
- Registro da decisão com timestamp
- Criação do projeto Rails e configuração básica
- Modelagem das entidades principais
- Implementação da autenticação com Devise
- Autorização por
role - CRUDs com testes (RSpec)
- Upload e visualização de arquivos
- Geração de PDFs
- Comentários e notificações
- Deploy (Render, Fly.io, Railway etc.)
- Frontend ou mobile app (futuro)
Esse documento pode ser expandido com wireframes, regras de negócio detalhadas e funcionalidades adicionais conforme o projeto evolui.