Workout-Cool – 오픈소스 피트니스 코칭 플랫폼

2 days ago 1

  • 운동 계획 생성진행 추적, 그리고 방대한 운동 데이터베이스 제공 기능을 포함
  • 이전 workout.lol의 실패 경험을 바탕으로 시작되어, 오픈소스 커뮤니티를 위한 지속 가능한 진화형 프로젝트를 목표로 함
  • Feature-Sliced Design 원칙과 Next.js 기반 아키텍처를 사용해, 기능별 독립성과 확장성, 그리고 코드 유지보수성을 강조함
  • 운동 데이터베이스는 CSV 파일로 손쉽게 가져오기가 가능하며, 다양한 운동 특성과 비디오, 주 타깃 근육 등 세부 정보를 포함함
  • 앞으로 모바일 앱, 배지/게임화, 웨어러블 연동, 커뮤니티 포럼 등 커뮤니티 참여를 기반으로 지속적으로 기능을 확장해 나갈 예정임

워크아웃쿨 개요 및 가치

  • 워크아웃쿨은 사용자가 맞춤형 운동 계획을 생성하고, 자신의 진행 상황을 기록하며, 풍부한 운동 데이터베이스(설명, 비디오 등 활용)까지 폭넓게 사용할 수 있는 최신 오픈소스 피트니스 코칭 플랫폼
  • 기존 workout.lol 프로젝트의 방치와 폐기를 직접 경험한 개발자가, 운동 커뮤니티를 위해 더욱 지속 가능하고 현대적인 오픈소스 피트니스 플랫폼으로 다시 태어나게 함

프로젝트 시작과 동기

  • workout.lol 프로젝트의 주요 기여자로서 영상 제공 파트너와의 협업 실패, 영상 라이선스 비용 문제 등으로 어려움을 겪음
  • 프로젝트가 타인에게 매각된 후 빠르게 폐기되어, 9개월 이상 새 소유자와 커뮤니케이션을 시도했으나 응답이 없음
  • 기존 프로젝트의 가치를 사장시키지 않고, 전체적으로 개선된 현대적인 플랫폼을 새롭게 구축하기로 결정함
  • 이 프로젝트는 상업적 목적이 아님. 오픈소스 커뮤니티에게 신뢰할 수 있는 유지 관리와 발전을 약속하는 진화의 의미를 가짐

커뮤니티 기반의 운영 철학

  • 개발자인 동시에 실사용자로서, 커뮤니티가 필요로 하는 기능과 경험을 직접 반영함
  • 과거 workout.lol 유저라면 환영, 신규 유저라면 미래형 피트니스 플랫폼의 가치를 경험할 수 있음
  • 누구나 직접 기여 및 개선 의견 제출 가능

운동 데이터베이스 및 가져오기

  • 프로젝트에는 풍부한 운동 데이터베이스가 탑재되어 있음
  • 예시용 CSV 형식으로, 각 운동의 id, 이름, 설명, 비디오 URL, 사진, 주 타깃 근육, 속성 등 다양한 정보를 커스텀하게 임포트 가능함
    • 주요 컬럼 예시: id, name, name_en, description, description_en, full_video_url, full_video_image_url, introduction, slug, attribute_name, attribute_value 등
    • 속성 타입 예시: TYPE(근력/유산소/플라이오메트릭스/스트레칭), PRIMARY_MUSCLE, SECONDARY_MUSCLE, EQUIPMENT, MECHANICS_TYPE 등
  • 한 줄 명령어로 데이터를 바로 import할 수 있어 데이터 확장성이 뛰어남

프로젝트 아키텍처

  • Feature-Sliced Design(FSD) 원칙을 적용한 Next.js App Router 기반
    • 각 기능별로 독립적이고 재사용이 쉬운 구조를 구현함
    • 명확한 도메인 계층 분리: shared → entities → features → widgets → app
    • UI, 비즈니스 로직, 데이터 계층의 일관성 유지
  • 파일 분리 예시:
    • app/ - Next.js 라우트 및 레이아웃
    • processes/ - 복합 비즈니스 플로우
    • widgets/ - 조립형 UI(예: Sidebar, Header)
    • features/ - 주요 단위(인증, 운동 관리 등)
    • entities/ - 사용자, 운동, 워크아웃 등
    • shared/ - 공통 코드 및 타입
    • styles/ - 글로벌 CSS/테마

개발 및 배포

  • Node.js 18+ 필요, PostgreSQL(Docker 혹은 직접 구축), pnpm 또는 npm 필요
  • 클론 후 의존성 설치, 환경 변수 설정, 데이터베이스 세팅(자동 또는 수동), 브라우저에서 http://localhost:3000 접속
  • 직접 데이터베이스 마이그레이션 및 개발 서버 실행 가능
  • Docker 이미지 빌드 및 컨테이너 실행 (예정)

예정 기능

  • 운동/비디오 추가
  • 모바일 앱(React Native 기반)
  • 게임화(배지 시스템 등)
  • 고급 진행 통계 및 시각화
  • 웨어러블(워치/트래커) 연동
  • 다국어 지원
  • OAuth 인증(구글, 애플 등)
  • 내장 커뮤니티 포럼

Read Entire Article