Skip to content

claudiocassimiro/ng-fullstack-challenge

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Bem vinda(o) ao desafio fullstack ng.casha

Repositorio do projeto no github
Meu LinkedIn

Dependências necessarias para executar o projeto

  • node v16.18.1
  • docker v20.10.21
  • docker-compose v2.12.2

Antes de executar o projeto você deve

  • 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.

Comandos para execução do projeto

  • npm rum compose:up vai rodar o docker-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 comando docker-compose down com algumas flags.

  • IMPORTANTE - Com os containers rodando execute npm run migrate:dev esse comando vai rodar o comando npx prisma migrate dev && npx prisma generate no repositório do back-end e gerar as tabelas do banco de dados.

Portas da aplicação

  • Front-End: vai rodar na porta 3000.
  • Back-End: vai rodar na porta 3001.
  • Bando de dados vai rodar na porta 5432.

Rotas do back-end e payloads a serem passados

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.


payload para rota post users/create:

  1. username: string
  2. password: string

users/create retorna um status 200 e uma mensagem: Successfully registered user

payload para rota post users/login:

  1. username: string
  2. password: string

users/login retorna um status 200 e um payload com os dados:

  1. token: string; token do usuario
  2. id: string; id do usuario
  3. accountId: string; id da conta do usuário
  4. username: nome do usuario

Accounts: OBS - Assim que um usuário é criado, automaticamente a sua conta também é criada.

payload para rota post accounts/balance

  1. 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

payload para rota post accounts/cashout

  1. cashOutUsername: string; nome de quem está transferindo
  2. cashOutAccountId: string; id da conta de quem está transferindo
  3. cashInUsername: string; nome de quem vai recebendo a transferência
  4. 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.

payload para rota post transactions/all

  1. 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:

  1. id: string; id da transferência
  2. debitedAccountId: string; id da conta que transferiu
  3. creditedAccountId: string; id da conta que recebeu a transferência
  4. value: number; valor transferido
  5. createdAt: dia que a transferência aconteceu

payload para rota post transactions/bydate

  1. accountId: string; id da conta do usuário
  2. date: string; data da transferencia no formato yyyy-mm-dd

transactions/bydate retorna um array de transferências no formato:

  1. type: string; tipo da transferencia, existem dois tipos possiveis, cashOut/cashIn
  2. id: string; id da transferência
  3. debitedAccountId: string; id da conta que transferiu
  4. creditedAccountId: string; id da conta que recebeu a transferência
  5. value: number; valor transferido
  6. createdAt: dia que a transferência aconteceu

payload para rota post transactions/type

  1. accountId: string; id da conta
  2. type: string; tipo buscado de transferencia cashOut ou cashIn

transactions/bytype retorna um array de transferências no formato:

  1. type: string; tipo da transferencia, que foi passado no body da request
  2. id: string; id da transferência
  3. debitedAccountId: string; id da conta que transferiu
  4. creditedAccountId: string; id da conta que recebeu a transferência
  5. value: number; valor transferido
  6. createdAt: dia que a transferência aconteceu

About

Desafio fullstack da empresa ng-cash

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages