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

Arquitetura · Changes

Page history
Update Arquitetura authored Oct 30, 2023 by Maria Eduarda Wendel Maia's avatar Maria Eduarda Wendel Maia
Hide whitespace changes
Inline Side-by-side
Arquitetura.md
View page @ 5222df87
| [**Home**](home) | [Escopo e Cronograma](escopo) | [Processo](processo) | [Design/Mockups](design_mockups) | [Configuração](configuracao) | [Arquitetura](arquitetura) | [Código](codigo) | [BD](banco_dados) | [Qualidade](qualidade) | [Utilização](utilizacao) |
| :--------------: | :---------------------------: | :------------------: | :--------------: | :--------------------------: | :------------------------: | :--------------: | :---------------: | :--------------------: | :----------------------: |
# Arquitetura
- Nesta seção é abordada:
- arquitetura do projeto
- funcionamento do Deploy/ produção
## Framework Utilizado
<div align="center">
<img height="30em" width="110em" src="https://upload.wikimedia.org/wikipedia/commons/thumb/8/8e/Nextjs-logo.svg/2560px-Nextjs-logo.svg.png">
</div>
- 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
<div align="center">
<img height="120em" width="150em" src="https://logowik.com/content/uploads/images/vercel1868.jpg">
</div>
- 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. 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
......
Clone repository
  • Arquitetura
  • BD
  • Configuracao
  • Escopo
  • Mockups
  • Processo
  • Utilizacao
  • codigo
  • Home
  • requisitos