간단한 Task 관리 REST API입니다. Bun + Hono + Drizzle ORM(PostgreSQL) 기반이며 OpenAPI 스펙과 테스트용 Docker Compose를 제공합니다.
- Runtime: Bun
- Framework: Hono (+ stoker OpenAPI helpers)
- ORM: Drizzle ORM + postgres-js
- DB: PostgreSQL
- Validation: Zod (stoker 스키마)
- Tests: Bun test (or Vitest 호환) + hono/testing
- Infra: Docker Compose (테스트용)
src/db/index.ts— postgres-js 클라이언트와 Drizzle 인스턴스src/db/schema.ts— Drizzle 테이블 스키마 정의src/routes/tasks/— Task 라우트 정의 (*.route.ts)와 핸들러 (tasks.handler.ts)src/routes/tasks/tasks.index.ts— 라우터 묶음src/routes/tasks/tasks.test.ts— hono/testing 기반 통합 테스트docker-compose.test.yml— 테스트용 PostgreSQL
.env (커밋 금지) 또는 CI/배포 환경 변수로 설정하세요.
DATABASE_URL=postgresql://user:password@localhost:5432/taskdb
NODE_ENV=development
예시 공유용 .env.example를 만들어 두세요.
bun install(실제 스크립트는 package.json을 확인하세요)
bun run devbun run db:generate # SQL 생성 (drizzle-kit)
bun run db:migrate # 마이그레이션 적용GET /tasks— 전체 목록POST /tasks— 생성{ name: string; done?: boolean }GET /tasks/:id— 단건 조회PATCH /tasks/:id— 부분 수정{ name?: string; done?: boolean }DELETE /tasks/:id— 삭제
curl -X POST http://localhost:3000/tasks \
-H "content-type: application/json" \
-d '{"name":"Learn Bun","done":false}'
curl http://localhost:3000/tasks테스트는 Docker로 별도 Postgres를 올린 뒤 실행합니다.
docker compose -f docker-compose.test.yml up -d --wait
bun test
docker compose -f docker-compose.test.yml down -v- PR 전에
bun test통과 - 마이그레이션 추가 시
drizzleSQL도 커밋 - 비밀 키는
.env에만 두고.env.example로 목록 공유