Um serviço completo de encurtamento de URLs, construído com uma arquitetura moderna e desacoplada. Este projeto demonstra a criação de uma API RESTful robusta com FastAPI, um frontend reativo com React, e a orquestração de serviços com Docker Compose, seguindo as melhores práticas de desenvolvimento.
O objetivo deste projeto foi construir uma aplicação web full-stack funcional e escalável, simulando um ambiente de desenvolvimento profissional. A arquitetura foi projetada para ser modular, com uma clara separação de responsabilidades entre o frontend, o backend e o banco de dados, todos executando em containers Docker isolados.
- 🔗 Encurtamento de URL: Gera um código curto e único para qualquer URL longa.
- ✏️ Apelidos Customizados: Permite que os usuários escolham seus próprios apelidos para os links (ex:
meu-link-secreto). - 📊 Analytics de Cliques: Rastreia e exibe o número de vezes que cada link encurtado foi acessado.
- 🚀 Redirecionamento Rápido: Utiliza redirecionamentos HTTP eficientes (
302 Found) para garantir a contagem de cliques e uma boa experiência de usuário. - 🔒 Segurança: As configurações sensíveis (como senhas de banco de dados) são gerenciadas através de variáveis de ambiente, seguindo as melhores práticas de segurança.
| Camada | Tecnologia |
|---|---|
| Backend | Python 3.11, FastAPI, SQLAlchemy, Uvicorn, Pydantic |
| Frontend | React, Vite, JavaScript (JSX), CSS |
| Banco de Dados | MySQL 8.0 |
| Infra & DevOps | Docker, Docker Compose, Nginx |
O projeto é organizado em dois diretórios principais, representando a arquitetura desacoplada:
url-encurtador-fullstack/
├── url_shortener/ # Projeto Backend (API FastAPI)
└── url-shortener-frontend/ # Projeto Frontend (React)
Este projeto é 100% containerizado, tornando sua execução extremamente simples.
- Docker
- Docker Compose (já vem com o Docker Desktop)
- Git
-
Clone este repositório:
git clone [https://github.com/inlus/url-encurtador-fullstack.git](https://github.com/inlus/url-encurtador-fullstack.git) cd url-encurtador-fullstack -
Configure as Variáveis de Ambiente do Backend:
- Navegue até a pasta do backend:
cd url_shortener. - Copie o arquivo de exemplo
.env.examplepara um novo arquivo chamado.env.cp .env.example .env
- Abra o arquivo
.enve defina uma senha segura paraMYSQL_PASSWORD.
- Navegue até a pasta do backend:
-
Suba os Containers:
- Ainda na pasta
url_shortener/, execute o Docker Compose. O comando precisa ser rodado desta pasta para que ele encontre odocker-compose.yml.docker compose up --build
- Este comando irá construir as imagens e iniciar os 3 containers (API, Banco de Dados e Frontend). Aguarde até que os logs se estabilizem.
- Ainda na pasta
-
Acesse a Aplicação:
- Abra seu navegador e acesse a interface do usuário: http://localhost:8080
- A documentação interativa da API (gerada pelo FastAPI/Swagger) estará disponível em: http://localhost:8000/docs
Aqui estão os principais endpoints disponíveis:
| Método | Rota | Descrição |
|---|---|---|
POST |
/shorten |
Cria uma nova URL encurtada (normal ou customizada). |
GET |
/{short_code} |
Redireciona para a URL longa correspondente. |
GET |
/stats/{short_code} |
Retorna os detalhes e estatísticas de um link. |
Feito por [Luis Felipe Costa].
[https://www.linkedin.com/in/luis-felipe-costa-pedro/] | [inlusive22@gmail.com]