O Personal Finance Manager Server é um sistema para gerenciamento de relatórios financeiros, permitindo que os usuários criem, leiam, atualizem e excluam relatórios financeiros mensais e relatórios predefinidos. Além disso, oferece funcionalidades de autenticação de usuários, incluindo registro, login, logout e gerenciamento de perfis.
- Node.js
- Express.js
- Mongoose (ODM para MongoDB)
- TypeScript
- bcrypt (para hashing de senhas)
- JWT (JSON Web Tokens para autenticação)
-
Clone o repositório:
git clone https://github.com/Bruno-Brandao-Silva/personal-finance-manager-server.git
-
Navegue até o diretório do projeto:
cd personal-finance-manager-server
-
Instale as dependências:
npm install
-
Configure as variáveis de ambiente em um arquivo
.env
:MONGODB_URI = mongodb://localhost:27017/pfsm JWT_SECRET = secret TOKEN_KEY = PFSM_KEY
-
Inicie o servidor:
npm run dev
-
Rota:
/api/register
-
Método:
POST
-
Descrição: Cria um novo usuário.
-
Corpo da Requisição:
{ "name": "Nome do Usuário", "email": "[email protected]", "password": "senha" }
-
Rota:
/api/login
-
Método:
POST
-
Descrição: Autentica um usuário e retorna um token JWT.
-
Corpo da Requisição:
{ "email": "[email protected]", "password": "senha" }
- Rota:
/api/logout
- Método:
POST
- Descrição: Faz logout do usuário atual, invalidando o token JWT.
- Cabeçalho:
Authorization: Bearer <token>
- Rota:
/api/user
- Método:
GET
- Descrição: Retorna os dados do usuário autenticado.
- Cabeçalho:
Authorization: Bearer <token>
- Rota:
/api/user
- Método:
PATCH
- Descrição: Atualiza os dados do perfil do usuário autenticado.
- Cabeçalho:
Authorization: Bearer <token>
- Corpo da Requisição: JSON com os campos a serem atualizados.
- Rota:
/api/user
- Método:
DELETE
- Descrição: Deleta o usuário autenticado.
- Cabeçalho:
Authorization: Bearer <token>
-
Rota:
/api/financial-reports/:year/:month
-
Método:
POST
-
Descrição: Cria um novo relatório financeiro para o ano e mês especificados.
-
Cabeçalho:
Authorization: Bearer <token>
-
Corpo da Requisição:
{ "incomes": [{ "description": "Exemplo de Renda", "amount": 3000 }], "expenses": [{ "description": "Exemplo de Gasto", "amount": 1000 }] }
- Rota:
/api/financial-reports
- Método:
GET
- Descrição: Retorna todos os relatórios financeiros do usuário autenticado.
- Cabeçalho:
Authorization: Bearer <token>
- Rota:
/api/financial-reports/:year/:month
- Método:
GET
- Descrição: Retorna o relatório financeiro para o ano e mês especificados.
- Cabeçalho:
Authorization: Bearer <token>
-
Rota:
/api/financial-reports/:year/:month
-
Método:
PATCH
-
Descrição: Atualiza o relatório financeiro para o ano e mês especificados.
-
Cabeçalho:
Authorization: Bearer <token>
-
Corpo da Requisição:
{ "incomes": [{ "description": "Exemplo de Renda", "amount": 3000 }], "expenses": [{ "description": "Exemplo de Gasto", "amount": 1000 }] }
- Rota:
/api/financial-reports/:year/:month
- Método:
DELETE
- Descrição: Deleta o relatório financeiro para o ano e mês especificados.
- Cabeçalho:
Authorization: Bearer <token>
-
Rota:
/api/preset-reports
-
Método:
POST
-
Descrição: Cria um novo relatório predefinido.
-
Cabeçalho:
Authorization: Bearer <token>
-
Corpo da Requisição:
{ "incomes": [{ "description": "Exemplo de Renda", "amount": 3000 }], "expenses": [{ "description": "Exemplo de Gasto", "amount": 1000 }] }
- Rota:
/api/preset-reports
- Método:
GET
- Descrição: Retorna o relatório predefinido do usuário autenticado.
- Cabeçalho:
Authorization: Bearer <token>
-
Rota:
/api/preset-reports
-
Método:
PATCH
-
Descrição: Atualiza o relatório predefinido do usuário autenticado.
-
Cabeçalho:
Authorization: Bearer <token>
-
Corpo da Requisição:
{ "incomes": [{ "description": "Exemplo de Renda", "amount": 3000 }], "expenses": [{ "description": "Exemplo de Gasto", "amount": 1000 }] }
- Rota:
/api/preset-reports
- Método:
DELETE
- Descrição: Deleta o relatório predefinido do usuário autenticado.
- Cabeçalho:
Authorization: Bearer <token>
src/controllers
: Contém os controladores para as rotas.src/schemas
: Contém os modelos do Mongoose.src/middlewares
: Contém middlewares, incluindo autenticação.src/lib
: Contém funções auxiliares.src/index.ts
: Ponto de entrada da aplicação.