Sobre o Projeto ā¢ Endpoints ā¢ InstalaĆ§Ć£o ā¢ UtilizaĆ§Ć£o ā¢ Tecnologias ā¢ Autor
Projeto desenvolvido como parte das atividades do curso da Kenzie Academy Brasil.
Esse projeto consiste em uma aplicaĆ§Ć£o back-end de um marketplace.
O objetivo do desenvolvimento desse projeto era praticar e aprimorar as habilidades em Node.js, Express.js e TypeORM.
Esse serviƧo possui uma API REST integrada a um banco de dados PostegreSQL.
Algumas funcionalidades dessa aplicaĆ§Ć£o sĆ£o:
- UsuƔrio administrador pode:
- Cadastrar e gerenciar o estoque de produtos
- Vender produtos na plataforma
- Fazer o acompanhamento de vendas
- UsuƔrio cliente pode:
- Registrar-se na plataforma
- Fazer um carrinho de compras
- Receber um e-mail com os itens e valores comprados
- Recuperar sua senha de acesso
MĆ©todo | Endpoint | Responsabilidade | Regras de NegĆ³cio |
---|---|---|---|
POST | /user | Cria um usuĆ”rio | Um usuĆ”rio pode ser do tipo cliente ou do tipo administrador. Use uma propriedade booleana que faƧa essa diferenciaĆ§Ć£o |
GET | /user/<userId> | Seleciona um determinado usuĆ”rio pelo id | UsuĆ”rios do tipo cliente sĆ£o restritos as suas prĆ³prias informaƧƵes. Ou seja: um cliente nĆ£o pode selecionar outro usuĆ”rio alĆ©m dele mesmo, mas um administrador pode selecionar qualquer usuĆ”rio do sistema |
GET | /user | Seleciona todos os usuĆ”rios | Apenas os administradores podem fazer essa aĆ§Ć£o |
POST | /login | Gera um toke de autenticaĆ§Ć£o | Login via e-mail e password |
POST | /product | Cadastra um Ćŗnico produto | Apenas usuĆ”rio do tipo administrador pode realizar essa asĆ§Ć£o |
GET | /product/<productId> | Seleciona um determinado produto pelo id | Qualquer usuĆ”rio pode realizar essa aĆ§Ć£o |
GET | /product | Seleciona todos os produtos cadastrados | Qualquer usuĆ”rio pode realizar essa aĆ§Ć£o |
POST | /cart | Adiciona um produto no carrinho | Apenas usuƔrios logados devem adicionar o produto no carrinho |
GET | /cart/<cartId> | Seleciona o carrinho do usuĆ”rio | UsuĆ”rios do tipo cliente sĆ£o restritos as suas prĆ³prias informaƧƵes. Ou seja: um cliente nĆ£o pode selecionar o carrinho de outro usuĆ”rio, mas um administrador pode selecionar qualquer carrinho do sistema |
GET | /cart | Seleciona todos os carrinhos | Apenas os administradores podem realizar essa aĆ§Ć£o |
DELETE | /cart/<productId> | Deleta um produto do carrinho | Apenas o usuĆ”rio dono do carrinho e o administrador pode realizar essa aĆ§Ć£o |
POST | /buy | Realiza compra dos produtos do carrinho | Apenas o dono do carrinho pode finalizar uma compra e apĆ³s a sua finalizaĆ§Ć£o um email com os dados da compra deve ser disparado para o usuĆ”rio |
GET | /buy/<orderId> | Seleciona uma compra jĆ” realizada | Apenas o usuĆ”rio dono da compra e o administrador pode realizar essa aĆ§Ć£o |
GET | /buy | Seleciona todas as compras jĆ” realizadas | Apenas o administrador pode realizar essa aĆ§Ć£o |
POST | Envia um email qualquer para um determinado usuĆ”rio | Caso o administrador queira mandar alguma mensagem para um usuĆ”rio qualquer. Apenas o administrador pode realizar essa aĆ§Ć£o | |
POST | /recover | Envia um cĆ³digo de validaĆ§Ć£o para o email do usuĆ”rio | O sistema deverĆ” gerar um cĆ³digo validador qualquer na qual serĆ” usado para a recuperaĆ§Ć£o de senha |
POST | /change_password | Altera a senha do usuĆ”rio | A partir do cĆ³digo validador que o usuĆ”rio recebe em seu email, o usuĆ”rio pode alterar a senha mandando no body da requisiĆ§Ć£o o codigo, a nova senha e sua confirmaĆ§Ć£o |
Este projeto requer que o Git, o Node.js e o Docker estejam instalados em sua mƔquina.
-
FaƧa o fork desse repositĆ³rio.
-
Abra o terminal e clone o repositĆ³rio:
$ git clone [email protected]:<your_user>/kenzie-market_back.git
- Entre no diretĆ³rio do projeto:
$ cd kenzie-market_back
- Instale as dependĆŖncias:
$ yarn install
- Adicione o arquivo
.env
na raiz do projeto e configure suas variƔveis de ambiente seguindo o modelo do arquivo.env.example
):
JWT_SECRET=JWT secret key for generate token JWT
DATABASE_URL=URL for database connection after deploy
GMAIL_EMAIL=E-mail of gmail account to send emails
GMAIL_PASSWORD=Password of gmail account to send emails
POSTGRES_USER=Database user
POSTGRES_PASSWORD=Password for database
POSTGRES_DB=Database
Se vocĆŖ usa a verificaĆ§Ć£o em duas etapas na sua conta do Google, habilite uma senha de app aqui e a insira como valor da variĆ”vel GMAIL_PASSWORD
- Inicie o contĆŖiner docker referente ao banco de dados PostgreSQL de acordo com as configuraƧƵes do arquivo
docker-compose.yml
:
$ docker-compose up
- Execute as migrations para criar as tabelas no banco de dados:
$ yarn typeorm migration:run
- Execute a aplicaĆ§Ć£o:
$ yarn dev
Pronto! A aplicaĆ§Ć£o, agora, estarĆ” sendo executada em http://localhost:3000/.
Para utilizar a aplicaĆ§Ć£o, Ć© necessĆ”rio o uso de uma API Client, como Postman ou Insomnia.
Acesse e siga a documentaĆ§Ć£o em http://localhost:3000/api-documentation e faƧa as requisiƧƵes na aplicaĆ§Ć£o utilizando uma API Client.
Para o desenvolvimento desse projeto, as seguintes ferramentas foram utilizadas:
Marcos Kenji Kuribayashi
Desenvolvido por Marcos Kenji Kuribayashi š