Um encurtador de URL simples e eficiente construído com Go, PostgreSQL e TailwindCSS.
- Go 1.24: Linguagem backend para alta performance.
- PostgreSQL: Banco de dados relacional para persistência dos links.
- TailwindCSS: Framework CSS utility-first para estilização rápida e responsiva.
- HTML Templates: Renderização server-side das views.
Antes de começar, certifique-se de ter instalado em sua máquina:
- Go (versão 1.24 ou superior)
- Node.js & npm (para o TailwindCSS)
- PostgreSQL
-
Clone o repositório
git clone https://github.com/viitorags/gouly.git cd gouly -
Configure o Banco de Dados Crie um banco de dados no PostgreSQL e execute o comando SQL necessário para criar a tabela (ajuste conforme seu schema, ex:
schema/init.sqlse existir, ou baseie-se no model):CREATE TABLE urls ( id SERIAL PRIMARY KEY, original_url TEXT NOT NULL, short_url VARCHAR(10) UNIQUE NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
-
Instale as dependências do Frontend
npm install
-
Instale as dependências do Backend
go mod download
Para gerar o arquivo CSS final:
npm run build:cssPara assistir as mudanças em desenvolvimento:
npm run watch:cssInicie o servidor:
go run main.goO servidor iniciará na porta 8085 (ou outra definida em router.go).
POST /api/v1/urls
Corpo da Requisição (JSON):
{
"original_url": "https://www.exemplo.com.br/caminho/muito/longo"
}Resposta:
{
"short_url": "a1b2c3d4",
"original_url": "https://www.exemplo.com.br/caminho/muito/longo"
}GET /:short_url
Redireciona para a URL original associada.
/config: Configurações do banco de dados e logger./handler: Lógica de controle (criação de links, redirecionamento)./router: Definição das rotas HTTP./views: Templates HTML./static: Arquivos estáticos (CSS, imagens).