Este projeto foi desenvolvido e realizado por Bruno Ro7.
É uma aplicação web fullstack, dockerizada, cujo objetivo é possibilitar que os usuários cadastrados na plataforma, consigam realizar transferências monetárias, internas, entre si.
Banco-de-Dados:
Desenvolvido usando: PostgreSQL;
Back-end:
Desenvolvido usando: Node.js, TypeScript, Sequelize, Sequelize-cli, Cors, Helmet, Pg, Dotenv, Express, Express-async-errors, Ts-node-dev, @types/cors, @types/express, @types/node, @types/pg, @types/sequelize, @types/bcrypt, @types/jsonwebtoken, Bcrypt e Jsonwebtoken;
Front-end:
Desenvolvido usando: Css, Html, TypeScript, React, React-router-dom,Axios, Dotenv, @types/node, @types/react, @types/react-dom, axios, Dotenv, react-router-dom e @types/react-router-dom;
Testes:
Desenvolvidos usando: Chai, Chai-http, Mocha, Sinon, EsLint, EsLint, Eslint-config-airbnb-base, Eslint-config-airbnb-typescript, Eslint-config-standard, Eslint-plugin-editorconfig, Eslint-plugin-import, Eslint-plugin-mocha, Eslint-plugin-n, Eslint-plugin-promise, Eslint-plugin-sonarjs, @types/chai, @types/mocha, @types/sinon, @typescript-eslint/eslint-plugin, @typescript-eslint/parser e @types/eslint;
- 1. Qualquer pessoa deverá poder fazer parte, para isso, basta realizar o cadastro informando "username" e "password".
- 2. Deve-se garantir que cada "username" seja único e composto por, pelo menos, 3 caracteres.
- 3. Deve-se garantir que a "password" seja composta por pelo menos 8 caracteres, um número e uma letra maiúscula. Obs: Lembre-se que ela deverá ser "hashada" ao ser armazenada no banco.
- 4. Durante o processo de cadastro de um novo usuário, sua respectiva conta deverá ser criada automaticamente na tabela Accounts com um Balance de R$ 100,00. Obs: É importante ressaltar que caso ocorra algum problema e o usuário não seja criado, a tabela Accounts não deverá ser afetada.
- 5. Todo usuário deverá conseguir logar na aplicação informando username e password. Caso o login seja bem-sucedido, um token JWT (com 24h de validade) deverá ser fornecido.
- 6. Todo usuário logado (ou seja, que apresente um token válido) deverá ser capaz de visualizar seu próprio balance atual. Um usuário A não pode visualizar o balance de um usuário B, por exemplo.
- 7. Todo usuário logado (ou seja, que apresente um token válido) deverá ser capaz de realizar um cash-out informando o "username" do usuário que sofrerá o cash-in, caso apresente balance suficiente para isso. Atente-se ao fato de que um usuário não deverá ter a possibilidade de realizar uma transferência para si mesmo.
- 8. Toda nova transação bem-sucedida deverá ser registrada na tabela Transactions. Em casos de falhas transacionais, a tabela Transactions não deverá ser afetada.
- 9. Todo usuário logado (ou seja, que apresente um token válido) deverá ser capaz de visualizar as transações financeiras (cash-out e cash-in) que participou. Caso o usuário não tenha participado de uma determinada transação, ele nunca poderá ter acesso à ela.
- 10. Todo usuário logado (ou seja, que apresente um token válido) deverá ser capaz de filtrar as transações financeiras que participou por:
- - Data de realização da transação;
- - Transações de cash-out;
- - Transações de cash-in;
- 1. Página para realizar o cadastro informando "username" e "password".
- 2. Página para realizar o login informando "username" e "password".
- 3. Com o usuário logado, a Página Principal deve apresentar:
- - Balance atual (Saldo em conta) do usuário;
- - Seção voltada à realização de transferências para outros usuários, a partir do username de quem sofrerá o cash-in;
- - Tabela com os detalhes de todas as transações que o usuário participou;
- - Mecanismo para filtrar a tabela por data de transação e/ou transações do tipo cash-in/cash-out;
- - Botão para realizar o log-out;
Página de Login | Página de Cadastro |
---|---|
Página Principal (Logado) | Página Principal c/ Transações (Logado) |
---|---|
Developed by - BrunoRo7
Link de sugestão para fazer instalação, caso aconteça mais algum erro, por favor, entre em contato por uma das vias disponíveis nessa documentação.
Link de sugestão para fazer instalação, caso aconteça mais algum erro, por favor, entre em contato por uma das vias disponíveis nessa documentação.
Para cada um dos passos, haverá um exemplo do comando a ser digitado para fazer o que está sendo pedido, caso tenha dificuldades e o exemplo não seja suficiente, sinta-se a vontade para me contatar em Bruno-Ro7 StackOverFlow.
1. Abra o terminal (também pode usar o atalho de teclado "ctrl+alt+t") e crie um diretório no local de sua preferência com o comando mkdir, aqui neste exemplo usaremos o nome "projetos":
mkdir projetos
obs: lembrando que o nome 'projetos', que demos para o diretório, também poderia ser qualquer outro nome;
2. Entre no diretório que acabou de criar:
cd projetos
3. Faça o clone o projeto:
git clone git@github.com:brunoro7/controlCash.git
Obs: esse comando irá criar um novo diretório, já contendo toda a aplicação!
4. Entre no diretório 'controlCash', usando o comando abaixo:
cd controlCash
05. Para Iniciar a Aplicação, rode o comando abaixo:
docker-compose up -d --build
Para Finalizar a Aplicação:
docker-compose downOBS: Você pode usar a qualquer momento o comando acima para finalizar a aplicação, mas lembre-se que ao rodar esse comando, você irá perder todos os dados salvos no banco de dados até o momento!
Após realizar o comando do "item 05", seu aplicativo já estará funcionando no browser do seu navegador com o projeto rodando!
"Endereço" ==> http://localhost:3000/
1. Faça o download do .zip do projeto no diretório de sua escolha, usando o botão 'Code', mostrado na imagem:
2. Descompactar o .zip com a ferramenta de sua preferência, e acessar o diretório criado:
Obs: essa "pasta"/"diretório" irá conter as configurações da sua aplicação como um todo, restando apenas rodar o aplicativo e iniciar o banco de dados!
Entre na "pasta"/"diretório", que foi extraída, com nome 'controlCash'.
3. Abra o terminal na raíz da aplicação, que é a "pasta"/"diretório" 'controlCash':
Você pode fazer isso usando o botão direito do mouse e clicando em abrir "pasta"/"diretório" no terminal.
04. Para Iniciar a Aplicação, rode o comando abaixo:
docker-compose up -d --build
Para Finalizar a Aplicação:
docker-compose downOBS: Você pode usar a qualquer momento o comando acima para finalizar a aplicação, mas lembre-se que ao rodar esse comando, você irá perder todos os dados salvos no banco de dados até o momento!
Após realizar o comando do "item 04", seu aplicativo já estará funcionando no browser do seu navegador com o projeto rodando!
"Endereço" ==> http://localhost:3000/
Copyright © 2022 Bruno Rossetti