# Third-Party Notices

## Exercise data — hasaneyldrm/exercises-dataset

The exercise names, categories, target/muscle-group data, equipment labels, and
English/Hindi step-by-step instructions used in the RM Exercise Library
(`/exercises/`) are sourced from:

> **exercises-dataset** by Hasan Emir Yıldırım
> https://github.com/hasaneyldrm/exercises-dataset

### License

```
MIT License

Copyright (c) 2026 Hasan Emir Yıldırım

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation and data files (the "Software"),
to deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```

This MIT license covers **only** the text/metadata fields listed above. It does
**not** cover the dataset's images or animation GIFs.

### Media exception — NOT used on this site

The upstream repository's `images/` and `videos/` folders (exercise thumbnails
and animation GIFs) are © [Gym Visual](https://gymvisual.com/) and are **not**
MIT-licensed. RM Fitness Club does not have a Gym Visual license.

**None of that media is used anywhere on rmfitnessgym.in.** The build script
(`scripts/build-exercise-library.mjs`) never reads the upstream `images/` or
`videos/` folders and strips the `image`, `gif_url`, `media_id`, and
per-exercise `attribution` fields from every record it processes. All
demonstration photos/videos on this site are either RM Fitness Club's own
(trainer-recorded) or explicitly credited separately if sourced elsewhere.

### What we changed

- Selected 45 of the upstream dataset's 1,324 exercises, chosen to match
  equipment actually available at RM Fitness Club (see
  `data/rm-approved-exercises.json`).
- Kept only English and Hindi instruction text (upstream also includes
  Spanish, Italian, Turkish, Russian, Chinese, Polish, Korean, French — not
  used here).
- Added RM-specific fields not present in the upstream data: `availableAt`
  (branch availability), `trainerApproved`, `coachTip`, `commonMistake`,
  `difficulty`. These are empty/false until an RM trainer (Rahul, Rohit, or
  Sachin) reviews the exercise — see the build script and
  `data/rm-approved-exercises.json` for the current review status of each
  entry.
- Did not include the `difficulty` classification from any source other than
  RM's own trainers, since the upstream dataset does not provide one.

### Pinning

The upstream repository is cloned locally (outside this project's deployed
files) at build time and is not automatically re-fetched or auto-updated.
Re-running the build against a newer upstream commit is a deliberate,
separate step.

## Search — Fuse.js

`assets/fuse.min.js` is [Fuse.js](https://fusejs.io) v7.2.0 by Kiro Risk,
used for typo-tolerant search across the exercise library. Licensed under the
Apache License 2.0 (https://github.com/krisk/Fuse/blob/main/LICENSE),
self-hosted here rather than loaded from a CDN so the site's Content-Security-
Policy doesn't need to allow third-party script origins.

## Gallery lightbox — PhotoSwipe

`assets/photoswipe/` is [PhotoSwipe](https://photoswipe.com) v5.4.4 by
Dmytro Semenov, used for the click-to-zoom lightbox on the facility gallery
and trainer portraits. Licensed under the MIT License
(https://github.com/dimsemenov/PhotoSwipe/blob/master/LICENSE), self-hosted
for the same CSP reason as Fuse.js above.
