Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Wiki Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Painel de Dados Nubo
  • WikiWiki
  • Wiki
  • Arquitetura

Last edited by Carolina Michel Ferreira Jun 19, 2025
Page history
This is an old version of this page. You can view the most recent version or browse the history.

Arquitetura

  • 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

Fluxo de Requisição

  1. Usuário faz uma requisição HTTP para a API.
  2. Router recebe a requisição e valida os dados de entrada.
  3. Service processa a lógica de negócio e acessa os modelos, se necessário.
  4. Repository interage com o banco de dados via SQLAlchemy.
  5. Resposta é enviada de volta ao usuário.

Rotas da API

User - POST /users - _Criar usuário (admin ou normal) _ - GET /users/email/{email} - _Buscar usuário por email _ - GET /users/account/{accountId} - _Listar todos os usuários por conta _ - DELETE /users/{userId} - _Excluir usuário (soft delete) _ - POST /users/authenticate - _Autenticar usuário_
Account - POST /accounts - _Criar conta _ - PUT /accounts/{accountId} - _Atualizar conta_ - GET /accounts/email/{email} - _Buscar conta por email _ - GET /accounts - _Listar todas as contas_ - DELETE /accounts/{accountId} - _Excluir conta (**soft delete**)_
Dataset - POST /datasets - _Criar dataset _ - PUT /datasets/{datasetId} - _Atualizar dataset _ - GET /datasets/{datasetId} - _Buscar dataset por ID _ - GET /datasets/location/{location} - _Buscar dataset por localização _ - GET /datasets/price/{price} - _Buscar dataset por preço_ - GET /datasets - _Listar todos os datasets (paginação)_ - DELETE /datasets/{datasetId} - _Excluir dataset (soft delete)_
Invoice - POST /invoices - _Criar fatura_ - GET /invoices/account/{accountId} - _Buscar fatura por conta_ - GET /invoices - _Buscar todas as faturas Transaction_ - POST /transactions - _Criar transação (única ou assinatura)_
Subscription - POST /subscriptions - Criar assinaturaDELETE /subscriptions/{subscriptionId} - Cancelar assinatura - GET /subscriptions/account/{accountId} - Buscar todas as assinaturas por conta - GET /subscriptions/account/{accountId}/month/{month} - Buscar todas as assinaturas por conta e mês
Clone repository
  • Arquitetura
  • Banco de Dados
  • Gerência
  • Mockups
  • Processos
  • Sprints
  • Testes
  • Home