Nossa equipe chamou a atenção dos gestores da empresa LabPharmacy Inc, uma renomada empresa do ramo de tecnologia farmacêutica, e com isso fomos convidados para desenvolver o site Pharmalândia Medications, um Marketplace de produtos farmacêuticos.
Este site proporcionará a oportunidade de cadastrar vendedores, usuários (compradores), comprar medicamentos e efetuar o registro de compradores e vendedores. Os vendedores terão a capacidade de monitorar suas vendas, enquanto os compradores poderão acompanhar suas compras anteriores com facilidade.
O backend do Pharmalândia Medications foi desenvolvido utilizando as seguintes tecnologias:
- Node.js: É uma plataforma de desenvolvimento JavaScript para aplicações de rede e servidor.
- Express.js: Framework web para Node.js que facilita a criação de APIs.
- Sequelize: Biblioteca que interage com o banco de dados relacional como o PostgreSQL.
- PostgreSQL: Banco de dados relacional que será utilizado para armazenar os dados do sistema.
- DBeaver: Gerenciador de banco de dados SQL.
Para executar o Pharmalândia Medications em uma máquina local, siga as seguintes instruções:
-
Certifique-se de ter o Node.js instalado em sua máquina;
-
Clone o repositório do Pharmalândia Medications em sua máquina local:
https://github.com/FullStack-Itaguacu/M3P-BackEnd-Squad3.git
- Acesse o diretório do projeto :
cd M3P-BackEnd-Squad3
- Instale as dependências para rodar o projeto:
npm install
- Inicie o servidor
npm rum dev:
- Crie um banco de dados PostgreSQL e atualize as configurações de conexão no arquivo. Depois crie um arquivo .env, e complete conforme o arquivo .envexemple, com as informações do seu banco de dados. Aqui você precisará ter um gerenciador database configurado. Neste projeto foi utilizado o DBeaver.
- Para rodar as migrations e inserir as tabelas em seu banco de dados você precisa executar o comando:
npx sequelize db:migrate
- Agora você já pode acessar o Pharmalândia Medications em seu navegador. Usamos o ThunderClient para os testes
http://localhost:3002
Endpoint | Funcionalidade |
---|---|
POST /user/login | Endpoint Público com o objetivo de efetuar o login de um usuário comprador e/ou administrador na aplicação. |
| | | |POST /user/admin/login | Endpoint Público com objetivo de efetuar o login de um usuário administrador na aplicação. | | | | |POST /user/signup | Endpoint Público com objetivo de cadastrar um usuário comprador na aplicação. | | | | |POST /user/admin/signup | Endpoint Privado com o objetivo de cadastrar um usuário na aplicação. | | | | |POST /products/admin | Endpoint Privado com o objetivo de cadastrar um produto na aplicação. | | | | |GET /products/admin/:offset/:limit | Endpoint Privado com o objetivo de listar todos os produtos cadastrados daquele usuário administrador.| | | | |GET /products/:offset/:limit | Endpoint Privado com o objetivo de listar todos os produtos cadastrados na aplicação. | | | | |GET /products/:productId | Endpoint Privado com o objetivo de listar uma especificação do produto selecionado pelo id| | | | |GET /buyers/address | Endpoint Privado com o objetivo de listar todos os endereços cadastrados do usuário. | | | | |PATCH /products/admin/:productId | Endpoint Privado com o objetivo de atualizar alguns campos do produto na aplicação.| | | | | GET /buyers/admin/:offset/:limit | Endpoint Privado com objetivo de listar todos os usuários.| | | | |GET /buyers/admin/:userId | Endpoint Privado com o objetivo de listar uma especificação do usuário selecionado pelo id| | | | |PATCH /buyers/admin/:userId | Endpoint Privado com o objetivo de atualizar alguns campos do usuário comprador na aplicação.| | | | |POST /sales | Endpoint Privado com o objetivo de criar registros de venda na aplicação.| | | | |GET /sales | Endpoint Privado com o objetivo de fornecer todas as compras que aquele comprador realizou.| | | | |GET /sales/admin | Endpoint Privado com o objetivo de fornecer todas as vendas que aquele administrador realizou.| | | | |GET //sales/:id | Endpoint privado com o objetivo de listar uma venda pelo Id| | | | |GET /sales/dashboard/admin | Endpoint Privado com o objetivo de fornecer resultados financeiros a partir das vendas realizadas.|
Para este projeto fizemos as seguintes relações entre as tabelas:
A organização do projeto foi feita utilizando o método Kanban, montando no trello os cards com cada endpoint e suas regras, onde cada participante do Squard fez uma parte colocando seu nome no card e passando para a revisão antes de concluir.
Para oferecer mais detalhes de cada rota você pode consultar a documentação pelo endereço: https://monitorrindodeploymaster.cyclic.app/api-docs
- Deletar ou desativar um produto, uma vez que o produto pode não estar mais disponível para comercialização ou por outras razões que justifiquem a exclusão.
- O vendedor deve receber um alerta quando algum produto estiver fora de estoque.
- Deletar ou desativar um administrador.
- Deletar ou desativar um usuário.
- Atualização de dados / endereço do usuário.
- Alteração de senha.