Este é um sistema de e-commerce desenvolvido com Vue.js no frontend e Node.js no backend. Ele permite a gestão de usuários, produtos, carrinho de compras e pedidos, garantindo uma experiência fluida para os clientes.
- Frontend: Vue.js (Composition API, Vue Router)
- Backend: Node.js com Express
- Banco de Dados: MongoDB (com Mongoose)
- Autenticação: JWT (JSON Web Token)
- Gerenciamento de Estado: Pinia
- Estilização: CSS puro
- Animação: GSAP
- Cadastro e login de usuários
- Niveis de permissão baseado em roles
- Geração de tokens
- Adição, listagem, atualização e remoção de produtos via formulario
- Adição, alteração de quantidade e remoção de produtos no carrinho
- Finalização de compras
- Exibição do histórico de pedidos
- Rotas protegidas
- Painel administrativo com acesso restrito
- Funcionalidades administrativas:
- Relatório de todos os clientes
- Consulta a todos os pedidos de um cliente
- Consulta a todos os pedidos do sistema
Carrinho_de_compras_Node_Vuejs/
├── backend/ # Código-fonte do servidor Node.js
├── frontend/ # Código-fonte da aplicação Vue.js
|-- images/ # Imagens capturadas do projeto
├── README.md # Documentação do projeto
Estrutura do backend:
backend/
├── config/ # Configurações do banco de dados
|-- middlewares/ # Definição de middlewares para autentição e roles
├── models/ # Modelos do MongoDB
├── routes/ # Definição das rotas da API
├── utils/ # Ferramentas para geração de tokens
├── server.js # Arquivo principal
Estrutura do frontend:
frontend/
├── src/
| |-- assets/ # Arquivos auxiliares como imagens, icones, etc.
│ ├── components/ # Componentes reutilizáveis
| |-- constants/ # Informações como URIs, URLs, etc.
| |-- effects/ # Animações e efeitos aplicados
| |-- model/ # Informações padronizadas
| |-- notifications # Lógica das notificações
│ ├── routes/ # Definição das rotas
| |-- services/ # Definição dos serviços
│ ├── store/ # Gerenciamento de estado (Pinia)
│ ├── views/ # Páginas da aplicação
│ ├── App.vue # Componente raiz
| |-- main.css # Estilização global
│ ├── main.js # Arquivo de inicialização
git clone https://github.com/Leonardobern10/Carrinho_de_compras_Node_Vuejs.git
cd Carrinho_de_compras_Node_Vuejscd backend
npm install
npm run devcd frontend
npm install
npm run devO sistema utiliza JWT para autenticação. Ao logar, um refreshtoken é armazenado no banco de dados e vinculado ao usuário. Esse refreshToken é utilizado para gerar um token (accessToken) de menor duração, garantindo que o usuário fique logado por mais tempo. Cada cliente tem um nivel de permissão, sendo o padrão User. Esse nivel de permissão é necessário para o acesso à algumas seções e funcionalidades do sistema (ex: Funcionalidades administrativas).
POST /api/auth/register- Cadastro de usuárioPOST /api/auth/login- Login de usuárioPOST /api/auth/refresh- Renovação do AccessTokenPOST /api/auth/logout- Desconexão do usuárioGET /api/auth/userStatus- Verifica se o usuário está autenticadoGET /api/auth/me- Obtém dados do usuario como roles
GET /api/products- Lista todos os produtosGET /api/products/:id- Obtém um produto específicoPOST /api/products- Adiciona um produto ao sistemaPUT /api/products/:id- Atualiza os dados de um produtoPATCH /api/change/:id- Atualiza parcialmente um produtoDELETE /api/delete/:id- Remove um produto específico
POST /api/orders- Finaliza uma compraGET /api/orders- Obtém o histórico de pedidos do usuário
Os itens armazenados no carrinho são salvos no LocalStorage permitindo que esses dados persistam entre sessões.
Este projeto é distribuído sob a licença MIT.
Pull requests são bem-vindos! Para melhorias significativas, abra uma issue para discutirmos.
- Autor: Leonardo Bernardo
- GitHub: Leonardobern10
- LinkedIn: in/leonardo-bernardo25










