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
  • 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
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Create a new issue
  • Jobs
  • Issue Boards
Collapse sidebar
  • Coopera RS
  • Wiki
  • Wiki
  • Frontend

Frontend · Changes

Page history
Create Frontend authored Jun 06, 2025 by Nicolas dos Santos Moraes's avatar Nicolas dos Santos Moraes
Show whitespace changes
Inline Side-by-side
Frontend.md 0 → 100644
View page @ 63da0222
# Arquitetura do Frontend (React)
A aplicação frontend do Coopera-RS é construída utilizando **React** com **TypeScript**, seguindo uma arquitetura baseada em componentes para modularidade e reutilização de código. A estrutura do projeto visa separar responsabilidades, facilitando a manutenção e escalabilidade.
## Tecnologias Principais
* **React (v19):** Biblioteca principal para construção da interface de usuário.
* **TypeScript:** Superset do JavaScript que adiciona tipagem estática, aumentando a robustez do código.
* **Vite:** Ferramenta de build e servidor de desenvolvimento rápido.
* **React Router (v7):** Gerenciamento de rotas da aplicação (navegação entre páginas).
* **Axios:** Cliente HTTP para realizar requisições à API backend.
* **Material UI (MUI v6):** Biblioteca de componentes UI para agilizar o desenvolvimento da interface.
* **Sass:** Pré-processador CSS para estilização avançada e organizada.
* **Leaflet & React-Leaflet:** Bibliotecas para integração e exibição de mapas interativos.
* **Context API (React):** Utilizada para gerenciamento de estado global, especialmente para autenticação.
## Estrutura de Pastas (`/src`)
A organização do código fonte segue um padrão comum em projetos React:
* `/components`: Contém componentes React reutilizáveis em várias partes da aplicação (ex: `CustomButton`, `Header`, `StoreCard`, `ProductGrid`, `StoreMap`). A ideia é que esses componentes sejam genéricos e focados em UI.
* `/pages`: Define as páginas principais da aplicação, que geralmente compõem diferentes componentes e lidam com a lógica específica daquela tela (ex: `Login`, `Register`, `Home`, `SearchPage`, `Store`, `AddProducts`).
* `/services`: Agrupa a lógica de comunicação com a API backend. Inclui a configuração do `axios` (`api.ts`, `httpService.ts`) e funções específicas para cada recurso (ex: `authService`, `FetchStore`, `LocationService`). Também contém as interfaces (`/interfaces`) que definem os tipos de dados trocados com o backend (ex: `Product`, `Store`).
* `/contexts`: Armazena os contextos da aplicação, como o `AuthContext`, responsável por gerenciar o estado de autenticação do usuário (token, dados do usuário) e prover funções de login/logout para os componentes.
* `/assets`: (Não explicitamente listada, mas comum) Para armazenar arquivos estáticos como imagens, fontes, etc.
* `/styles` ou `/scss`: (Não explicitamente listada, mas comum ou implícita pelo uso de .scss) Arquivos de estilização global ou variáveis Sass.
* `/utils`: Funções utilitárias genéricas que podem ser usadas em diferentes partes do código (ex: validadores, formatadores).
* `main.tsx`: Ponto de entrada da aplicação React.
* `App.tsx`: Componente raiz que geralmente configura o roteamento principal.
## Fluxo de Dados e Estado
* **Estado Local:** Componentes gerenciam seu próprio estado interno usando `useState` quando necessário.
* **Estado Global:** O estado de autenticação (usuário logado, token) é gerenciado globalmente através do `AuthContext`. Componentes que precisam acessar ou modificar esse estado utilizam o hook `useAuth`.
* **Comunicação com API:** As páginas e, em alguns casos, componentes, utilizam as funções definidas nos `/services` para buscar ou enviar dados para o backend. O `httpService` encapsula as chamadas `axios`, adicionando a `baseURL` (configurada via `VITE_API_URL`) e o prefixo `/api`.
## Roteamento
O `React Router` é usado para definir as rotas da aplicação. Existe um componente `PrivateRoute` que provavelmente protege rotas que só podem ser acessadas por usuários autenticados, verificando o estado no `AuthContext`.
## Estilização
A estilização combina o uso de **Sass** (arquivos `.scss` associados aos componentes/páginas) para estilos customizados e a biblioteca **Material UI** para componentes pré-construídos e um sistema de design consistente.
\ No newline at end of file
Clone repository
  • API Backend
  • Escopo e Cronograma
  • Frontend
  • Processo
  • arquitetura
  • banco de dados
  • codigo
  • configuracao
  • design
    • mockups
  • Home
  • infraestrutura