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

  1. 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

  1. 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

  1. Banco de Dados Sistema Gerenciador: PostgreSQL

Modelo: Relacional

Principais Tabelas:

users

products

categories

orders

order_items

cart

notifications

  1. 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