fernando-ss-soares /
Scalable-Backend
Este é um projeto de API robusta e escalável desenvolvida com Bun e TypeScript, focada em alta performance e facilidade de manutenção.
Loading repository data…
ruanvalente / repository
Este é um playground/template para explorar e demonstrar as melhores práticas de desenvolvimento full-stack utilizando o ecossistema Bun. O projeto implementa um sistema de gerenciamento de tarefas com uma API robusta e uma interface web moderna.
Uma aplicação full-stack moderna construída com Bun, Elysia, React e TypeScript, focada em gerenciamento de tarefas para o aprendizado usando arquitetura monorepo bem estruturada.
Este é um playground/template para explorar e demonstrar as melhores práticas de desenvolvimento full-stack utilizando o ecossistema Bun. O projeto implementa um sistema de gerenciamento de tarefas com uma API robusta e uma interface web moderna.
bunstack-playground/
├── apps/
│ ├── api/ # Backend API
│ │ └── src/
│ │ ├── domain/ # Entidades e interfaces de repositório
│ │ │ ├── repositories/ # Interfaces (task.repository.interface.ts)
│ │ │ └── erros/ # Erros customizados
│ │ ├── application/ # Use Cases
│ │ │ ├── tasks/ # list-tasks, create-task, update-task, delete-task, complete-task
│ │ │ └── dashboard/ # get-dashboard
│ │ ├── interfaces/ # Controllers (Routes)
│ │ │ ├── tasks/ # Task controller
│ │ │ ├── dashboard/ # Dashboard controller
│ │ │ └── auth/ # Auth controller
│ │ ├── infrastructure/ # Implementações concretas
│ │ │ ├── database/ # Migrações e seeds
│ │ │ ├── repositories/ # Implementações (SQLite, Supabase)
│ │ │ └── supabase/ # Cliente Supabase
│ │ ├── app.ts # Configuração principal Elysia
│ │ ├── server.ts # Entry point
│ │ └── config.ts # Variáveis de ambiente
│ │
│ └── web/ # Frontend React
│ └── src/
│ ├── features/ # Funcionalidades isoladas
│ │ ├── tasks/ # CRUD de tarefas
│ │ ├── dashboard/ # Métricas e gráficos
│ │ ├── auth/ # Login, register, callback
│ │ ├── settings/ # Configurações usuário
│ │ └── users/ # Gerenciamento de usuários
│ ├── screens/ # Páginas (tasks, dashboard, settings, users)
│ ├── shared/ # Componentes compartilhados
│ │ ├── ui/ # Componentes UI (sidebar, datatable, filter)
│ │ ├── hooks/ # Hooks customizados
│ │ ├── http/ # Cliente HTTP
│ │ ├── layouts/ # Layouts
│ │ └── config/ # Configurações
│ ├── app/ # Setup router
│ └── main.tsx # Entry point
│
└── packages/
└── shared/ # Código compartilhado
└── src/
├── domain/ # Modelos de domínio
├── http/ # Schemas HTTP (Zod)
└── config/ # Configurações compartilhadas
src/
├── domain/ # Entidades e regras de negócio
│ ├── repositories/ # Interfaces de repositório
│ └── erros/ # Erros domain-specific
├── application/ # Casos de uso (Use Cases)
│ ├── tasks/ # CreateTaskUseCase, ListTasksUseCase, etc.
│ └── dashboard/ # GetDashboardUseCase
├── interfaces/ # Controllers/Routes
│ ├── tasks/ # Task endpoints
│ ├── dashboard/ # Dashboard endpoints
│ └── auth/ # Auth endpoints
└── infrastructure/ # Implementações externas
├── database/ # Migrations e seeds
├── repositories/ # SQLite e Supabase implementations
└── supabase/ # Cliente Supabase
src/
├── features/ # Funcionalidades isoladas por domínio
│ └── tasks/
│ ├── queries/ # React Query hooks
│ ├── actions/ # Mutações
│ ├── routes/ # Rotas específicas
│ ├── widgets/ # Componentes de feature
│ ├── hooks/ # Hooks específicos
│ └── loaders/ # React Router loaders
├── screens/ # Páginas completas
├── shared/ # Código reutilizável
│ ├── ui/ # Componentes genéricos
│ ├── hooks/ # Hooks genéricos
│ └── layouts/ # Layouts
└── app/ # Configuração router
page, pageSize, sortOrder (ASC/DESC), sortBy, statusFilterpendingtasks/swagger-ui/health para monitoramento/tasks)/settings)Task, CreateTaskInput, UpdateTaskInput)taskSchema - Definição de tarefacreateTaskSchema - Input para criar tarefapaginatedTasksResponseSchema - Resposta paginadapaginationQuerySchema - Parâmetros de paginaçãoAPI_PORT - Porta do servidor APIAPI_BASE_URL - URL base para requisições# Instalar dependências
bun install
# Executar API e Web simultaneamente
bun run dev
# Ou executar separadamente:
bun run dev:api # Porta 4000
bun run dev:web # Porta 5173
# Desenvolvimento (com hot-reload)
./rebuild-dev.sh
# Acessos:
# API: http://localhost:4000
# Web: http://localhost:5173
# Produção
./rebuild.sh
# Acessos:
# API + Web: http://localhost:4000
# Build da aplicação web
cd apps/web
bun run build
# Executar testes
bun test
| Método | Endpoint | Descrição |
|---|---|---|
GET | /api/v1/tasks | Listar tarefas com paginação e filtros |
POST | /api/v1/tasks | Criar nova tarefa |
PUT | /api/v1/tasks/:id | Atualizar título da tarefa |
PATCH | /api/v1/tasks/:id/complete | Marcar tarefa como completa |
DELETE | /api/v1/tasks/:id | Deletar tarefa |
Query Parameters (GET /tasks):
page - Número da página (padrão: 1)pageSize - Tamanho da página (padrão: 10, máx: 100)sortOrder - Ordenação (ASC | DESC)sortBy - Campo para ordenação (created_at | updated_at)statusFilter - Filtrar por status (completed | pending)| Método | Endpoint | Descrição |
|---|---|---|
GET | /api/v1/dashboard | Obter métricas e estatísticas |
| Método | Endpoint | Descrição |
|---|---|---|
POST | /api/v1/auth/register | Registrar novo usuário |
POST | /api/v1/auth/login | Login com email/password |
POST | /api/v1/auth/logout | Logout do usuário |
GET | /api/v1/auth/user | Obter usuário atual |
GET | /api/v1/auth/github | Login via OAuth GitHub |
| Método | Endpoint | Descrição |
|---|---|---|
GET | /health | Verificar saúde da API |
GET | /swagger-ui | Documentação interativa |
GET | /* | SPA fallback (produção) |
curl -X POST http://localhost:4000/api/v1/tasks \
-H "Content-Type: application/json" \
-d '{
"title": "Aprender Bun"
}'
curl "http://localhost:4000/api/v1/tasks?page=1&pageSize=10&sortOrder=DESC&statusFilter=pending"
curl -X PUT http://localhost:4000/api/v1/tasks/{id} \
-H "Content-Type: application/json" \
-d '{
"title": "Novo título"
}'
curl -X PATCH http://localhost:4000/api/v1/tasks/{id}/complete \
-H "Content-Type: application/json" \
-d '{
"id": "{id}",
"completed": true
}'
curl -X POST http://localhost:4000/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "password123"
}'
Selected from shared topics, language and repository description—not editorial ratings.
fernando-ss-soares /
Este é um projeto de API robusta e escalável desenvolvida com Bun e TypeScript, focada em alta performance e facilidade de manutenção.