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 12
    • Issues 12
    • 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
  • Let Me Trial
  • Wiki
  • Wiki
  • frontend

frontend · Changes

Page history
Update frontend authored Mar 27, 2024 by Gustavo Santos Silva's avatar Gustavo Santos Silva
Hide whitespace changes
Inline Side-by-side
frontend.md
View page @ 86b1a9ec
| [Home](home) | [**Escopo**](escopo) | [Processo](processo) | [Design/Mockups](design_mockups) | [Configuração](configuracao) | [Arquitetura](arquitetura) | [Gerência](gerencia) | [Código](codigo) | [BD](Banco de Dados) | [Qualidade](qualidade) | [Frontend](frontend) | [Backend](backend) | [Analytics](analytics) | [Home](home) | [**Escopo**](escopo) | [Processo](processo) | [Design/Mockups](design_mockups) | [Configuração](configuracao) | [Arquitetura](arquitetura) | [Gerência](gerencia) | [Código](codigo) | [BD](Banco de Dados) | [Qualidade](qualidade) | [Frontend](frontend) | [Backend](backend) | [Analytics](analytics)
| :----------: | :-------------------------------: | :------------------: | :--------------: | :--------------------------: | :--------------------: | :------------------------: | :--------------: | :---------------: | :--------------------: | :---------------: | :--------------------: | ------------: | | :----------: | :-------------------------------: | :------------------: | :--------------: | :--------------------------: | :--------------------: | :------------------------: | :--------------: | :---------------: | :--------------------: | :---------------: | :--------------------: | ------------: |
\ No newline at end of file
# Estrutura da Aplicação Frontend em React NextJs
## Tecnologias Principais
- **React:** Biblioteca JavaScript para construir interfaces de usuário.
- **Next.js:** Framework para React que permite renderização no lado do servidor (SSR) e otimização de desempenho.
- **JavaScript/TypeScript:** Linguagens de programação para escrever a lógica da aplicação.
## Bibliotecas e Ferramentas Específicas
- **Axios:** Biblioteca para fazer requisições HTTP.
- **Keycloak:** Sistema de gerenciamento de identidade e acesso para autenticação e autorização.
- **React Router (se necessário em Next.js):** Biblioteca para roteamento em aplicações React.
## Padrões e Arquiteturas
- **Arquitetura Limpa:** Princípios para estruturar aplicações de forma a separar claramente as preocupações.
## Estrutura de Pastas
```plaintext
/src
/core
/domain
- User.js
- Doctor.js
- Administrator.js
- ...
/useCases
/common
- LoginUseCase.js
- ...
/doctor
- ViewPatientRecordsUseCase.js
- ...
/administrator
- ManageDoctorsUseCase.js
- ...
/adapters
/presenter
- DoctorPresenter.js
- AdminPresenter.js
- ...
/repository
- UserRepository.js
- DoctorRepository.js
- AdminRepository.js
- ...
/frameworks
/ui
/components
- LoginForm.jsx
- ...
/pages
- LandingPage.jsx
/doctor
- DoctorDashboardPage.jsx
- ...
/administrator
- AdminDashboardPage.jsx
- ...
/services
- AuthService.js
- DoctorService.js
- AdminService.js
- ...
/utils
- AuthUtils.js
- ...
```
# Explicação da Estrutura:
- **core/domain:** Contém as entidades principais da sua aplicação, como usuários, médicos e administradores.
- **core/useCases:** Divide a lógica de negócios em casos de uso comuns (como login) e específicos para cada tipo de usuário (médico e administrador).
- **adapters/presenter:** Inclui os "presenters" que adaptam os dados da camada de caso de uso para a camada de interface do usuário, mantendo a separação entre a lógica de negócios e a apresentação.
- **adapters/repository:** Contém os repositórios que abstraem a comunicação com fontes de dados externas, como APIs ou bancos de dados. Eles são usados pelos casos de uso para acessar e manipular dados.
- **frameworks/ui:** Organiza os componentes e páginas da interface do usuário, incluindo a página de destino (landing page) e as páginas específicas para médicos e administradores.
- **frameworks/services:** Contém serviços que encapsulam a lógica de comunicação com APIs externas, como o serviço de autenticação e os serviços específicos para médicos e administradores.
- **utils:** Contém funções utilitárias, como aquelas relacionadas à autenticação e à verificação do tipo de usuário.
## Fluxo de Autenticação e Redirecionamento:
- **LandingPage.jsx:** Apresenta o formulário de login e utiliza o AuthService.js para autenticar o usuário via Keycloak.
- **AuthService.js:** Comunica-se com o Keycloak para autenticar o usuário e determinar seu tipo (médico ou administrador).
- **AuthUtils.js:** Contém funções para verificar o tipo de usuário e realizar o redirecionamento apropriado para a página de dashboard do médico (DoctorDashboardPage.jsx) ou do administrador (AdminDashboardPage.jsx).
- **DoctorDashboardPage.jsx e AdminDashboardPage.jsx:** São as páginas principais para médicos e administradores, respectivamente, e utilizam os casos de uso e serviços relevantes para buscar e exibir informações específicas para cada tipo de usuário.
Clone repository
  • Banco de Dados
  • Gerencia
  • analytics
  • arquitetura
  • backend
  • codigo
  • configuracao
  • design_mockups
  • escopo
  • frontend
  • Home
  • processo
  • qualidade