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

Arquitetura

Documentação do Negócio

Documentação Técnica

  • Frontend
  • Backend
  • Infraestrutura

Diagrama de Deploy

image

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 assinatura
  • DELETE /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