Este é o backend do projeto URL Shortener, desenvolvido em Node.js e Express com autenticação JWT, documentação Swagger e integração com MongoDB via Mongoose.
Você pode visualizar o projeto do frontend no repositório: url-shortener-frontend
Este backend permite que usuários criem contas, façam login e gerenciem URLs encurtadas. O sistema suporta diferentes perfis de usuário (cliente, admin e recrutador para testes) e garante que cada usuário só acesse suas próprias URLs.
- Cadastro e login de usuários com senha criptografada (bcrypt)
- Autenticação JWT com controle de expiração de sessão
- Gerenciamento de URLs: criar, listar, editar e deletar URLs encurtadas
- Perfil de Recrutador: login especial para testes, com limpeza automática das URLs após logout ou expiração do token
- Documentação interativa via Swagger
- Controle de acesso por roles (cliente, admin)
- Deploy pronto para produção (exemplo: Render.com)
- Node.js
- Express
- Mongoose (MongoDB ODM)
- bcrypt (hash de senhas)
- jsonwebtoken (JWT)
- dotenv (variáveis de ambiente)
- hyperdyperid (geração de IDs únicos)
- swagger-jsdoc & swagger-ui-express (documentação)
- cors (CORS)
- nodemon (dev)
- Clone o repositório:
git clone https://github.com/vitorbcc2021/url-shortener-backend.git cd url-shortener-backend - Instale as dependências:
npm install
- Configure as variáveis de ambiente:
- Crie um arquivo
.envna raiz com:
PORT=3000 SECRET=sua_chave_secreta_jwt MONGODB_URI=sua_string_de_conexão_mongodb - Crie um arquivo
- Inicie o servidor:
O backend estará rodando em
npm run dev
http://localhost:3000/
Acesse a documentação interativa Swagger em: https://url-shortener-1x3f.onrender.com/api-docs/
- Teste todos os endpoints diretamente pelo navegador.
- Veja exemplos de requisições e respostas.
.
├── controllers/ # Lógica dos endpoints (auth, url)
├── dto/ # Data Transfer Objects (validação de dados)
├── docs/ # Configuração e componentes do Swagger
├── middlewares/ # Middlewares de autenticação e autorização
├── models/ # Schemas do Mongoose (User, Url)
├── routes/ # Definição das rotas Express
├── utils/ # Utilitários (ex: conexão com o banco)
├── server.js # Ponto de entrada da aplicação
└──package.json
- Permitir encurtamento ilimitado de URLs (remover limite de 10.000)
- Suporte a domínios personalizados
- Melhorar tratamento de erros e mensagens de retorno
- Implementar testes automatizados
- Otimizar limpeza automática das URLs do recrutador
- Adicionar logs e monitoramento
Dúvidas ou sugestões? Abra uma issue ou entre em contato(informações disponíveis no meu GitHub).
