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.
- Host: GitHub
- URL: https://github.com/tavareshenrique/rocketpay-nlw
- Owner: tavareshenrique
- License: mit
- Created: 2021-02-23T00:55:01.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2021-02-28T21:22:33.000Z (over 5 years ago)
- Last Synced: 2025-01-10T20:18:06.949Z (over 1 year ago)
- Topics: elixir, elixir-lang, nlw, nlw-4, phoenix-framework, rocketpay, rocketseat, rocketseat-nlw
- Language: Elixir
- Homepage:
- Size: 114 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
> 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.
# :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
@tavareshenrique
💻
Rocketseat
@Rocketseat
🚀
# :closed_book: Licença
Este projeto está sob a licença [MIT](./LICENSE).