Brev.ly é um encurtador de URLs simples e eficiente, projetado para transformar links longos em URLs curtas e fáceis de compartilhar.
Aviso: Este projeto está em desenvolvimento. Novas funcionalidades e melhorias serão adicionadas em breve.
- Node.js (backend)
- TypeScript
- Fastify (API HTTP)
- Drizzle ORM (migrations e acesso ao banco)
- PostgreSQL (banco de dados)
- React + Vite (frontend)
- TailwindCSS (estilização)
- Cloudflare R2 (armazenamento de arquivos)
- Vitest (testes)
- Docker & Docker Compose (containerização)
- pnpm (gerenciador de pacotes)
brevly/
├── server/ # Backend (API, banco, migrations)
│ ├── src/
│ ├── dist/
│ ├── Dockerfile
│ ├── compose.yaml
│ └── .env
├── web/ # Frontend (React)
│ ├── src/
│ ├── public/
│ └── vite.config.ts
└── README.md
- Node.js 20+
- pnpm 8+
- Docker e Docker Compose
- (Opcional) Conta Cloudflare R2 para armazenamento
| Comando | Descrição |
|---|---|
pnpm install |
Instala as dependências |
pnpm dev |
Inicia o servidor em modo desenvolvimento |
pnpm build |
Gera o build de produção |
pnpm start |
Inicia o servidor em produção |
pnpm db:generate |
Gera as migrations com Drizzle ORM |
pnpm db:migrate |
Aplica as migrations no banco de dados |
pnpm test |
Executa os testes unitários |
| Comando | Descrição |
|---|---|
pnpm install |
Instala as dependências |
pnpm dev |
Inicia o frontend em modo desenvolvimento |
pnpm build |
Gera o build de produção |
pnpm preview |
Visualiza o build de produção localmente |
-
Clone o repositório e acesse a pasta do projeto:
git clone https://github.com/danilo-fq/brevly.git cd brevly/server pnpm install -
Configure as variáveis de ambiente:
- Copie o arquivo
.env.examplepara.enve ajuste conforme necessário.
- Copie o arquivo
-
Suba os containers do backend e banco de dados:
docker compose up -d
-
Aplique as migrations para criar as tabelas no banco:
pnpm db:migrate
-
(Opcional) Suba o frontend:
cd ../web pnpm install pnpm dev
- Instale as dependências do backend e frontend.
- Configure o arquivo
.envcom as variáveis do banco, Cloudflare, etc. - Suba os containers com Docker Compose.
- Rode as migrations para criar as tabelas no banco.
- Acesse a API em
http://localhost:3333e o frontend emhttp://localhost:5173(ou porta configurada).
Para rodar os testes do backend, entre na pasta server e rode o comando:
pnpm testO projeto suporta exportação de relatórios CSV para o Cloudflare R2. Configure as variáveis de ambiente relacionadas no .env para ativar essa funcionalidade. Caso não faça uma configuração do Cloudflare R2 não será possível baixar o relatório CSV.
- As migrations devem ser aplicadas manualmente após subir os containers, usando
pnpm db:migrate. - O projeto utiliza Drizzle ORM para versionamento e aplicação das migrations.
- O frontend e backend são independentes, mas podem ser rodados juntos via Docker Compose.
Sinta-se à vontade para contribuir, abrir issues ou sugerir melhorias. Obrigado por usar o Brev.ly!