← 프로젝트

제품HaeYoungLab (개인)2026.03 – 2026.07종료

PlanIT: 스크럼 주기를 시스템이 견인하는 협업 SaaS

며칠이면 끊기는 스크럼을 데일리·위클리·먼슬리 START/END 주기와 Slack 연동, 잔디·피드·미니룸으로 붙잡는 제품. 2026.10 종료.

PlanIT 메인
역할
제품 기획 · 풀스택 · 인프라 (주도)
함께
팀원 김민영 (활동 시각화 · 벡터화 · 에셋)
상태
2026.10 종료 · 가입 계정 10(본인·테스트 포함), 실사용자 0
기술
NestJS 11 · Prisma 7 · PostgreSQL 16 · Next.js 15 · React 19 · Tailwind · shadcn · FastAPI · Slack OAuth · Web Push · Resend · Docker Compose · Caddy · GHCR · Terraform · EC2 · Vercel
23
Prisma 모델 · 마이그레이션 16
90
HTTP 엔드포인트 · 모듈 15
145
테스트 케이스
3
언어 (ko · en · ja) · PWA

개인과 팀의 계획·회고가 도구마다 흩어지고 작성이 번거로워 며칠이면 끊깁니다. START/END 스크럼 주기를 시스템이 견인하고 Slack 연동, GitHub식 잔디, 팔로우·반응 피드, 2.5D 미니룸으로 지속을 유도하는 제품을 만들어 운영했습니다. 사용자는 모이지 않았고 2026.10에 내렸습니다.

상황

2025년 프로토타입에서 도메인 고정값(주기·START/END·공개 범위)과 Controller–Service 계층, Prisma 마이그레이션 흐름을 실험했고, 2026년 3월에 운영판을 새로 썼습니다. 6월에 팀·연동 기능을 걷어내 '개인 스크럼 전용'으로 피벗했다가, 7월에 어댑터 아키텍처로 연동을 다시 들였습니다.

한 일

  1. 01

    인증·보안 하드닝

    httpOnly 듀얼 토큰(access 메모리 + refresh rotation), 이메일 인증·비밀번호 재설정, rate-limit·helmet·trust proxy.

  2. 02

    연동 어댑터

    Slack OAuth 토큰을 AES-256-GCM으로 암호화 저장하고, 웹훅은 HMAC fail-closed와 멱등 처리로 받습니다. 팀 플랜·리포팅, 채널 바인딩, 리마인더·다이제스트 잡, 간트 API. 과거 구현의 결함 6건을 '복원 금지' 목록으로 남겼습니다.

  3. 03

    지속을 위한 장치

    팔로잉 피드·이모지 반응·알림·Web Push, 주간 회고 cron, 스트릭·업적 12종·포인트와 상점, 2.5D 미니룸(격자 투영·회전·테마·서버 검증), 검색·해시태그·OG 카드·통계, PWA, 3개 언어.

  4. 04

    배포

    GitHub Actions → GHCR 이미지 → EC2 systemd 타이머 2분 주기 pull-deploy(변경 시만 재기동, SSH 시크릿 불필요), Docker Compose(db · api · caddy), 부팅 시 prisma migrate deploy, Terraform으로 EC2·EIP·SG. dev/main 환경 분리.

결과

  • 모델 23 · 엔드포인트 90 · 테스트 145 · 3개 언어 · PWA까지 운영 가능한 형태로 구축.
  • 2026-10-23 종료: EC2·Vercel·Railway·DNS 정리, DB 덤프 보관. 재개 조건은 '본인이 2주 매일 쓰는가'.

정직하게 적어 두는 것

  • README가 표방한 Discord 연동은 enum만 있고 어댑터는 Slack만 구현됐습니다. 사용자는 모이지 않았습니다(가입 계정 10, 실사용 0).

화면

클릭하면 크게