https://github.com/danilo-fq/brevly
Brev.ly é uma aplicação moderna de encurtamento de URLs, com exportação de relatórios, testes automatizados e uma arquitetura full-stack utilizando Node.js, React, PostgreSQL e Cloudflare R2.
https://github.com/danilo-fq/brevly
api-rest cloudflare-r2 docker docker-compose drizzle-orm fastify fullstack nodejs pnpm postgresql react relatorios-csv tailwindcss testes-integracao typescript url-shortener vite vitest
Last synced: 3 months ago
JSON representation
Brev.ly é uma aplicação moderna de encurtamento de URLs, com exportação de relatórios, testes automatizados e uma arquitetura full-stack utilizando Node.js, React, PostgreSQL e Cloudflare R2.
- Host: GitHub
- URL: https://github.com/danilo-fq/brevly
- Owner: danilo-fq
- Created: 2025-06-10T11:47:21.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-07-21T13:26:14.000Z (11 months ago)
- Last Synced: 2025-07-21T15:29:11.499Z (11 months ago)
- Topics: api-rest, cloudflare-r2, docker, docker-compose, drizzle-orm, fastify, fullstack, nodejs, pnpm, postgresql, react, relatorios-csv, tailwindcss, testes-integracao, typescript, url-shortener, vite, vitest
- Language: TypeScript
- Homepage:
- Size: 238 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Brev.ly
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.
---
## 🚀 Tecnologias Utilizadas
- **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)
---
## 📁 Estrutura do Projeto
```
brevly/
├── server/ # Backend (API, banco, migrations)
│ ├── src/
│ ├── dist/
│ ├── Dockerfile
│ ├── compose.yaml
│ └── .env
├── web/ # Frontend (React)
│ ├── src/
│ ├── public/
│ └── vite.config.ts
└── README.md
```
---
## ⚙️ Pré-requisitos
- [Node.js](https://nodejs.org/) 20+
- [pnpm](https://pnpm.io/) 8+
- [Docker](https://www.docker.com/) e [Docker Compose](https://docs.docker.com/compose/)
- (Opcional) Conta Cloudflare R2 para armazenamento
---
## 🛠️ Principais Comandos
### Backend (server)
| 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 |
### Frontend (web)
| 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 |
---
## 🐳 Como rodar com Docker
1. **Clone o repositório e acesse a pasta do projeto:**
```sh
git clone https://github.com/danilo-fq/brevly.git
cd brevly/server
pnpm install
```
2. **Configure as variáveis de ambiente:**
- Copie o arquivo `.env.example` para `.env` e ajuste conforme necessário.
3. **Suba os containers do backend e banco de dados:**
```sh
docker compose up -d
```
4. **Aplique as migrations para criar as tabelas no banco:**
```sh
pnpm db:migrate
```
5. **(Opcional) Suba o frontend:**
```sh
cd ../web
pnpm install
pnpm dev
```
---
## 📝 Fluxo de Deploy/Execução
1. **Instale as dependências** do backend e frontend.
2. **Configure o arquivo `.env`** com as variáveis do banco, Cloudflare, etc.
3. **Suba os containers** com Docker Compose.
4. **Rode as migrations** para criar as tabelas no banco.
5. **Acesse a API** em `http://localhost:3333` e o frontend em `http://localhost:5173` (ou porta configurada).
---
## 🧪 Testes
Para rodar os testes do backend, entre na pasta server e rode o comando:
```sh
pnpm test
```
---
## ☁️ Integração com Cloudflare R2
O 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.
---
## 💡 Observações
- 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.
---
## 👨💻 Autor
- [Danilo](https://github.com/danilo-fq)
---
Sinta-se à vontade para contribuir, abrir issues ou sugerir melhorias. Obrigado por usar o Brev.ly!