API REST desenvolvida com Node.js, Express e MongoDB para simular o backend de um sistema de e-commerce, utilizando autenticação JWT, controle de acesso por perfis e arquitetura em camadas.
Status do Projeto: Concluído
Abaixo estão algumas das principais funcionalidades implementadas e testadas através do Postman.
- Sobre o projeto
- Tecnologias utilizadas
- Arquitetura
- Diferenciais
- Funcionalidades
- Estrutura do projeto
- Instalação
- Configuração
- Executando o projeto
- Principais Endpoints
- Fluxo da aplicação
- Aprendizados
- Melhorias futuras
- Autor
A E-commerce API foi desenvolvida com o objetivo de consolidar conhecimentos em desenvolvimento Backend utilizando Node.js, Express e MongoDB.
O projeto simula o backend de uma loja virtual, permitindo autenticação de usuários, gerenciamento de produtos e controle de pedidos através de uma API REST.
Durante o desenvolvimento foram aplicados conceitos importantes como:
- Arquitetura em camadas;
- APIs REST;
- Autenticação utilizando JWT;
- Controle de acesso entre usuários e administradores;
- Integração com MongoDB utilizando Mongoose;
- Organização de código seguindo boas práticas.
| Tecnologia | Finalidade |
|---|---|
| Node.js | Ambiente de execução JavaScript |
| Express.js | Framework para construção da API |
| MongoDB | Banco de dados NoSQL |
| Mongoose | ODM para MongoDB |
| JWT | Autenticação |
| Bcrypt | Criptografia de senhas |
| Dotenv | Variáveis de ambiente |
O projeto foi organizado utilizando separação de responsabilidades seguindo uma arquitetura em camadas.
Cliente
│
HTTP Request
│
Routes
│
Controllers
│
Services
│
Models
│
MongoDB
Futuramente será adicionada uma ilustração desta arquitetura.
- Arquitetura em camadas (Routes → Controllers → Services → Models)
- Autenticação utilizando JWT
- Controle de acesso por perfis (Admin e User)
- Senhas criptografadas com Bcrypt
- Tratamento centralizado de erros
- Respostas padronizadas da API
- Organização modular do projeto
- Integração com MongoDB utilizando Mongoose
- Cadastro de usuários
- Login
- Geração de Token JWT
- Senhas criptografadas utilizando Bcrypt
Dois níveis de acesso:
- User
- Admin
Rotas administrativas protegidas por Middleware.
- Criar produto
- Listar produtos
- Buscar produto por ID
- Atualizar produto
- Excluir produto
- Criar pedido
- Listar pedidos
- Buscar pedido por ID
- Atualizar status do pedido
Fluxo de status:
PENDING
│
▼
PAID
│
▼
SHIPPED
ou
PENDING
│
▼
CANCELLED
src/
│
├── controllers/
│ ├── auth.controller.js
│ ├── carrinho.controller.js
│ ├── order.controller.js
│ ├── produto.controller.js
│ └── usuario.controller.js
│
├── database/
│
├── middlewares/
│ ├── auth.middleware.js
│ └── admin.middleware.js
│
├── models/
│
├── routes/
│
├── service/
│
├── utils/
│
└── server.js
Clone o repositório:
git clone https://github.com/AlonsoFavero/ecommerce-api.gitEntre na pasta:
cd ecommerce-apiInstale as dependências:
npm installCrie um arquivo .env:
PORT=3000
MONGO_URI=sua_string_de_conexao
JWT_SECRET=seu_segredoInicie o servidor:
npm startServidor disponível em:
http://localhost:3000
| Método | Endpoint |
|---|---|
| POST | /auth/register |
| POST | /auth/login |
| Método | Endpoint |
|---|---|
| GET | /produtos |
| GET | /produtos/:id |
| POST | /produtos |
| PUT | /produtos/:id |
| DELETE | /produtos/:id |
| Método | Endpoint |
|---|---|
| POST | /orders |
| GET | /orders |
| GET | /orders/:id |
| PATCH | /orders/:id/status |
Usuário
│
Login
│
JWT
│
Bearer Token
│
Auth Middleware
│
Controller
│
Service
│
MongoDB
Durante o desenvolvimento deste projeto foram praticados:
- Organização de projetos Node.js
- Arquitetura em camadas
- CRUD completo
- Autenticação JWT
- Middlewares
- Controle de acesso
- MongoDB
- Mongoose
- Estruturação de APIs REST
- Tratamento de erros
- Boas práticas de organização de código
- Documentação utilizando Swagger/OpenAPI
- Upload de imagens para produtos
- Paginação
- Filtros avançados
- Docker
- Testes automatizados
- Pipeline CI/CD
- Cache para consultas
- Logs estruturados
Alonso Favero Filho
Estudante de Análise e Desenvolvimento de Sistemas.
Este projeto foi desenvolvido como parte da minha jornada de estudos em desenvolvimento Backend, com foco na construção de APIs REST utilizando Node.js, Express e MongoDB.
Estou em constante evolução e aberto a feedbacks que possam contribuir para meu crescimento como desenvolvedor.




