Home | Escopo e Cronograma | Processo | Design/Mockups | Configuração | Arquitetura | Infra | Código | BD | Frontend | API Backend |
---|
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.
/src
)
Estrutura de Pastas (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 doaxios
(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 oAuthContext
, 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 hookuseAuth
. -
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. OhttpService
encapsula as chamadasaxios
, adicionando abaseURL
(configurada viaVITE_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.