世界を動かす技術を、日本語で。

Workout.cool – オープンソースのフィットネスコーチングプラットフォーム

概要

workout.cool は、オープンソースの フィットネスコーチングプラットフォームトレーニングプラン作成、進捗管理、豊富な エクササイズデータベース を提供。 workout.lol の後継として、信頼性と現代的な設計で再構築。 コミュニティ主導 で開発、貢献やアイデア提案も歓迎。 MITライセンス で公開、誰でも利用・参加可能。

workout.cool プロジェクト概要

  • workout.cool は、個人やトレーナー向けの フィットネスプラットフォーム
  • ワークアウトプラン作成、進捗トラッキング、詳細な エクササイズデータベース 利用可能
  • 各エクササイズには 動画デモ ・説明文付き
  • オープンソース で透明性・拡張性を重視
  • コミュニティの声 を反映した開発体制

プロジェクト誕生の経緯・動機

  • 元プロジェクト workout.lol の主要コントリビューターとして活動
  • 動画パートナー問題 で信頼できる動画プロバイダー確保できず、事業売却
  • 新オーナーも 動画ライセンス費用高騰 で放棄
  • 9ヶ月間、新オーナーへ 再接触を試みたが音信不通
  • 貴重な資産を埋もれさせないため、 workout.cool として新たに開発を決意
  • 利益目的ではなく、コミュニティのため に進化版を提供

コミュニティへの想い

  • 開発者でありユーザー としての立場から、ツール消滅の悔しさを体験
  • 進捗記録やルーチン が消失した多くのユーザーのために再建
  • Rescue & Revive のミッション
  • 旧workout.lolユーザーも新規参加者も歓迎
  • 信頼できるOSSフィットネス基盤 の実現

クイックスタート

  • 前提条件

    • Node.js 18以上
    • Docker または外部PostgreSQL
    • pnpm(推奨)またはnpm
  • インストール手順

    • リポジトリをクローン
    • 依存パッケージをインストール(pnpm install)
    • .envファイル作成し、必要な環境変数を入力
    • データベース初期化(Dockerならmake init、手動ならPrismaコマンド実行)
    • ブラウザで http://localhost:3000 にアクセス

エクササイズデータベースのインポート

  • CSVファイル でエクササイズ情報を一括インポート可能
  • 必要カラム:id, name, name_en, description, description_en, full_video_url など
  • コマンド例:
    • pnpm run import:exercises-full /path/to/your/exercises.csv
    • サンプルデータも提供
  • 属性種別 例:TYPE(STRENGTH等)、PRIMARY_MUSCLE(QUADRICEPS等)、EQUIPMENT(BARBELL等)

プロジェクトアーキテクチャ

  • Feature-Sliced Design(FSD)Next.js App Router を採用

  • ディレクトリ構成:

    • app/(ページ・ルーティング)
    • processes/(複数機能の業務フロー)
    • widgets/(Sidebar等の再利用UI)
    • features/(認証・エクササイズ管理等の業務単位)
    • entities/(user, exercise, workout等のドメイン)
    • shared/(共通UI、ライブラリ、型定義)
    • styles/(CSS・テーマ)
  • 設計原則

    • 各機能は独立・再利用可能
    • ドメインごとに明確に分離
    • ビジネスロジック・UI・データ層の一貫性

今後のロードマップ

  • 新エクササイズ・動画追加
  • モバイルアプリ(React Native)
  • バッジ・ゲーミフィケーション
  • 高度な進捗統計
  • ウェアラブル連携
  • 多言語対応
  • OAuth認証(Google, Apple等)
  • コミュニティフォーラム統合
  • Issueで アイデア提案 歓迎

コントリビュート方法

  • 貢献ガイド 参照
  • 開発フロー:
    • リポジトリをフォーク
    • フィーチャーブランチ作成
    • 変更をコミット・プッシュ
    • プルリクエスト作成
  • コードスタイル
    • TypeScriptベストプラクティス
    • Feature-Sliced Design遵守
    • 意味のあるコミットメッセージ
    • 新機能にはテスト追加

デプロイ方法

  • Docker利用(準備中)
    • docker build -t workout-cool .
    • docker run -p 3000:3000 workout-cool
  • 手動デプロイ
    • pnpm build
    • データベースマイグレーション(npx prisma migrate deploy)
    • 本番サーバ起動(pnpm start)

参考リソース

  • Feature-Sliced Design
  • Next.js Documentation
  • Prisma Documentation
  • Better Auth

ライセンス

  • MITライセンス
  • LICENSEファイル参照

サポート・スポンサーシップ

  • GitHubスター で応援
  • Issue報告・機能提案 で改善参加
  • 開発貢献 も大歓迎
  • 寄付・スポンサー で継続的な運営支援
    • サポーターはREADMEやWebサイトに掲載
    • ホスティング・データベース更新・機能拡張費用に活用
  • workout.cool の進化を共に支えるコミュニティ

Hackerたちの意見

workout.lolっていうオープンソースのフィットネスアプリのメインの貢献者だったんだ。簡単にワークアウトルーチンを作れるやつね。プロジェクトは結構人気があって(GitHubで1.4kスター、95フォーク、月に約2万回の訪問)、でも動画のライセンスの問題で結局売却しちゃったんだ。新しいオーナーはメンテナンスをやめちゃって、リポジトリは放置されることに。次の9ヶ月間、15通のメールを送って助けようとしたけど、全然返事がなかった。機能リクエストや問題も無視されて、コミュニティは「壊れた」ツールを抱えることになった。そんなの放っておけなかったから、同じオープンソースの精神で新しいバージョンをゼロから作り直したんだ。もっと良いアーキテクチャや長期的なビジョン、機能も増やして、ライセンスの問題も解決したよ。新しい名前はWorkout.cool(https://workout.cool)だ。提供するものは:100%オープンソース、MITライセンス、1200以上のエクササイズ(動画、属性、翻訳付き)、進捗トラッキング、多言語対応、自己ホスティング可能。お金のためにやってるわけじゃなくて、オープンフィットネスツールを信じてるし、15年以上筋トレに情熱を注いできたから。もし共感してくれたら、ぜひ: - リポジトリにスターを付けて - フィットネスやテックの友達とシェアして - 機能を提案して - コードやデザイン、ドキュメントに貢献して 一緒に、簡単にワークアウトルーチンを作って体を鍛えられるオープンソースフィットネスプラットフォームを作ろう! ウェブサイト: https://workout.cool GitHub: https://github.com/Snouzy/workout-cool

わお、これめっちゃいいツールだね!筋肉の選択ができるのが、今のアプリストアの80%以上のアプリよりもずっと役に立つよ。

期待できそうだね。エクササイズを取得しようとしたらエラーが返ってきた:0:{"a":"$@1","f":"","b":"eETmgndxtv4Ar0i8Wync1"} 1:{"serverError":"予期しないエラーが発生しました。"} リクエスト内容:curl 'https://workout.cool/' \ -H 'accept: text/x-component' \ -H 'accept-language: en-US,en;q=0.9,pl-PL;q=0.8,pl;q=0.7' \ -H 'cache-control: no-cache' \ -H 'content-type: text/plain;charset=UTF-8' \ -b 'Next-Locale=en; fbp=fb.1.1750253718188.954698194752805529' \ -H 'next-action: 7f80b017f78704b00d2411aebde5ba8318b475de6d' \ -H 'next-router-state-tree: %5B%22%22%2C%7B%22children%22%3A%5B%5B%22locale%22%2C%22en%22%2C%22d%22%5D%2C%7B%22children%22%3A%5B%22__PAGE_%22%2C%7B%7D%2C%22%2F%22%2C%22refresh%22%5D%7D%2Cnull%2Cnull%2Ctrue%5D%7D%5D' \ -H 'origin: https://workout.cool' \ -H 'pragma: no-cache' \ -H 'priority: u=1, i' \ -H 'referer: https://workout.cool/' \ -H 'sec-ch-ua: "Google Chrome";v="137", "Chromium";v="137", "Not/A)Brand";v="24"' \ -H 'sec-ch-ua-mobile: ?1' \ -H 'sec-ch-ua-platform: "Android"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: same-origin' \ -H 'user-agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Mobile Safari/537.36' \ --data-raw '[{"equipment":["PULLUP_BAR","BANDS","BODY_ONLY"],"muscles":["TRAPS","BACK","SHOULDERS","TRICEPS","FOREARMS","GLUTES","HAMSTRINGS","CALVES"],"limit":3}]'

ちょっと気になったんだけど、今は動画に問題がないのはどうして?確かにYouTubeの動画を埋め込んでるだけだけど、彼らがそれを削除することを防ぐものは何?オープンライセンスのワークアウトムーブメントアニメーションって本当にないの?正直、初心者向けのアニメーションプロジェクトとして面白そうだね。

大好き!筋肉群を最初に選べるオプションがあったらいいな、つまり器具を選ぶ前にね。それに、特定の筋肉群に対して利用可能なすべてのエクササイズを見ることができれば、もっと体験をカスタマイズできると思う。

これやってくれてありがとう!最近、workout.lolをもっと良くしようと思って見てたんだけど、何があったのか気になってたんだ。いくつか改善案があって、元のリポジトリにまだオープンなPRがあると思うから、それを移植するつもり。

ちょっと気になったんだけど、元のプロジェクトがオープンソースだったなら、なんでゼロからやり直すことにしたの?

すごい!あなたは伝説だ!ありがとう!

もう二度と売らないって保証はあるの?

これいいね!約5年間筋トレしてるけど、ウェイトリフティング用のしっかりしたオープンソースツールが見られて嬉しい。今まで試したアプリの主な問題は、経験を積むとアプリの派手さはあまり関係なくなって、結局気になるのは進捗のトラッキングだけになっちゃうこと。ウェイトリフティングを始めたい人には良いアプリだと思う。もっと広く使われるためには、2つの主要な要素が必要だと思う。1. モバイルアプリ(またはPWA、個人的に使ってたPWAのワークアウトアプリは、試したネイティブアプリと同じくらい良かった) 2. 特定のワークアウトをルーチンとして保存して、長期間トラッキングできる方法。

これを書くのをためらってるんだけど、OPに反論したくないから、でもこれがウェイトリフティングを始めたい人にとって良い選択肢だとは思えない。誰にとっても良い選択肢かどうかもわからない。OPの努力には拍手を送りたいけど、これはかなりひどいワークアウトを勧めてると思う。例えば、背中と二頭筋を選ぶと、順番や他のエクササイズのことを全く無視して、9つの異なるエクササイズを提案してくる。なぜコンパウンドリフトがワークアウトの真ん中にあるのか、なぜ3種類のチンアップをやらなきゃいけないのか。レップ数やセット数も計算されてないし、ウェイトの1RMパーセンテージもない。ブロースプリットは使えるルーチンの中で質が最も低いもので、これがさらに悪化させてる。これを全部取り替えて、派手さを取り除いて、利用可能な器具に基づいてエクササイズを決定するシンプルなPPLアプリを作れば、これよりも遥かに良くなると思う。

今のところうまく動いてないみたいで、「エクササイズの読み込みエラー」が出てる。wgerプロジェクトについてどう思う?[0] これはFLOSS AGPLライセンスの自己ホスティング型フィットネス/ワークアウト/栄養管理ツールで、もう10年近く存在してると思う(多分?)。Djangoアプリで、Android/iOS/Windows/Linux/macOSで動くFlutterアプリもあるよ。複数ユーザーをサポートしていて、ジムの運営にも使えるかもしれない。Body.build [1]は新しいFLOSSプロジェクト(ブラウザベース)で、ウェイトリフティングプログラムの構築に焦点を当ててる。Body.buildの作者もwgerに貢献してる。自分のホームラボでwgerを使ってるけど、自己ホスティングプロセスにはいろいろな要素があって大変だけど、うまく動いてるよ。彼らのエクササイズデータベースの包括性が最大の制限だと思うけど、それは多くの人が認識していて、徐々に拡張してる。もし誰かがこのAGPLライセンスのプロジェクトにエクササイズ(とエクササイズメディア)を貢献してくれたら、絶対感謝されるよ! [0]: https://github.com/wger-project [1]: https://github.com/Dieterbe/body.build

私も同じエラーが出たよ。

器具と筋肉の選択が必須じゃなかったらいいな。例えば、懸垂バーは持ってるけど、どの筋肉を鍛えられるか全然わからないんだ。初心者向けのエクササイズでフィルターかけさせてくれたらいいのに。

じゃあ、器具として懸垂バーを選ぶべきだよね?

あなたのデータソースが何かはわからないけど、以下のものを使ってるよ: - https://wrkout.xyz/ (画像と動画付きのエクササイズデータベースAPI) - https://github.com/wrkout/exercises.json (オープンソースのエクササイズデータセット) もし興味があれば、役に立つかも。

ここで見ると面白いね。俺が workout.lol の元の作者なんだ。アプリを売った相手は、どうやら放置しちゃったみたい。サポートが必要か何度も連絡したんだけど、返事がなかったんだ。再びメンテナンスされてるのを見ると本当に嬉しい!UIの改善、素晴らしい仕事だね。

おお!ヴィンセニウス!!君の名前を見たとき、どれだけ嬉しかったかわからないよ、あはは。運がないのは同じだね。プロジェクトが停滞してるのを見るのは本当に心が痛んだ。それが俺を再構築する気にさせたんだ、君が最初から持ってたオープンな精神を保ちながらね。UIについての優しい言葉、ありがとう。君からの言葉はすごく意味があるよ。もしまた戻りたいと思ったら(元のプロジェクトを売ったから難しいのはわかるけど)、いつでも歓迎だよ。君の意見やアイデア、ただいるだけでもすごく大事だよ!乾杯!

数ヶ月前からトレーナーなしでトレーニングを始めたし、肩の怪我のリハビリもしてる。今日は、他の初心者とは違って、特定の筋肉や筋群をターゲットにすることの利点がわかるようになったよ。追加したい機能リクエストがあって、ジムごとに利用可能なエクササイズをフィルターできるようにしてほしい。アイロニックに、Planet Fitnessは初心者にはすごく不親切で、提供してるものも限られてるんだ。みんなが自分のジムでできるエクササイズを追加して、データベースを増やせたらいいな。逆に、初心者のホームジムの人たちが、どのマシンやウェイトを買うべきか計画するのにも役立つと思う。

すごいツールだね。シェアしてくれてありがとう!

ワークアウトを作ろうとしたらエラーが出た。けど、役に立ちそうだね!旅行中は、地元のジムが手頃な価格を提供していないときはバンドしか持ってないし、同じ3つのワークアウトを繰り返すのは飽きちゃうんだ。