O ExpTrack é uma ferramenta desenvolvida para simplificar a gestão financeira pessoal através da automação de folhas de cálculo. O objetivo é transformar registos de gastos diários em insights visuais automáticos.
- Visualização Dinâmica: Geração de gráficos interativos para análise de consumo
- Categorização: Separação inteligente de despesas (Lazer, Alimentação, Contas Fixas, etc.)
- Autenticação: Sistema de login/registro com Firebase Auth
- API RESTful: Backend Node.js/Express com Firestore
Backend:
- Node.js + Express 5
- Firebase Admin SDK
- Firebase Auth
- Cloud Firestore
- Jest + Supertest (testes)
Frontend:
- React + Vite
- TailwindCSS
- React Router
- Axios
- Node.js >= 16
- npm ou yarn
- Conta Firebase (credenciais de serviço)
# Backend
cd backend
npm install
# Frontend
cd ../Frontend
npm installBackend: Copie .env.example para .env e preencha:
cd backend
cp .env.example .envEdite backend/.env com uma destas opções:
Opção A (Recomendada): Use base64 da chave de serviço:
# Linux/Mac
cat serviceAccountKey.json | base64 -w 0
# Windows PowerShell
[Convert]::ToBase64String([System.IO.File]::ReadAllBytes("serviceAccountKey.json"))Cole o resultado em:
FIREBASE_ADMIN_KEY_BASE64=sua_chave_base64_aqui
Opção B: Aponte para o arquivo JSON:
GOOGLE_APPLICATION_CREDENTIALS=C:/caminho/absoluto/serviceAccountKey.json
Opção C: Coloque serviceAccountKey.json em backend/
Frontend: Configure variáveis do Firebase Client em Frontend/.env:
VITE_FIREBASE_API_KEY=
VITE_FIREBASE_AUTH_DOMAIN=
VITE_FIREBASE_PROJECT_ID=
VITE_FIREBASE_STORAGE_BUCKET=
VITE_FIREBASE_MESSAGING_SENDER_ID=
VITE_FIREBASE_APP_ID=
Backend:
cd backend
npm run dev # modo desenvolvimento (nodemon)
# ou
npm start # modo produçãoFrontend:
cd Frontend
npm run devAcesse: http://localhost:5173
cd backend
npm testExpTrack/
├── backend/
│ ├── app.js # Configuração Express
│ ├── index.js # Entry point
│ ├── config/ # Firebase setup
│ ├── controllers/ # Lógica de negócio
│ ├── middlewares/ # Auth, error handler
│ ├── routes/ # Rotas da API
│ ├── utils/ # Helpers Firestore
│ └── tests/ # Testes Jest
├── Frontend/
│ ├── src/
│ │ ├── components/ # Componentes React
│ │ ├── pages/ # Páginas (Login, Dashboard...)
│ │ ├── context/ # Context API (Auth)
│ │ └── services/ # API client (Axios)
│ └── public/
└── README.md
Autenticação:
POST /api/auth/register- CadastroPOST /api/auth/login- LoginGET /api/auth/me- Dados do usuário (protegida)POST /api/auth/reset-password- Reset de senha
Categorias: (todas protegidas)
POST /api/categories- CriarGET /api/categories- ListarPUT /api/categories/:id- AtualizarDELETE /api/categories/:id- Deletar
Despesas: (todas protegidas)
POST /api/expenses- CriarGET /api/expenses- ListarPUT /api/expenses/:id- AtualizarDELETE /api/expenses/:id- Deletar
Usuários:
PUT /api/users/me- Atualizar nome (protegida)
Projeto desenvolvido a fins de estudos e organização pessoal
Feito por Pedro Braga de Lima e André Queiroz de Araújo Viana