Donation Compass é uma aplicação web em React + Vite para cadastro, busca, visualização e gerenciamento de campanhas de doação. O estado de autenticação e das campanhas é persistido localmente no navegador, sem backend nesta versão.
O sistema permite que usuários se autentiquem, naveguem por campanhas, filtrem resultados e gerenciem campanhas quando estiverem autenticados.
- Login e cadastro de usuários
- Proteção de rotas privadas
- Listagem e busca de campanhas de doação
- Criação, edição e exclusão de campanhas
- Edição de dados cadastrais
- Persistência local com
localStorage
O projeto foi organizado de forma incremental, mantendo a base funcional existente e reduzindo acoplamento onde havia duplicação real.
src/app: bootstrap da aplicação, provedor global e roteamentosrc/features/auth: autenticação, contexto, serviços, páginas e componentes da featuresrc/features/donations: fluxo de gerenciamento de doaçõessrc/shared: componentes reutilizáveis, storage, APIs e wrappers de contextosrc/pages: páginas de composiçãosrc/Components: camada legada mantida como compatibilidade enquanto a migração continua
O alias @/ aponta para src/, padronizando imports a partir das camadas principais.
- Bootstrap duplicado entre
src/App.jsx,src/app/index.jsxesrc/main.jsx - Definições paralelas de rotas em
src/router/routes.jsxesrc/app/router/index.jsx - Duplicação de contexto entre
src/contextesrc/shared/contexts - Imports profundos e inconsistentes em páginas ativas
- Estrutura legada em
src/Componentsainda necessária para parte do fluxo
- Centralização do bootstrap em
src/app - Compatibilidade por reexportação para evitar quebra de consumidores legados
- Consolidação do provider root em
AppProviders - Padronização de imports com alias
@/ - Manutenção do comportamento e do layout existentes
- Refatoração mínima, sem extração desnecessária de componentes
authService.test.jsAuthProvider.test.jsxRequireAuth.test.jsxSignInForm.test.jsxSignUpForm.test.jsxlocalStorage.test.jsDonations.test.jsxSearch.test.jsxModal.test.jsx
Métrica medida com npx vitest run --coverage:
- Statements: 93.95%
- Branches: 95%
- Functions: 87.23%
- Lines: 94.24%
- React 18
- Vite
- React Router DOM
- Vitest
- Testing Library
- Tailwind CSS
- ESLint
- PropTypes
- localStorage do navegador
src/
app/
index.jsx
providers/
router/
features/
auth/
donations/
shared/
api/
contexts/
storage/
ui/
pages/
Components/npm installnpm run devnpm run devnpm run buildnpm run testnpm run lintnpm run preview
- Introduzir
entities/usereentities/donationquando houver recorte de domínio suficiente para evitar abstração prematura - Migrar gradualmente os componentes legados restantes em
src/Components - Reduzir a dependência de compatibilidade entre
src/contextesrc/shared/contexts - Adicionar testes para o shell de aplicação e para o roteamento principal
- Revisar os assets de fonte apontados em
src/index.css