architecture · observed
Stack e tecnologias
Linguagens, frameworks, bibliotecas e padrões que sustentam o James.
O James é construído sobre uma fundação moderna, robusta e focada em simplicidade operacional. A escolha de cada ferramenta foi pensada para maximizar a produtividade, a privacidade e a consistência visual.
Back-end e Infraestrutura
- Linguagem / Framework: PHP 8.5 com Laravel 13.
- Autenticação Headless: Laravel Fortify gerencia todo o core de autenticação permitindo focar apenas nas views personalizadas.
- Banco de Dados: PostgreSQL 15+ (com extensões
unaccentepg_trgm). - Infraestrutura Local: Docker gerenciado via Laravel Sail.
- Ferramentas de Desenvolvimento e Qualidade:
- Pest PHP v4 (Testes Unitários, Feature e Arquiteturais) - Laravel Pint (Padronização e formatação automática de código)
Front-end e UI
- Páginas e Estrutura: Blade Components altamente modularizados (registrados anonimamente via
Blade::anonymousComponentPath, sem aliases comoui.ouform.). - Estilização: TailwindCSS (v4) utilizando classes utilitárias semânticas e cores padronizadas da escala.
- Interatividade Leve: Alpine.js (v3) gerencia a reatividade no cliente (modais, tooltips, dropdowns, validações e manipulação interativa de listas).
- Visualização Gráfica: Apache ECharts integrado via Vanilla JavaScript para renderizar visualizações complexas (Diagrama de Sankey de fluxo de caixa, evolução cumulativa de saldo e donuts por categoria).
- Ícones: Ecossistema Blade Icons com suporte nativo a:
- Heroicons (<x-heroicon-o-...>) como padrão do sistema - Tabler Icons (<x-tabler-...>) e Phosphor Icons (<x-phosphor-...>) para seleção dinâmica de tags financeiras.
Ferramentas e Bibliotecas Integradas
- Auditoria e Logs de Mutações:
- Sistema de Notificações Multi-canal:
- Gestão de Imagens e Arquivos:
- Editor Rico (Rich Text):
- Spatie Laravel Activitylog (v5+): Rastreamento automático e vitalício de alterações em todas as Models de negócio (created, updated, deleted, restored, forceDeleted).
- Telegram Notification Channel: Integração com a API de bots do Telegram para push notifications de alertas, faturas e relatórios.
- Spatie Media Library: Trata todo o armazenamento polimórfico de avatares e comprovantes no disco privado (private), garantindo 100% de sigilo. - Cropper.js: Integrado via componente Blade (form-image-cropper) e Alpine.js para recorte visual de imagens antes do upload.
- EasyMDE: Editor visual para anotações e descrições, persistindo os dados como Markdown puro no banco.
Padrões Arquiteturais e Banco de Dados
- PostgreSQL Extensions:
- Soft Deletes: Deleção lógica aplicada por padrão às entidades principais do sistema.
- Dados Dinâmicos em JSONB: Utilização do tipo
JSONBnativo do PostgreSQL para armazenar listas flexíveis (telefones, e-mails, chaves Pix) sem poluir o banco com tabelas auxiliares desnecessárias.
- unaccent: Habilitado para buscas textuais precisas ignorando acentuação. - pg_trgm: Utilizado para indexação otimizada e buscas por similaridade/relevância.