Repositorio do projeto no github
Meu LinkedIn
- node v16.18.1
- docker v20.10.21
- docker-compose v2.12.2
-
OBS: Verifique se você está na pasta raiz do projeto para execultar os comandos abaixo
pasta ng-challenge
. -
Adicione as variáveis de ambiente:
-
Front-end:
NEXT_PUBLIC_API_URL='http://localhost:3001'
-
Back-end:
POSTGRES_USER=postgres POSTGRES_PASSWORD=postgres JWT_SECRET=secret PORT=3001 DB_PORT=5432 DATABASE_URL="postgresql://postgres:postgres@localhost:5432/ng_database?schema=public"
-
Intalar todas as dependencias necessarias com
npm rum install:project
.
-
npm rum compose:up
vai rodar odocker-compose up
com algumas flags para rodar os containers do front-end, back-end e database. -
Para parar a execução dos containers front-end, back-end e database, utilize
npm rum compose:down
que irá rodar o comandodocker-compose down
com algumas flags. -
IMPORTANTE - Com os containers rodando execute
npm run migrate:dev
esse comando vai rodar o comandonpx prisma migrate dev && npx prisma generate
no repositório do back-end e gerar as tabelas do banco de dados.
- Front-End: vai rodar na porta
3000
. - Back-End: vai rodar na porta
3001
. - Bando de dados vai rodar na porta
5432
.
Users: OBS - O nome do usuário precisa ter pelo menos 4 caracteres, enquanto a senha precisa ter 8 caracteres, sendo um desses caracteres um número e o outro uma letra maiúscula.
- username: string
- password: string
users/create retorna um status 200 e uma mensagem: Successfully registered user
- username: string
- password: string
users/login retorna um status 200 e um payload com os dados:
- token: string; token do usuario
- id: string; id do usuario
- accountId: string; id da conta do usuário
- username: nome do usuario
- accountId: string; id da conta do usuário
accounts/balance retorna um status 200 e o saldo da conta, que logo ao ser criada já é de R$100
- cashOutUsername: string; nome de quem está transferindo
- cashOutAccountId: string; id da conta de quem está transferindo
- cashInUsername: string; nome de quem vai recebendo a transferência
- balance: number; valor a ser transferido
accounts/cashout retorna um status 200 e a mensagem: Successful transfer
Transactions: OBS - uma transaction é automaticamente criada na tabela assim que acontece uma transferencia.
- accountId: string; id da conta do usuário
transactions/all recebe o id da conta e retorna todas as transferências que foram feitas ou recebidas pela conta no formato:
- id: string; id da transferência
- debitedAccountId: string; id da conta que transferiu
- creditedAccountId: string; id da conta que recebeu a transferência
- value: number; valor transferido
- createdAt: dia que a transferência aconteceu
- accountId: string; id da conta do usuário
- date: string; data da transferencia no formato yyyy-mm-dd
transactions/bydate retorna um array de transferências no formato:
- type: string; tipo da transferencia, existem dois tipos possiveis, cashOut/cashIn
- id: string; id da transferência
- debitedAccountId: string; id da conta que transferiu
- creditedAccountId: string; id da conta que recebeu a transferência
- value: number; valor transferido
- createdAt: dia que a transferência aconteceu
- accountId: string; id da conta
- type: string; tipo buscado de transferencia cashOut ou cashIn
transactions/bytype retorna um array de transferências no formato:
- type: string; tipo da transferencia, que foi passado no body da request
- id: string; id da transferência
- debitedAccountId: string; id da conta que transferiu
- creditedAccountId: string; id da conta que recebeu a transferência
- value: number; valor transferido
- createdAt: dia que a transferência aconteceu