Voltar para desafios
#8 Encurtador de Links

#8 Desafio de Programação: Encurtador de Links
Descrição
Desenvolva um sistema completo para encurtar links, utilizando Docker, Traefik como reverse proxy, e um sistema que identifique URLs encurtadas automaticamente com base no domínio e estrutura da URL. O desafio inclui funcionalidades de gerenciamento de links, redirecionamento dinâmico e registro de métricas.
Objetivo
- Criar um sistema que permita encurtar links e gerenciá-los.
- Permitir que links encurtados sejam redirecionados com base apenas no short_code presente na URL.
- Utilizar Traefik como reverse proxy para roteamento dinâmico.
- Configurar todo o ambiente com Docker Compose para facilitar o deploy.
O que será Aprendido
- Redirecionamento Inteligente:
- Processar URLs encurtadas diretamente pelo domínio e path.
- APIs Avançadas:
- Criar endpoints RESTful para gerenciamento de links.
- Docker e Containers:
- Orquestrar serviços e ambiente de produção com Docker Compose.
- Traefik como Reverse Proxy:
- Configurar roteamento dinâmico sem rotas adicionais.
- Métricas Avançadas:
- Registro de acessos (IP, agente de usuário e data/hora).
Arquitetura
Diagrama de Arquitetura
Especificações Técnicas
Backend
- Banco de Dados: PostgreSQL, MySQL, SQL.
- Reverse Proxy: Traefik.
- Ambiente: Docker e Docker Compose.
- Métricas: Contador de cliques, rastreamento de IPs e agente de usuário.
Endpoints e Payloads
1. Criar Link Curto
- POST
/api/shorten
- Body:
1{ 2 "url": "https://exemplo.com/minha-url" 3}
- Response:
1{ 2 "short_url": "https://short.local/abc123", 3 "original_url": "https://exemplo.com/minha-url" 4}
2. Redirecionamento
- O sistema reconhece o formato
https://short.local/{short_code}
automaticamente. - Ao acessar
https://short.local/abc123
, a requisição é roteada para a API, que:- Busca o
short_code
no banco. - Redireciona o cliente para a URL original com código
302 Found
.
- Busca o
3. Listar Links Criados
- GET
/api/links
- Response:
1[ 2 { 3 "short_url": "https://short.local/abc123", 4 "original_url": "https://exemplo.com", 5 "clicks": 42 6 }, 7 { 8 "short_url": "https://short.local/xyz789", 9 "original_url": "https://outra.com", 10 "clicks": 15 11 } 12]
4. Excluir Link Curto
- DELETE
/api/links/{short_code}
- Response:
1{ 2 "message": "Link deleted successfully" 3}
Resultados Esperados
- Encurtador Funcional:
- Gerar links curtos e redirecionar automaticamente sem necessidade de rotas explícitas.
- Integração com Traefik:
- Roteamento dinâmico baseado em
short_code
.
- Roteamento dinâmico baseado em
- Métricas Avançadas:
- Registro de IPs, agentes de usuário e datas de acesso.
- Ambiente Contenerizado:
- Docker Compose configurado para fácil deploy.
Boa sorte com o desafio! 🚀
Envie o link do seu projeto
Envie o link do seu projeto para o email contato@racoelho.com.br.