Issue
작업 유형
작업 내용
- 사이드 프로젝트 스프린트 보드(스프린트/백로그/칸반/진행률·벨로시티 차트)를 Mock에서 실제 Supabase(
sprints, tasks) 연동으로 전환한다.
- 읽기:
get_sprints RPC + tasks 조회 → 매퍼 → useQuery 훅. 소비 컴포넌트는 RSC → client 전환.
- 쓰기: 폼/DnD →
useMutation(mutationFn = server action) + invalidateQueries.
작업 배경
- 스프린트 보드는 현재
*.mock.ts 배열을 api/get-*.ts가 동기적으로 필터링해 반환하는 구조다. DB 스키마(sprints, tasks)는 준비되어 있으나 프론트가 미연결이다.
docs/conventions/supabase-convention.md를 기준으로 진행한다.
To Do
Epic 1. 엔티티 enum 파생 + 읽기 매퍼
Epic 2. get_sprints RPC (집계, 테이블 불변)
Epic 3. 읽기 fetch 함수 Supabase 전환
Epic 4. useQuery 훅 + 소비 컴포넌트 client 전환
Epic 5. 쓰기 경로 — server action + useMutation
완료 기준
참고 자료
- 컨벤션:
docs/conventions/supabase-convention.md
- 읽기 선례:
entities/workspace/api/{get-my-workspaces.ts, use-my-workspaces.ts} (fetch fn + useQuery 훅)
- 쓰기 선례:
entities/workspace/api/create-workspace.ts (server action) — 트리거는 이 이슈에서 useMutation으로 진행
- 매퍼 선례:
entities/workspace/model/{purpose.mapper.ts, workspace.db.types.ts}, shared/model/supabase.types.ts(GenericTables<>)
- 대상:
entities/side-project/{sprint,task}, views/side-project/progress-chart, features/sprint-board
예상 브랜치명
feat/#41/side-project-sprint-backend
Issue
작업 유형
작업 내용
sprints,tasks) 연동으로 전환한다.get_sprintsRPC +tasks조회 → 매퍼 →useQuery훅. 소비 컴포넌트는 RSC → client 전환.useMutation(mutationFn = server action) +invalidateQueries.작업 배경
*.mock.ts배열을api/get-*.ts가 동기적으로 필터링해 반환하는 구조다. DB 스키마(sprints,tasks)는 준비되어 있으나 프론트가 미연결이다.docs/conventions/supabase-convention.md를 기준으로 진행한다.To Do
Epic 1. 엔티티 enum 파생 + 읽기 매퍼
Epic 2.
get_sprintsRPC (집계, 테이블 불변)Epic 3. 읽기 fetch 함수 Supabase 전환
Epic 4. useQuery 훅 + 소비 컴포넌트 client 전환
Epic 5. 쓰기 경로 — server action + useMutation
완료 기준
GenericEnums로 파생되어 리터럴 중복 정의가 없다npm run tsc(타입체크) 통과, DB 테이블 스키마 변경 없음(읽기 RPC만 추가)참고 자료
docs/conventions/supabase-convention.mdentities/workspace/api/{get-my-workspaces.ts, use-my-workspaces.ts}(fetch fn + useQuery 훅)entities/workspace/api/create-workspace.ts(server action) — 트리거는 이 이슈에서 useMutation으로 진행entities/workspace/model/{purpose.mapper.ts, workspace.db.types.ts},shared/model/supabase.types.ts(GenericTables<>)entities/side-project/{sprint,task},views/side-project/progress-chart,features/sprint-board예상 브랜치명