- Sobre
- Funcionalidades
- Stack Tecnológico
- Começar Rápido
- Instalação
- Configuração
- Estrutura de Pastas
- API Endpoints
- Autenticação
- Contribuindo
- Licença
FinTrack API é uma API RESTful robusta desenvolvida em Node.js com Express, projetada para gerenciar clientes e cobranças. O projeto foi desenvolvido como desafio final do módulo 5 e implementa boas práticas de desenvolvimento backend como:
- ✅ Autenticação segura com JWT
- ✅ Validação de dados com Yup
- ✅ Senhas criptografadas com Bcrypt
- ✅ Tratamento de erros global
- ✅ CORS configurado
- ✅ Estrutura escalável e modular
- Frontend Repository - Interface web da aplicação
- Live Demo - Aplicação em produção
- 👤 Cadastro de novos usuários
- 🔐 Login com geração de token JWT
- 📝 Visualizar dados do usuário autenticado
- ✏️ Editar informações do perfil
- ➕ Criar novo cliente
- 📊 Listar todos os clientes
- 🔍 Buscar cliente por ID ou termo
- ✏️ Editar dados do cliente
- 🗑️ Remover cliente
- 📌 Criar cobrança vinculada a cliente
- 📋 Listar todas as cobranças
- 🔍 Buscar cobrança por ID ou filtros
- ✏️ Atualizar status/dados da cobrança
- 🗑️ Deletar cobrança
| Tecnologia | Versão | Propósito |
|---|---|---|
| Node.js | LTS | Runtime JavaScript |
| Express | ^5.2.1 | Framework web |
| PostgreSQL | 14+ | Banco de dados relacional |
| Knex.js | ^3.1.0 | Query builder SQL |
| JWT | ^9.0.3 | Autenticação segura |
| Bcrypt | ^6.0.0 | Hash de senhas |
| Yup | ^1.7.1 | Validação de schemas |
| CORS | ^2.8.5 | Compartilhamento de recursos |
| Dotenv | ^17.2.3 | Variáveis de ambiente |
| Nodemon | ^3.1.11 | Auto-reload em desenvolvimento |
- Node.js 16+
- PostgreSQL 12+
- npm ou yarn
- Clone o repositório
git clone https://github.com/sadyvit/fintrack_api.git
cd fintrack_api- Instale as dependências
npm install- Configure as variáveis de ambiente
cp .env.example .env
# Edite o arquivo .env com suas credenciais- Execute as migrations do banco de dados
npm run migrate- Inicie o servidor
# Desenvolvimento (com hot reload)
npm run dev
# Produção
npm startO servidor estará disponível em http://localhost:3333
Crie um arquivo .env na raiz do projeto:
# Servidor
PORT=3333
NODE_ENV=development
# Banco de Dados
DB_HOST=localhost
DB_PORT=5432
DB_USER=seu_usuario_postgres
DB_PASS=sua_senha_postgres
DB_NAME=fintrack_db
# JWT
JWT_SECRET=sua_chave_secreta_super_segura_aqui
# CORS
CORS_ORIGIN=http://localhost:3000Execute o arquivo SQL para criar as tabelas:
psql -U seu_usuario -d fintrack_db -f script.sqlOu configure via variáveis de ambiente e execute as migrations do Knex.
fintrack_api/
├── src/
│ ├── index.js # Inicialização do servidor Express
│ ├── rotas.js # Definição de todas as rotas
│ ├── bancodedados/
│ │ └── conexao.js # Configuração de conexão com BD
│ ├── controladores/ # Lógica dos endpoints
│ │ ├── usuario.js
│ │ ├── login.js
│ │ ├── clientes.js
│ │ └── cobrancas.js
│ ├── filtros/ # Middlewares de autenticação
│ │ └── filtroLogin.js
│ └── validacoes/ # Schemas de validação (Yup)
│ ├── cadastroUsuarioSchema.js
│ ├── cadastroClienteSchema.js
│ ├── cadastrarCobrancaSchema.js
│ ├── editarUsuarioSchema.js
│ ├── loginSchema.js
│ └── yup.js
├── script.sql # Migrations do banco de dados
├── test-db-conn.js # Teste de conexão com BD
├── package.json
├── vercel.json # Configuração para deploy
├── .env.example # Exemplo de variáveis de ambiente
└── README.md
| Método | Endpoint | Descrição | Autenticação |
|---|---|---|---|
| POST | /usuario |
Cadastrar novo usuário | ❌ |
| POST | /login |
Login e gerar token JWT | ❌ |
| Método | Endpoint | Descrição | Autenticação |
|---|---|---|---|
| GET | /usuario |
Obter dados do usuário logado | ✅ |
| PUT | /usuario |
Editar dados do usuário | ✅ |
| Método | Endpoint | Descrição | Autenticação |
|---|---|---|---|
| POST | /clientes |
Criar novo cliente | ✅ |
| GET | /clientes |
Listar todos os clientes | ✅ |
| GET | /clientes/:id |
Obter cliente por ID | ✅ |
| GET | /clientes/busca |
Buscar clientes por termo | ✅ |
| PUT | /clientes/:id |
Atualizar cliente | ✅ |
| Método | Endpoint | Descrição | Autenticação |
|---|---|---|---|
| POST | /cobrancas |
Criar nova cobrança | ✅ |
| GET | /cobrancas |
Listar todas as cobranças | ✅ |
| GET | /cobrancas/:id |
Obter cobrança por ID | ✅ |
| GET | /cobrancas/busca |
Buscar cobranças por filtros | ✅ |
| PUT | /cobrancas/:id |
Editar cobrança | ✅ |
| DELETE | /cobrancas/:id |
Deletar cobrança | ✅ |
| Método | Endpoint | Descrição |
|---|---|---|
| GET | / |
Health check do servidor |
A API utiliza JWT (JSON Web Tokens) para autenticação.
- Usuário faz login em
/logincom email e senha - Servidor valida credenciais e retorna um token JWT
- Cliente armazena o token no localStorage/sessionStorage
- Em requisições subsequentes, o token é enviado no header:
Authorization: Bearer seu_token_jwt_aqui
curl -X GET http://localhost:3333/usuario \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."O middleware validarUsuarioLogado valida o token em todas as rotas protegidas:
rotas.use(validarUsuarioLogado); // Ativa proteção para rotas abaixoPara testar a conexão com o banco de dados:
node test-db-conn.jsA aplicação está configurada para deploy na Vercel. Basta:
- Conectar seu repositório GitHub à Vercel
- Adicionar variáveis de ambiente no painel
- Fazer push para a branch principal
Ver arquivo vercel.json para configuração.
DB_HOST=seu-host-render-ou-aws
DB_PORT=5432
DB_USER=usuario_producao
DB_PASS=senha_segura_producao
DB_NAME=fintrack_production
JWT_SECRET=chave_super_segura_producao
NODE_ENV=production