Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/heitorgandolfi/api-levva-coins

API para aplicação de gerenciamento financeiro.
https://github.com/heitorgandolfi/api-levva-coins

api

Last synced: about 15 hours ago
JSON representation

API para aplicação de gerenciamento financeiro.

Awesome Lists containing this project

README

        



# API Levva Coins


Este projeto consiste em uma API construída para lidar com uma aplicação financeira, oferecendo recursos para o controle do usuário em relação às suas transações, entradas e saídas.

## Contratos

Login

**Host**: `http://localhost:3333/api`

**Endpoint**: `/auth`

**Método**: `POST`

**Requisição**:

```json
{
"email": "[email protected]",
"password": "123456"
}
```

**Resposta 200**:

```json
{
"id": "uuid-v4",
"email": "[email protected]",
"token": "bearer.token",
"avatar": "https://images.com/image1"
}
```

**Resposta 401**:

```json
{
"hasError": true,
"message": "Usuário ou senha inválidos."
}
```

Criar Usuário

**Host**: `http://localhost:3333/api`

**Endpoint**: `/user`

**Método**: `POST`

**Requisição**:

```json
{
"name": "John Doe",
"email": "[email protected]",
"password": "123456",
"avatar": "https://images.com/image1"
}
```

**Resposta 201**:

N/A

**Resposta 400**:

```json
{
"hasError": true,
"message": "Esse e-mail já existe."
}
```

Obter um Usuário

**Host**: `http://localhost:3333/api`

**Endpoint**: `/user/:userId`

**Método**: `GET`

**Requisição**:

```plaintext
URL Params:
userId (uuid-v4)

Headers:
{
"authorization": "Bearer bearer.token"
}
```

**Resposta 200**:

```json
{
"id": "uuid-v4",
"name": "John Doe",
"email": "[email protected]",
"avatar": "https://images.com/image1"
}
```

**Resposta 400**:

```json
{
"hasError": true,
"message": "Esse usuário não existe."
}
```

Atualizar um Usuário

**Host**: `http://localhost:3333/api`

**Endpoint**: `/user/:userId`

**Método**: `PUT`

**Requisição**:

```plaintext
URL Params:
userId (uuid-v4)

Body:

{
"avatar": "https://images.com/image1",
"name": "John Doe"
}

Headers:
{
"authorization": "Bearer bearer.token"
}
```

**Resposta 204**:

N/A

**Resposta 400**:

```json
{
"hasError": true,
"message": "Esse usuário não existe."
}
```

Criar Categoria

**Host**: `http://localhost:3333/api`

**Endpoint**: `/category`

**Método**: `POST`

**Requisição**:

```json
{
"description": "Alimentação"
}

Headers:
{
"authorization": "Bearer bearer.token"
}
```

**Resposta 201**:

N/A

**Resposta 400**:

```json
{
"hasError": true,
"message": "Uma categoria com esse nome já existe."
}
```

Obter todas as Categorias

**Host**: `http://localhost:3333/api`

**Endpoint**: `/category`

**Método**: `GET`

**Requisição**:

```plaintext
Headers:
{
"authorization": "Bearer bearer.token"
}
```

**Resposta 200**:

```json
[
{
"id": "uuid-v4",
"description": "Café"
},
{
"id": "uuid-v4",
"description": "Alimentação"
},
{
"id": "uuid-v4",
"description": "Casa"
}
]
```

Criar Transação

**Host**: `http://localhost:3333/api`

**Endpoint**: `/transaction`

**Método**: `POST`

**Requisição**:

```json
{
"description": "Pizza com amigos",
"amount": 100,
"type": "Depósito", // ou "Crédito"
"categoryId": "uuid-v4"
}

Headers:
{
"authorization": "Bearer bearer.token"
}
```

**Resposta 201**:

N/A

Obter todas as Transações

**Host**: `http://localhost:3333/api`

**Endpoint**: `/transaction`

**Método**: `GET`

**Requisição**:

```plaintext
Headers:
{
"authorization": "Bearer bearer.token"
}
```

**Resposta 200**:

```json
[
{
"id": "uuid-v4",
"description": "Café com amigos",
"amount": 50,
"type": "Depósito",
"categoryId": "uuid-v4"
},
{
"id": "uuid-v4",
"description": "Pizza com amigos",
"amount": 100,
"type": "Depósito",
"categoryId": "uuid-v4"
},
{
"id": "uuid-v4",
"description": "Salário março 2023",
"amount": 1200,
"type": "Crédito",
"categoryId": "uuid-v4"
}
]
```

Remover Transação

**Host**: `http://localhost:3333/api`

**Endpoint**: `/transaction/:transactionId`

**Método**: `DELETE`

**Requisição**:

URL Params:
- `transactionId` (uuid-v4)

Headers:

```plaintext
{
"authorization": "Bearer bearer.token"
}
```

**Resposta 204**:

N/A

**Resposta 400**:

```json
{
"hasError": true,
"message": "Essa transação não existe."
}
```

## Tecnologias Utilizadas

- C# .NET
- ASP.NET Core
- Entity Framework Core
- Swagger
- SQlite
- JSON Web Token (JWT)

## Como Rodar o Projeto Localmente

1. Clone o repositório:

```plaintext
git clone https://github.com/heitorgandolfi/Levva-Coins-Api.git
```

2. Abra o projeto em sua IDE preferida (por exemplo, Visual Studio ou Visual Studio Code).

3. Configure o banco de dados:

Verifique se você tem o SQLite Server instalado.
No arquivo appsettings.json, verifique e atualize a string de conexão com o banco de dados.

4. Execute as migrações do banco de dados:

Abra o Terminal (no Visual Studio Code) ou o Console do Gerenciador de Pacotes (no Visual Studio).

Execute o seguinte comando:

```plaintext
dotnet ef database update
```

5. Inicie o servidor:

No Visual Studio Code, execute o seguinte comando no Terminal:

```plaintext
dotnet run
```

No Visual Studio, basta pressionar o botão "Executar" ou "Iniciar" (F5).

## Licença

[MIT License](LICENSE)