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

https://github.com/tavareshenrique/rocketpay-nlw

Rocketpay é uma API criada utilizando Elixir e Phoenix durante a NLW#4 da Rocketseat.
https://github.com/tavareshenrique/rocketpay-nlw

elixir elixir-lang nlw nlw-4 phoenix-framework rocketpay rocketseat rocketseat-nlw

Last synced: 2 months ago
JSON representation

Rocketpay é uma API criada utilizando Elixir e Phoenix durante a NLW#4 da Rocketseat.

Awesome Lists containing this project

README

          


Rocketpay



Henrique Tavares

Repository size


Last commit on GitHub


GitHub last commit

License

> Rocketpay é uma API criada utilizando Elixir e Phoenix durante a NLW#4 da [Rocketseat](https://github.com/Rocketseat). Esse projeto permite a transação de valores entre 2 usuários.


O Rocketpay foi desenvolvido com ❤︎ pelo
Henrique Tavares

Run in Insomnia

# :pushpin: Conteúdo

- [API](#floppy_disk-api)
- [Accounts](#accounts)
- [Deposit](#deposit)
- [Withdraw](#withdraw)
- [Transaction](#transaction)
- [User](#user)
- [Create User](#create-user)
- [Tecnologias](#computer-tecnologias)
- [Executando](#construction_worker-executando)
- [Autores](#computer-autores)
- [Licença](#closed_book-licença)

# :floppy_disk: API

# Accounts

## Deposit

Esse End-Point permite o deposito de um determinado valor na conta do usuário.

- **URL**

`/accounts/:userId/deposit`

- **Method:**

`POST`

- **URL Params**

- **Required:**

`:userId` **-> ID do usuário que será feito o deposito.**
`Basic Auth` **-> Informe o nome de usuário "henrique" e senha "123456" como autenticação básica**

- **JSON Example:**

```json
{
"value": "100.50"
}
```

- **Success Response:**

- **Code:** 200

**Content:**

```json
{
"account": {
"balance": "100.50",
"id": "a44e81ee-7852-49d0-85b1-e3fa5775e3a7"
},
"message": "Ballance changed successfully"
}
```

---

## Withdraw

Esse End-Point permite o saque de um determinado valor na conta do usuário.

- **URL**

`/accounts/:userId/withdraw`

- **Method:**

`POST`

- **URL Params**

- **Required:**

`:userId` **-> ID do usuário que será feito o deposito.**
`Basic Auth` **-> Informe o nome de usuário "henrique" e senha "123456" como autenticação básica**

- **JSON Example:**

```json
{
"value": "50.50"
}
```

- **Success Response:**

- **Code:** 200

**Content:**

```json
{
"account": {
"balance": "50",
"id": "a44e81ee-7852-49d0-85b1-e3fa5775e3a7"
},
"message": "Ballance changed successfully"
}
```

---

## Transaction

Esse End-Point permite a transferência entre dois usuários.

- **URL**

`/accounts/transaction`

- **Method:**

`POST`

- **URL Params**

- **Required:**

`Basic Auth` **-> Informe o nome de usuário "henrique" e senha "123456" como autenticação básica**

- **JSON Example:**

```json
{
"value": "39.60",
"from": "a44e81ee-7852-49d0-85b1-e3fa5775e3a7",
"to": "98981aca-7c3c-4f1d-8520-1cbf0445dd11"
}
```

- **Success Response:**

- **Code:** 200

**Content:**

```json
{
"message": "Transaction done successfully",
"transaction": {
"from_account": {
"balance": "120.80",
"id": "a44e81ee-7852-49d0-85b1-e3fa5775e3a7"
},
"to_account": {
"balance": "368.80",
"id": "98981aca-7c3c-4f1d-8520-1cbf0445dd11"
}
}
}
```

---

# User

## Create User

Esse End-Point permit a criação de um usuário

- **URL**

`/users`

- **Method:**

`POST`

- **JSON Example:**

```json
{
"name": "Henrique",
"nickname": "henrique",
"email": "henrique@gmail.com",
"age": 24,
"password": "123456"
}
```

- **Success Response:**

- **Code:** 200

**Content:**

```json
{
"message": "User created",
"user": {
"account": {
"balance": "0.00",
"id": "a44e81ee-7852-49d0-85b1-e3fa5775e3a7"
},
"id": "d88ffdf0-0cf7-4a32-ac18-7ac00b8eaaaf",
"name": "Henrique",
"nickname": "henrique"
}
}
```

---

# :computer: Tecnologias

Este projeto foi feito utilizando as seguintes tecnologias:

- [Elixir](https://github.com/elixir-lang/elixir)
- [Phoenix](https://github.com/phoenixframework/phoenix)
- [Ecto](https://github.com/elixir-ecto/ecto)
- [Postgres](https://www.postgresql.org/)
- [Credo](https://github.com/rrrene/credo)
- [pbkdf2_elixir](https://github.com/riverrun/pbkdf2_elixir)
- [decimal](https://github.com/ericmj/decimal)
- [excoveralls](https://github.com/parroty/excoveralls)

# :construction_worker: Executando

**Passo 1:**

```bash
# Clone o Repositório
$ git@github.com:tavareshenrique/rocketpay-nlw.git
```

**Passo 2:**

```bash
# É necessário que você tenha o banco Postgres rodando em sua máquina, seja Docker ou não.
```

**Passo 3:**

```bash
# Crie dois bancos com os seguintes nomes:

rocketpay_dev
# e
rocketpay_test
```

**Passo 4:**

```bash
# Configure seu usuário, senha etc. do banco nos arquivos:

config > dev.exs
# e
config > test.exs
```

**Passo 5:**

```bash
# Rode esse comando para ele criar/registrar o banco de dados
$ mix ecto.create
```

**Passo 5:**

```bash
# Rodando as Migrations
$ mix ecto.migrate
```

**Passo 5:**

```bash
# Pronto! Agora é só executar o Server;
$ mix phx.server
```

Acesse para ver o resultado.

# :computer: Autores




Henrique Tavares



Henrique Tavares




@tavareshenrique


💻



Henrique Tavares



Rocketseat




@Rocketseat


🚀

# :closed_book: Licença

Este projeto está sob a licença [MIT](./LICENSE).