Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W 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
  • DoBem
  • wiki
  • Wiki
  • Arquitetura

Last edited by Lucas Leifheit Nardon Mar 16, 2024
Page history
This is an old version of this page. You can view the most recent version or browse the history.

Arquitetura

Home Escopo Geral Processo Mockups Configuração Arquitetura Código Banco de Dados Utilização Requisitos

Arquitetura

  • Nesta seção é abordada:
    • arquitetura do projeto
    • funcionamento do Deploy/ produção

Framework Utilizado

  • O Framework Next.js é utilizado para o desenvolvimento unificado de frontend e backend. Foi optado utilizar ele devido a capacidade de criar um site que combina as duas áreas, eliminando a necessidade de repositórios separados para o frontend e o backend. Essa simplificação é possível graças ao uso de API Routes no Next.js para executar endpoints da API somente quando são chamados, evitando a necessidade de uma infraestrutura completa para o backend com endpoints semelhantes.

Plataforma de Hospedagem

  • Realizamos o deploy do projeto na plataforma Vercel, sendo um processo automatizado. As rotas da API são implementadas como funções lambda. Cada deploy gera uma nova versão de build, e ao acessar o site, os servidores da Vercel respondem apenas com o código da versão mais recente. A branch de produção se chama "main", e toda mesclagem (merge) para essa branch aciona automaticamente um novo processo de build e deploy. Nosso banco de dados é armazenado na Vercel, e todo o processo de configuração e deploy é gerenciado pela plataforma.

Frontend

  • Ele é construído com base no Next.js, que é construído sobre o React.js. A arquitetura do React é do tipo Model View Controller (MVC), na qual as funções da aplicação são divididas em três módulos:
    • Model
    • View
    • Controller
  • Essa divisão permite separar as responsabilidades de cada componente na aplicação. Além disso, para facilitar o desenvolvimento, as funções que são usadas em toda a aplicação são isoladas, e componentes de interface do usuário (UI) genéricos são criados em suas pastas específicas para possibilitar o reuso em todo o sistema.

Backend

  • Ele também é desenvolvido usando Next.js, que cria endpoints da API como funções lambda (funções anônimas, usadas para criar pequenos blocos de código reutilizável de forma concisa). Isso significa que o código é executado apenas quando um endpoint específico é chamado, o que contribui para uma maior eficiência e economia de recursos.

Cloud e Deploy

Hospedagem na Vercel

  • O deploy completo é automaticamente realizado na plataforma Vercel.
  • As rotas da API são implementadas como funções lambda.
  • A cada deploy, uma nova versão de build é gerada. Ao acessar o site, os servidores da Vercel retornam apenas esta versão de código.
  • A branch de produção se chama "main", e qualquer merge para esta branch gera um novo processo de build e deploy de forma automática.
  • O banco de dados é armazenado na Vercel, juntamente com o projeto frontend e backend. A Vercel cuida de todo o processo de configuração e deploy, eliminando preocupações adicionais.

Ambiente Local

  • Localmente, utilizamos Docker e Docker Compose para criar um banco de dados local que o projeto se conecta.
  • O projeto é executado localmente com o comando "npm run dev".

Gerenciamento de Código

  • Seguimos o padrão Gitflow para o desenvolvimento de features e correções (fixes).

Diagrama de Deploy

  • No diagrama de deploy acima, é destacado a arquitetura do projeto e como ele é implantado e executado na nuvem e localmente. A plataforma Vercel é o ponto central do deploy na nuvem, enquanto o Docker e o Docker Compose são usados localmente para simular o ambiente de produção. A branch "main" aciona automaticamente o processo de deploy na Vercel quando mesclada. O banco de dados é hospedado na Vercel em conjunto com o projeto, proporcionando um ambiente de desenvolvimento simplificado e controlado.

Estrutura de pastas

(colocar aqui a estrutura das pastas do projeto)

Componentes da estrutura

prisma

migrations

svgs

api

services

components

enums

interfaces

mocks

types

utils


Cloud e Deploy

  • Deploy completo feito na vercel (automatico)
  • Rotas de API sao lambda functions
  • Em todo deploy uma versao de build eh gerada e ao acessar o site os servidores da vercel retornam apenas este codigo
  • Nossa branch de prod se chama main e todo merge para ele cria um novo processo de build e deploy automaticamente
  • Nosso banco de dados se encontra armazenado na vercel juntamente com o projeto do font e back, nao precisamos nos preucupar pois a vercel cuida de todo o processo de config e deploy.

Localmente

  • Localmente utilizamos o docker e docker compose para criar um banco de dados local para o app se conectar e rodamos o app regularmente com o comando npm run dev
  • Utilizamos o gitflow padrao para o desenvolvimentos de features e fixes.
Clone repository
  • Arquitetura
  • BD
  • Configuracao
  • Escopo
  • Mockups
  • Processo
  • Utilizacao
  • codigo
  • Home
  • requisitos