Este projeto é um serviço de encurtamento de URLs implementado em Golang. Ele permite aos usuários criar links curtos para URLs longas, facilitando o compartilhamento e o gerenciamento de links.
- Geração de slugs únicos para cada URL
- Possibilidade de customização de slugs pelos usuários
- Redirecionamento de slugs para URLs originais
- API RESTful para criação e gerenciamento de links curtos
- Integração com Redis para armazenamento de dados
- Balanceamento de carga e proxy reverso com Nginx
- Containerização com Docker e orquestração com Docker Compose
- Documentação da API com Swagger
O backend é escrito em Golang e utiliza as seguintes bibliotecas principais:
github.com/go-redis/redis/v8
: Para interação com o Redisgithub.com/gorilla/mux
: Para roteamento HTTPgithub.com/swaggo/http-swagger
: Para documentação da API
O Redis é utilizado como banco de dados principal para armazenar os mapeamentos entre slugs e URLs originais. Cada entrada no Redis tem um tempo de expiração de 30 dias.
O Nginx é configurado como um proxy reverso e balanceador de carga, distribuindo as requisições entre múltiplas instâncias da API.
O projeto utiliza Docker para containerização, garantindo consistência entre ambientes de desenvolvimento e produção.
-
Geração de Slugs:
- Slugs são gerados automaticamente com 7 caracteres, compostos por letras (maiúsculas e minúsculas) e números.
- Os primeiros 3 caracteres são baseados no timestamp atual, seguidos por 4 caracteres aleatórios.
-
Customização de Slugs:
- Usuários podem fornecer seus próprios slugs, que devem ter entre 3 e 10 caracteres alfanuméricos.
- Slugs customizados são verificados para garantir unicidade.
-
Expiração de Links:
- Links curtos expiram após 30 dias de inatividade.
-
Redirecionamento:
- Ao acessar um slug válido, o usuário é redirecionado para a URL original.
- Slugs inválidos retornam um erro 404.
-
Estatísticas:
- O sistema conta o número de acessos para cada slug.
-
Certifique-se de ter o Docker e o Docker Compose instalados.
-
Clone o repositório.
-
Na raiz do projeto, execute:
docker compose up -d
-
O serviço estará disponível em
http://localhost/swagger/index.html
.
POST /api/v1/shortlink
: Cria um novo link curtoGET /s/{slug}
: Redireciona para a URL original