Skip to content

Repository files navigation

Task API

간단한 Task 관리 REST API입니다. Bun + Hono + Drizzle ORM(PostgreSQL) 기반이며 OpenAPI 스펙과 테스트용 Docker Compose를 제공합니다.

Stack

  • 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 dev

마이그레이션

bun run db:generate   # SQL 생성 (drizzle-kit)
bun run db:migrate    # 마이그레이션 적용

API 개요 (Tasks)

  • GET /tasks — 전체 목록
  • POST /tasks — 생성 { name: string; done?: boolean }
  • GET /tasks/:id — 단건 조회
  • PATCH /tasks/:id — 부분 수정 { name?: string; done?: boolean }
  • DELETE /tasks/:id — 삭제

예시 (curl)

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 통과
  • 마이그레이션 추가 시 drizzle SQL도 커밋
  • 비밀 키는 .env에만 두고 .env.example로 목록 공유

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages