Arquitetura do Sistema - ViniciusCasturino/Imperium-Remoto-B GitHub Wiki
A arquitetura do sistema Imperium Remoto foi planejada para garantir modularidade, escalabilidade e manutenibilidade. A aplicação é dividida em três camadas principais: frontend (mobile), backend (API REST) e banco de dados. A comunicação entre o app e o servidor ocorre via requisições HTTP seguindo o padrão REST.
Usuário] ↓ [Aplicativo Mobile (React Native)] ↓ [API REST (Java - Spring Boot)] ↓ [Banco de Dados (PostgreSQL)]
↘
Integrações Externas:
- Pagamento (ex: Stripe)
- Notificações (FCM)
- E-mail (ex: SendGrid)
Componentes da Arquitetura
- Aplicativo Mobile (Frontend) Tecnologia: React Native com Expo
Responsável por:
Interface com o usuário (UI/UX)
Consumo da API REST
Gerenciamento de estado local
Envio e recebimento de notificações
Plataformas Alvo: Android e iOS
- Backend (API REST) Tecnologia: Java com Spring Boot
Responsável por:
Regras de negócio
Autenticação e autorização (JWT)
Manipulação de dados (CRUD de produtos, pedidos, usuários)
Integrações com serviços externos
Envio de notificações e e-mails
Padrões Adotados:
MVC (Model-View-Controller)
RESTful APIs
DTOs para transporte de dados
- Banco de Dados Sistema Gerenciador: PostgreSQL
Modelo: Relacional
Principais Tabelas:
users
products
categories
orders
order_items
cart
notifications
- Serviços Externos Gateway de Pagamento: Gerencia transações financeiras
FCM (Firebase Cloud Messaging): Envio de notificações push
Serviço de E-mail: Confirmações e notificações via email
Padrões e Boas Práticas Adotadas Separação de responsabilidades (camadas bem definidas)
Injeção de dependências no backend (Spring DI)
Versionamento de API
Tratamento global de exceções
Segurança com autenticação JWT e criptografia de senhas (BCrypt) Futuras Expansões Painel administrativo web para gerenciamento de produtos e pedidos
Sistema de recomendação baseado em histórico de compras