8P by GN⁺ 1일전 | ★ favorite | 댓글 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 인증(구글, 애플 등)
  • 내장 커뮤니티 포럼
Hacker News 의견
  • 여기서 내 앱 workout.lol을 보니 재밌는 감정 생김
    앱을 한 분께 팔았는데 그분이 그냥 방치해버리는 상황 겪음
    지원 필요하면 연락 달라고 여러 번 문자도 보냈지만 답장 한 번 못 받아봄
    그래도 다시 관리하고 계신 걸 보니 진짜 너무 기쁜 마음
    UI 개선도 훌륭, 정말 멋진 작업
  • Vincenius네!
    네 이름 뜨는 거 보면서 얼마나 기뻤는지 상상 못할 정도
    나도 별 소득 없이 프로젝트 멈춘 걸 지켜보며 마음이 무너지는 느낌 경험
    이런 게 결국 나로 하여금 모든 걸 다 갈아엎고, 네가 처음 시작할 때 보여줬던 오픈 마인드 유지하면서 재구축하게 만든 원동력
    UI 칭찬 고마움, 네 입장에서 이런 말 듣는 건 큰 의미
    혹시라도 돌아오고 싶으면 언제든 환영
    아이디어나 의견, 존재 자체만 있어도 큰 의미
  • 이거 정말 멋짐
    나는 Apple CalDAV(iCal)와 연동되는 자동 캘린더 스케줄링 API 작업 중
    목표를 중심으로 스케줄 관리 기능 만듦(Google ORTools로 초대형 CP-SAT 제약 모델 매우 빠르게 연산, 1년치 계산도 5초 이내 처리)
    영양 섭취 목표 맞춘 식단 기능도 같이 포함
    사실 이렇게 운동/트레이닝 플랜 시스템을 꼭 넣고 싶었는데 뭘 쓸지 감조차 없었음
    이제야 뭘 쓰면 될지 명확
    이 프로젝트 만들어줘서 고마움
  • 혹시나 해당 업계 사람이 무료 대안을 막고 싶어서 사버렸던 건 아닐지 궁금
    이번 프로젝트는 어떤 미래를 맞이할지 지켜보고 싶어짐
  • 나한텐 "error loading exercises"라는 안내 메시지가 뜸
    혹시 wger 프로젝트에 대한 생각은 어떤지 궁금
    https://github.com/wger-project는 FLOSS AGPL 라이선스 기반의 자가 호스팅 피트니스/운동/영양 관리 플랫폼
    거의 10년은 된 듯한데 django 앱 기반, 공식 flutter 앱도 있어 안드로이드/iOS/윈도우/리눅스/macOS에서 사용 가능
    여러 사용자 지원, 심지어 헬스장 운영에도 활용 가능
    body.build는 신생 FLOSS 프로젝트로 브라우저 기반, 웨이트 트레이닝 프로그램 구축에 중점
    body.build 저자 역시 wger에도 기여
    나는 오랜 시행착오 끝에 wger를 홈랩에서 잘 활용 중
    자가 호스팅 과정에 고려할 요소가 꽤 있지만 잘 동작
    가장 큰 단점은 운동 데이터베이스의 포괄성인데 다행히 기여자들이 조금씩 확장 중
    운동(및 운동 미디어) 데이터 기여 가능한 분 있다면 이 AGPL 프로젝트에서 분명히 고마워 할 것
  • 최근 Wget을 써봤는데 안타깝게도 추천은 못함
    웹사이트 UX가 최악이고 모바일 앱은(iOS에서) 버그 천지
    운동 시작/무게 수정/세션 기록 어디를 눌러도 계속 튕기거나 멈춤, 로그아웃 현상 반복
    지금은 LiftLog를 쓰고 있는데 내가 원하는 건 다 지원 및 FOSS
    https://github.com/LiamMorrow/LiftLog
    피트니스랑 웨이트 트레이닝이 요즘 흔한 취미임에도 쓸 만하고 유지 잘 되는 비상업적 앱이 거의 없는 점 신기
    수십 개 Github 프로젝트 직접 써보고 내린 결론
  • 같은 오류 발생
  • 나는 약 5년째 웨이트 하면서 오픈소스로 잘 구성된 툴을 보니 뿌듯
    경험 쌓이고 나면 앱의 기능보다 중요한 건 결국 얼마나 꾸준하게 기록해서 점진적 과부하를 관리하느냐임
    이 앱은 입문자가 시작하기에 좋은 선택
    더 넓게 쓰이려면 딱 2가지는 꼭 필요
  1. 모바일 앱(혹은 PWA, 내가 직접 만든 PWA도 네이티브 앱만큼 충분함)
  2. 특정 운동 루틴을 오랜 기간 저장 및 관리하는 기능
  • 이상적으로는 여러 UI 간에 데이터를 내보내고 공유할 수 있어야 함
    https://json-schema.app/view/…
  • 써보고 적는 고민인데 절대 OP를 깎아내리고 싶은 마음은 전혀 없음
    입문자한테 이런 앱이 좋은 선택일지엔 동의 못함
    노력엔 박수 보내지만 추천 운동 배열이 좀 걱정
    예: ‘등/이두’ 선택하면 9가지 운동이 무질서하게 나옴
    운동 순서나 배열에 대한 배려가 없음, 컴파운드 리프트가 한가운데 등장하거나 친업만 세 번 나오기도
    반복/세트/무게 관련 1RM 계산이 없고
    정석이 아닌 브로 스플릿 추천 및 오히려 더 산만
    장비 기준으로 최소 구성 PPL앱 만들면 이보다 훨씬 나을 수 있겠다는 생각
  • 체육관 쪽 경험자가 인정해준다니 정말 기분 좋은 느낌
    나도 마찬가지로 경험 쌓이면 결국 중요한 건 진짜 꾸준함 및 진행 상황 기록(나의 경우는 멘탈 관리 목적이라 이제는 성과보다 상태 확인에 중점)
    루틴 저장+장기 추적은 로드맵 포함
    그래서 'workout session' 아키텍처가 구 앱과 아예 다르게 설계
    사용자가 개별 트레이닝 블록을 만들고, 재사용·공유·분석·진화 최적 경험 가능하게 풀어가고 싶음
    혹시 너가 만든 PWA에서 이런 루틴 관리 어떻게 접근했는지 듣고 싶음
    비슷한 길 걸었던 것 같으니 꼭 공유 듣고 싶음
  • 혹시 데이터 소스가 궁금하다면 참고할 만한 프로젝트
    https://wrkout.xyz/ (이미지/비디오 포함 오픈 운동 데이터베이스 API)
    https://github.com/wrkout/exercises.json (오픈소스 운동 데이터셋)
    필요시 활용 추천
  • 예전에 wrkout.xyz 본 적 있는데 진짜 멋진 프로젝트
    이번엔 영상 관련 라이선스 문제 명확히 피하려고 파트너와 데이터셋을 완전히 처음부터 짬
    속성/번역 등 원하는 대로 모두 수정 가능하게 데이터 컨트롤 확보
    그렇지만 이쪽 분야에서 다양한 오픈 프로젝트 나오는 게 너무 기쁘고
    양 커뮤니티 모두 발전할 수 있다면 꼭 시너지 모색하고 싶음
    DM 환영
  • 이런 게 바로 진정한 컨트리뷰션
    아이디어만 던지는 게 아니라, 이미 데이터셋을 모아줘서 초보자도 바로 시작 가능
    정말 감사함
  • 솔직히 이 앱 생각보다 괜찮음
    내가 원하는 건 운동별 중량/반복 회수 추천 기능
    '100 Pushups'라는 피트니스 프로그램 참고하면 좋음
  • 벌칙으로 최대한 반복(예: 푸쉬업 8개 등)
  • 앱이 일정 생성(3, 4, 3, 3, 5 등 2분 쉬고 반복)
  • 사용자 수준에 따라 반복 횟수를 점진적, 조절형으로 추천
  • 6주차쯤 최대 100개를 달성하게 맞춰 움직임
    관심 있으면 UI 논의도 언제든 환영
  • 백엔드 포기하고 싶으면 AT Protocol 연동도 아이디어
    사용자 데이터는 전부 PDS에 저장, 별도 서버 불필요
    혹시 프로젝트가 다시 방치돼도 데이터가 영구적으로 작동
  • 아이디어에 완전 감탄
    이 앱 알고 있음, 진짜 단순하고 적응형 진행방식이 특히 초보 동기부여에 탁월
    자기조절~점진형 루틴 구현 UI 논의 꼭 해보고 싶음
    먼저 (조잡한) 알고리즘 생각해볼 테니 DM 주세요
  • 앱이 좋아 보이나 운동 가져오는 과정에서 오류 발생
    0:{"a":"$@1","f":"","b":"eETmgndxtv4Ar0i8Wync1"}
    1:{"serverError":"An unexpected error occurred."}
    요청 코드(상세 헤더와 정보 입력)까지 공유
  • 상세 리포트 고마움
    HN 트래픽 급증으로 서버가 예상외로 초토화
    안정화 및 버그 픽스 곧 예정
    테스트와 피드백, 다시 한 번 고마움
  • 여러 기술적 이슈를 겪었고, 이런 건 신생 프로젝트라 이해 가능
    근본적으로는 운동 추천 시스템이 피트니스 프로그램 설계의 핵심을 고려하고 있지 않음
    현 상태에서는 운동 프로그램 디자인 목적으로 사용 추천 어려움
    차라리 루틴 생성보다는 이미 다져진 운동 기록/루틴 템플릿 임포트에 집중하는 게 좋을 듯(이미 여기에 관심 보였던 것도 확인)
    내가 겪은 주요 이슈 목록
  1. 전신 운동 원했는데, 한 세션에 33개나 추천—비현실적
  2. 운동 선택이 근육별 3가지만 랜덤 배정, 다중 근육 타깃/적절 볼륨 배분은 무시
  3. 생소하거나 비효율적인 운동도 자주 추천
  4. 없는 장비도 추천됨, 나는 홈짐 유저라 기계 완전 배제해야 함
  5. 생소한 브랜드 장비 추천
  6. 장비 선택 바꿔도 운동 추천이 그대로 유지
  7. 추천된 운동 못 지우고 새 운동도 못 추가
  • 나도 비슷한 의견
    UI랑 설명은 진짜 좋은데 운동 선택이(있을 때조차도) 애매하거나 비합리적
    표준 프라이머리/세컨더리(바, 덤벨, 머신) 운동들만 데이터베이스에 다 넣고, 사용자들이 루틴 직접 만들게 하는 게 어떨지
    특정 운동 대체 옵션도 있으면 좋겠음
    이게 다 준비된 뒤에야 루틴 생성 구현, 그리고 실제 트레이너들이 피드백 주면 정말 좋을 듯
    가능한 장비는 심플/스탠다드하게, 브랜디드 머신은 최대한 배제
  • 이렇게 정성스러운 피드백 남겨줘서 진심으로 고마움
    이런 디테일한 의견이 이른 시점에서 특히 큰 힘
    운동 프로그램 로직이 지금은 정말 기초적
    트레이닝 원칙(볼륨, 동작 패턴, 회복주기, 컴파운드/아이솔레이션) 반영 아직 부족
    지금 버전은 진짜 '발견용'이지 똑똑한 코치는 전혀 아님
    이 사실을 UI에서 분명히 안내해야 할 것
    구체적 질문 답변
  1. 33개 추천된 건 완전 오버킬(웃음)
  2. 맞음, 현재 근육별 3개만 무작정 추천, 앞으로 논리 보강
  3. 컴파운드/아이솔레이션 등으로 분류, 주요/보조 근육/동작 패턴/저항 퀄리티, 인기 태그도 메타데이터 추가 작업 중
  4. 기계 제외 등 특정 장비 완전 배제도 옵션 추가 고민
    덤벨/철봉 있지만 케이블/머신은 안 쓰고 싶다는 니즈 충분히 이해, 이 부분 UI 구체화
  5. OK
  6. 장비 바꿔도 리스트 안 바뀌는 버그 있음, 곧 수정
    (지금은 2번 반복 필요, 렌더 문제)
  7. 루틴 전체 편집 곧 지원
    좋은 원칙에 따라 개선하고 싶음, 가능하다면 방향성 정하는 데 아이디어라도 함께했으면 함
  • 다른 분들이 ‘자세 교정’의 중요성 언급했는데, 혹시 오픈소스 컴퓨터 비전으로 자세/폼 체크해주는 기술이 있는지 궁금
    소비자용 하드웨어에서 직접 배포 및 사용 가능한 솔루션이면 더욱 관심 생김
  • 장비/근육 선택이 필수가 아니라면 더 좋겠음
    예를 들어, 나는 철봉이 있는데 어떤 근육을 운동할 수 있는지 몰라
    차라리 ‘입문 용이’ 필터 방식은 어떨지
  • 나 역시 이 부분 생각 안 했는데, 현 플로우가 초반에 너무 많은 지식을 요구
    다른 분들도 비슷한 피드백 주심
    필터 옵션을 선택 사항으로 바꾸고, '입문자 친화', '인기 운동', '칼리스테닉스' 등 추천 추가 예정
    알려줘서 고마움
  • 그럼 장비로 철봉만 선택하면 되지 않음?
  • 입문자로서 가장 먼저 느낀 건 근육 선택 UI의 화려함과 동시에 혼란
    초반 온보딩에서 근육 선택이 필수인데, 어떤 루틴이 어떤 근육을 타깃으로 하는지 모르는 초보 입장에서는 진입장벽
    "푸시", "풀", "레그" 정도는 대충 알지만, 구체적 근육명은 낯설기만
    결국 이 앱은 해부학을 공부할 사람만 쓰기에 맞춤
    조금이라도 더 쉽게 진입할 수 있을 방법 고민 필요
    예: 추천 근육 그룹, 프리셋
  • 솔직피드백 고마움
    지금 온보딩은 지식 가정이 너무 큼(예상보다 더 많음)
    초보들은 "후면 삼각근"이나 "광배"가 아니라 그냥 강해지고 싶고, 몸 좋아지고 싶을 뿐
    다음 업데이트에
  • 근육 선택 옵션화(혹은 건너뛰기)
  • 입문자용 프리셋(전신, 상체 등)
  • "가슴+삼두(푸시)", "등+이두(풀)" 등 도움말 라벨 프리셋 등
    처음부터 해부학 공부 안 해도 곧장 시작할 수 있는 친화적 경험 만드는 게 목표
    네 피드백이 진짜 큰 도움
    피트니스 여정 응원
  • '푸시' '풀'은 어렵게 느낄 수 있지만, '레그' 모르면 그건 너무 모르는 거 아닐지(조크)