ESTRUTURA DO PROJETO WEBMONEY
Versão: 1.27.1
Última atualização: 13 de Dezembro de 2025
📁 Estrutura Geral
webmoney/
├── backend/ # Laravel 12 API
├── frontend/ # React 18 SPA
├── VERSION # Versão atual
├── CHANGELOG.md # Histórico de versões
├── README.md # Documentação principal
├── ESTRUTURA_PROJETO.md # Este arquivo
├── CREDENCIAIS_SERVIDOR.md # Acessos (confidencial)
├── ESPECIFICACIONES_WEBMONEY.md # Especificação funcional
├── APRENDIZADOS_TECNICOS.md # Soluções de problemas
└── .DIRETRIZES_DESENVOLVIMENTO_v3 # Regras de dev
🔧 Backend (Laravel 12)
backend/
├── app/
│ ├── Http/
│ │ ├── Controllers/Api/
│ │ │ ├── AccountController.php
│ │ │ ├── AuthController.php
│ │ │ ├── CategoryController.php
│ │ │ ├── CostCenterController.php
│ │ │ ├── DashboardController.php
│ │ │ ├── EmailTestController.php
│ │ │ ├── ImportController.php
│ │ │ ├── LiabilityAccountController.php
│ │ │ ├── RecurringTemplateController.php # Transações recorrentes
│ │ │ ├── TransactionController.php
│ │ │ └── TransferDetectionController.php # Inclui RefundDetection
│ │ │
│ │ └── Middleware/
│ │ └── SecurityHeaders.php # Headers de segurança
│ │
│ ├── Models/
│ │ ├── Account.php
│ │ ├── Category.php
│ │ ├── CategoryKeyword.php
│ │ ├── CostCenter.php
│ │ ├── CostCenterKeyword.php
│ │ ├── ImportLog.php
│ │ ├── ImportMapping.php
│ │ ├── LiabilityAccount.php
│ │ ├── LiabilityInstallment.php
│ │ ├── RecurringInstance.php # Parcelas de recorrência
│ │ ├── RecurringTemplate.php # Templates de recorrência
│ │ ├── Transaction.php
│ │ └── User.php
│ │
│ ├── Services/
│ │ ├── Import/
│ │ │ ├── ImportService.php
│ │ │ ├── ExcelParser.php
│ │ │ ├── CsvParser.php
│ │ │ ├── OfxParser.php
│ │ │ └── PdfParser.php
│ │ └── RecurringService.php # Lógica de recorrências
│ │
│ ├── Policies/
│ │ └── RecurringTemplatePolicy.php # Autorização
│ │
│ └── Providers/
│ └── AppServiceProvider.php # Rate limiting config
│
├── config/
│ ├── cors.php # CORS configuration
│ ├── sanctum.php # Token expiration
│ └── session.php # Cookie settings
│
├── database/migrations/ # 30+ migrations
│
├── routes/
│ └── api.php # Todas as rotas da API
│
└── deploy.sh # Script de deploy
🎨 Frontend (React 18)
frontend/
├── src/
│ ├── components/
│ │ ├── CookieConsent.jsx # Banner LGPD/GDPR
│ │ ├── CreateRecurrenceModal.jsx # Modal criar recorrência
│ │ ├── CurrencySelector.jsx
│ │ ├── Footer.jsx # Rodapé
│ │ ├── IconSelector.jsx
│ │ ├── LanguageSelector.jsx
│ │ ├── Layout.jsx # Menu com grupos colapsáveis
│ │ ├── Modal.jsx
│ │ ├── ProtectedRoute.jsx
│ │ ├── Toast.jsx
│ │ └── dashboard/
│ │ ├── CalendarWidget.jsx # Calendário interativo
│ │ ├── CashflowChart.jsx # Gráfico fluxo de caixa
│ │ ├── OverdueWidget.jsx # Widget de vencidos
│ │ ├── OverpaymentsAnalysis.jsx # Análise sobrepagamentos
│ │ ├── PaymentVariancesChart.jsx # Variações de pagamento
│ │ └── UpcomingWidget.jsx # Próximos 7 dias
│ │
│ ├── pages/
│ │ ├── Accounts.jsx
│ │ ├── Categories.jsx
│ │ ├── CostCenters.jsx
│ │ ├── Dashboard.jsx # Inclui todos os widgets
│ │ ├── ImportTransactions.jsx
│ │ ├── LiabilityAccounts.jsx
│ │ ├── Login.jsx
│ │ ├── RecurringTransactions.jsx # Página de recorrentes
│ │ ├── RefundDetection.jsx # Detecção de reembolsos
│ │ ├── Register.jsx
│ │ ├── TransactionsByWeek.jsx
│ │ └── TransferDetection.jsx
│ │
│ ├── services/
│ │ └── api.js # Axios + todos services
│ │
│ ├── i18n/
│ │ ├── index.js # Config i18next + detecção país
│ │ └── locales/
│ │ ├── es.json
│ │ ├── en.json
│ │ └── pt-BR.json
│ │
│ ├── context/
│ │ └── AuthContext.jsx
│ │
│ └── App.jsx
│
├── dist/ # Build de produção
└── deploy.sh # Script de deploy
🔗 Endpoints da API
Autenticação
| Método |
Endpoint |
Descrição |
| POST |
/api/register |
Criar conta |
| POST |
/api/login |
Login (retorna token) |
| POST |
/api/logout |
Logout |
| GET |
/api/user |
Usuário autenticado |
Contas Bancárias
| Método |
Endpoint |
Descrição |
| GET |
/api/accounts |
Listar contas |
| POST |
/api/accounts |
Criar conta |
| PUT |
/api/accounts/{id} |
Atualizar conta |
| DELETE |
/api/accounts/{id} |
Excluir conta |
| POST |
/api/accounts/{id}/recalculate-balance |
Recalcular saldo |
Transações
| Método |
Endpoint |
Descrição |
| GET |
/api/transactions |
Listar (com filtros) |
| GET |
/api/transactions/by-week |
Agrupadas por semana |
| POST |
/api/transactions |
Criar |
| PUT |
/api/transactions/{id} |
Atualizar |
| DELETE |
/api/transactions/{id} |
Excluir |
| POST |
/api/transactions/{id}/toggle-status |
Alternar status |
| POST |
/api/transactions/{id}/split |
Dividir transação |
Dashboard
| Método |
Endpoint |
Descrição |
| GET |
/api/dashboard/stats |
Estatísticas gerais |
| GET |
/api/dashboard/cashflow |
Fluxo de caixa mensal |
| GET |
/api/dashboard/overpayments |
Análise de sobrepagamentos |
| GET |
/api/dashboard/calendar |
Dados do calendário (mês) |
| GET |
/api/dashboard/calendar-day |
Transações de um dia |
| GET |
/api/dashboard/upcoming |
Próximos N dias pendentes |
| GET |
/api/dashboard/overdue |
Transações vencidas pendentes |
Transações Recorrentes
| Método |
Endpoint |
Descrição |
| GET |
/api/recurring |
Listar templates |
| POST |
/api/recurring |
Criar template |
| POST |
/api/recurring/from-transaction |
Criar de transação |
| GET |
/api/recurring/{id} |
Detalhe do template |
| PUT |
/api/recurring/{id} |
Atualizar template |
| DELETE |
/api/recurring/{id} |
Excluir template |
| POST |
/api/recurring/{id}/pause |
Pausar template |
| POST |
/api/recurring/{id}/resume |
Retomar template |
| GET |
/api/recurring/{id}/instances |
Listar parcelas |
| GET |
/api/recurring/pending |
Todas pendentes |
| GET |
/api/recurring/overdue |
Vencidas |
| GET |
/api/recurring/due-soon |
Próximas do vencimento |
| GET |
/api/recurring/frequencies |
Frequências disponíveis |
| POST |
/api/recurring-instances/{id}/pay |
Pagar (cria transação) |
| POST |
/api/recurring-instances/{id}/reconcile |
Conciliar |
| POST |
/api/recurring-instances/{id}/skip |
Pular |
| POST |
/api/recurring-instances/{id}/cancel |
Cancelar |
| GET |
/api/recurring-instances/{id}/candidates |
Transações candidatas |
Duplicatas
| Método |
Endpoint |
Descrição |
| GET |
/api/duplicates |
Listar grupos |
| POST |
/api/duplicates/{id}/ignore |
Ignorar par |
| DELETE |
/api/duplicates/{id}/auto-delete |
Auto-delete grupo |
| POST |
/api/duplicates/batch-ignore |
Ignorar em lote |
| DELETE |
/api/duplicates/batch-auto-delete |
Auto-delete em lote |
Transferências
| Método |
Endpoint |
Descrição |
| GET |
/api/transfers/potential |
Transferências potenciais |
| POST |
/api/transfers/confirm |
Confirmar transferência |
| POST |
/api/transfers/ignore |
Ignorar par |
Detecção de Reembolsos
| Método |
Endpoint |
Descrição |
| GET |
/api/refund-detection/potential |
Pares despesa/reembolso potenciais |
| POST |
/api/refund-detection/confirm |
Confirmar par de reembolso |
| POST |
/api/refund-detection/ignore |
Ignorar par |
Importação
| Método |
Endpoint |
Descrição |
| POST |
/api/import/parse |
Parsear arquivo |
| POST |
/api/import/execute |
Executar importação |
<EFBFBD><EFBFBD>️ Banco de Dados
Tabelas Principais
| Tabela |
Descrição |
users |
Usuários do sistema |
accounts |
Contas bancárias |
transactions |
Transações financeiras |
categories |
Categorias (175 pré-configuradas) |
category_keywords |
Keywords para auto-classificação |
cost_centers |
Centros de custo |
cost_center_keywords |
Keywords de centros de custo |
liability_accounts |
Contas passivo (financiamentos) |
liability_installments |
Parcelas de financiamentos |
recurring_templates |
Templates de transações recorrentes |
recurring_instances |
Parcelas/instâncias de recorrências |
import_logs |
Log de importações |
import_mappings |
Mapeamentos salvos |
ignored_duplicate_pairs |
Pares de duplicatas ignorados |
ignored_transfer_pairs |
Pares de transferências ignorados |
ignored_refund_pairs |
Pares de reembolso ignorados |
Campos Especiais de Transações
| Campo |
Tipo |
Descrição |
is_transfer |
boolean |
É uma transferência |
transfer_pair_id |
int |
ID da transação par |
is_refund_pair |
boolean |
É parte de par reembolso |
refund_linked_id |
int |
ID da transação vinculada (reembolso) |
is_split |
boolean |
Foi dividida |
split_from_id |
int |
ID da transação original |
recurring_instance_id |
int |
ID da instância recorrente vinculada |
import_hash |
string |
Hash SHA-256 para duplicidade |
original_description |
string |
Descrição original do banco |
🖥️ Servidor de Produção
| Item |
Valor |
| IP |
213.165.93.60 |
| Domínio |
webmoney.cnxifly.com |
| Backend |
/var/www/webmoney/backend |
| Frontend |
/var/www/webmoney/frontend/dist |
| PHP |
8.4-FPM |
| Web Server |
Nginx |
| SSL |
Let's Encrypt |
| Sessões |
Redis |
🔐 Segurança Implementada
| Recurso |
Configuração |
| Rate Limiting |
Login: 5/min, Register: 10/hour, API: 60/min |
| CORS |
Restrito a webmoney.cnxifly.com |
| Token Expiration |
7 dias |
| Cookies |
HttpOnly, Secure, SameSite=lax, Encrypt=true |
| Headers |
X-XSS-Protection, X-Content-Type-Options, X-Frame-Options, CSP |
📝 Comandos Úteis
Deploy
# Frontend
cd frontend && ./deploy.sh
# Backend
cd backend && ./deploy.sh
Conectar ao Servidor
sshpass -p 'Master9354' ssh root@213.165.93.60
Artisan no Servidor
cd /var/www/webmoney/backend && php artisan [comando]