- Frontend
- Backend
- Infraestrutura
Visão Geral do Backend
O Painel de Dados Nubo - Backend é um sistema baseado em microserviço que fornece APIs para gerenciamento e entrega de dados analíticos. Ele é construído utilizando FastAPI e segue uma arquitetura modular para garantir escalabilidade, segurança e facilidade de manutenção.
Estrutura de projeto
O sistema segue a arquitetura modular, organizada da seguinte forma:
📦 nubo-backend
┣ 📂 config # Configurações do sistema (banco, JWT, YAML, etc.)
┣ 📂 model # Definições das entidades e estrutura do banco de dados
┣ 📂 repository # Camada de acesso a dados e comunicação com o banco
┣ 📂 routers # Endpoints da API
┣ 📂 service # Regras de negócio e lógica de processamento
┣ 📜 requirements.txt # Dependências do projeto
┣ 📜 Dockerfile # Configuração para Docker
┣ 📜 README.md # Documentação
┗ 📜 .env.example # Configuração de ambiente
Camada de Modelos (Model)
- Utiliza SQLAlchemy como ORM.
- Define as tabelas do banco de dados.
- Gerencia a persistência dos dados.
Camada de Repositório (Repository)
- Implementa operações de banco de dados de forma desacoplada.
- Facilita a reutilização e manutenção do código.
Camada de Rotas (Routers)
- Define as rotas da API usando FastAPI.
- Processa requisições HTTP e delega a lógica para a camada de serviços.
Camada de Serviços (Service)
- Contém a lógica de negócio.
- Interage com os modelos e garante as regras do sistema.
Camada de Configuração (Config)
- Gerencia configurações gerais do sistema.
- Inclui conexão com o banco de dados e parâmetros do JWT.
Integrações e Tecnologias
Tecnologia | Uso |
---|---|
FastAPI | Framework web para APIs assíncronas |
SQLAlchemy | ORM para manipulação de banco de dados |
JWT (PyJWT) | Autenticação e autorização |
Docker | Containerização da aplicação |
YAML | Configuração parametrizada do sistema |
Fluxo de Requisição
- Usuário faz uma requisição HTTP para a API.
- Router recebe a requisição e valida os dados de entrada.
- Service processa a lógica de negócio e acessa os modelos, se necessário.
- Repository interage com o banco de dados via SQLAlchemy.
- Resposta é enviada de volta ao usuário.