https://github.com/luc-ribeiro/transactions-api-node
Projeto com o objetivo de criar uma API REST de transações, utilizando tecnologias como Fastify, Knex.js e Vitest.
https://github.com/luc-ribeiro/transactions-api-node
fastify knexjs nodejs sqlite3 typescript vitest zod
Last synced: 2 months ago
JSON representation
Projeto com o objetivo de criar uma API REST de transações, utilizando tecnologias como Fastify, Knex.js e Vitest.
- Host: GitHub
- URL: https://github.com/luc-ribeiro/transactions-api-node
- Owner: luc-ribeiro
- Created: 2024-05-01T15:30:46.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-05-01T15:31:42.000Z (about 2 years ago)
- Last Synced: 2024-05-02T10:35:46.901Z (about 2 years ago)
- Topics: fastify, knexjs, nodejs, sqlite3, typescript, vitest, zod
- Language: TypeScript
- Homepage:
- Size: 79.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README-PTBR.md
Awesome Lists containing this project
README
Transactions REST API Node.js
## 💻 Projeto
Este projeto foi criado durante o curso de Node.js da Rocketseat.
O projeto consiste na criação de uma API REST, utilizando tecnologias como Fastify, Knex.js e Vitest.
O objetivo é praticar a criação de APIs com a utilização dessas tecnologias e enfatizar a importância de testes automatizados.
## 🚀 Tecnologias
- **Node.js**
- **TypeScript**
- **Fastify**
- **Knex.js**
- **Vitest**
- **Zod**
- **SQLite3**
## Endpoints
#### Criando uma nova transação
POST /transactions (cria uma nova transação)
##### Corpo
> | name | type | data type | description |
> |-----------|-----------|-------------------------|-----------------------------------------------------------------------|
> | title | required | string | Nome da transação |
> | amount | required | int | Valor da transação |
> | type | required | string | Tipo da transação ("credit" ou "debit") |
##### Respostas
> | http code | content-type | response |
> |---------------|-----------------------------------|---------------------------------------------------------------------|
> | `201` | `text/plain;charset=UTF-8` | `Transaction created successfully` |
> | `400` | `application/json` | `{"code":"400","message":"Bad Request"}` |
> | `405` | `text/html;charset=utf-8` | None |
##### Exemplo cURL
> ```javascript
> curl -X POST -H "Content-Type: application/json" --data @post.json http://localhost:3333/transactions
> ```
### Para os endpoints abaixo, é necessário gerar uma nova transação, para que seja criado um cookie de autenticação e armazenado no dispositivo.
#### Listando transações
GET /transactions (retorna todas as transações)
##### Parâmetros
Nenhum.
##### Respostas
> | http code | content-type | response |
> |---------------|-----------------------------------|---------------------------------------------------------------------|
> | `200` | `application/json` | JSON contendo todas as transações |
##### Exemplo cURL
> ```javascript
> curl -X GET -H "Content-Type: application/json" http://localhost:3333/transactions
> ```
#### Exibindo uma transação
GET /transactions/{id} (exibe uma transação)
##### Parâmetros
> | name | type | data type | description |
> |-----------|-----------|-------------------------|-----------------------------------------------------------------------|
> | id | required | int | Identificador único da transação |
##### Respostas
> | http code | content-type | response |
> |---------------|-----------------------------------|---------------------------------------------------------------------|
> | `200` | `application/json` | JSON contendo a transação do ID específico |
##### Exemplo cURL
> ```javascript
> curl -X GET -H "Content-Type: application/json" http://localhost:3333/transactions/id
> ```
#### Exibindo o montante das transações (saldo)
GET /transactions/summary (exibe um resumo com o montante das transações)
##### Parâmetros
Nenhum.
##### Respostas
> | http code | content-type | response |
> |---------------|-----------------------------------|---------------------------------------------------------------------|
> | `200` | `application/json` | JSON contendo um objeto com o montante das transações |
##### Exemplo cURL
> ```javascript
> curl -X GET -H "Content-Type: application/json" http://localhost:3333/transactions/summary
> ```
## :page_facing_up: Como utilizar
- Faça um clone deste repositório:
```sh
$ git clone https://github.com/luc-ribeiro/rest-api-node.git
```
- Instale as dependências:
```sh
# com npm
$ npm install
# com yarn
$ yarn install
```
- Crie um arquivo ```.env``` seguindo a estrutura do ```.env.example```
- Rode as migrations:
```sh
# com npm
$ npm run knex migrate:latest
# com yarn
$ yarn knex migrate:latest
```
- Execute o comando:
```sh
# com npm
$ npm run dev
# com yarn
$ yarn dev
```
- O projeto rodará em `localhost:3333`