BACKEND
#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:
{ "url": "https://exemplo.com/minha-url" }
- Response:
{ "short_url": "https://short.local/abc123", "original_url": "https://exemplo.com/minha-url" }
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:
[ { "short_url": "https://short.local/abc123", "original_url": "https://exemplo.com", "clicks": 42 }, { "short_url": "https://short.local/xyz789", "original_url": "https://outra.com", "clicks": 15 } ]
4. Excluir Link Curto
- DELETE
/api/links/{short_code}
- Response:
{ "message": "Link deleted successfully" }
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.