OpenTrailPaper
LilyGO T5S3 4.7" E-Paper PRO용 오픈소스 자전거 컴퓨터 펌웨어, 오프라인 지도·GPX 경로·FIT 기록·블루투스 센서 지원
Hammer Strength, Panatta, Prime 등 다양한 브랜드의 근력 기계를 검색·비교해볼 수 있습니다
Search and compare strength machines from Hammer Strength, Panatta, Prime, Newtech, Watson, Atlantis, Nautilus and more, including vintage legends.
스포츠·피트니스TypeScript · CSSGitHub @Diddyoss온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Live preview: https://diddyoss.github.io/Atlas/
A dark, black-and-white, industrial compendium for comparing strength equipment, built for gym goers and bodybuilders.
1,600+ machines from 24 brands, 97% with photos. About 80 are hand-reviewed; the rest come from manufacturer and dealer catalogues and have estimated profiles.
Active brands: Panatta, Gymleco, gym80, Nautilus, Newtech, Atlantis, Arsenal Strength, Precor, Hammer Strength, Hoist, Prime Fitness, Technogym, Life Fitness, Watson, Matrix, Rogue and Eleiko.
Vintage vault. Out-of-business brands (Flex, classic Cybex, classic MedX, Icarian, Bodymasters, Nebula, classic Universal) and discontinued lines from active brands, such as the original Nautilus Pullover. Filter them in or out with the Era control, or open /vintage.
Search by name, brand, series or alias ("hammer row", "blue monster").
Search by function: tap muscles on the front/back body map (a label names each muscle on hover or tap), or filter by movement pattern, loading type, iso-lateral design or hand-reviewed only. Filters live in the URL, so any search can be shared.
Compare up to 4 machines:
Build your gym (/build): pick a fictional budget (S$40k garage to S$1M flagship, or custom) and fill a gym floor. The live score (0–100, graded S–D) is built from seven categories:
Piling up one movement pattern costs points. The score card gives tips and suggests best-value additions. Builds are saved in your browser and shareable by link.
Singapore prices on every machine (lib/pricing.ts):
Machine pages: the resistance profile (including Prime's adjustable SmartCam settings), muscles worked, feel and accessibility scores, pros/cons, sources, and voting.
Motion everywhere. Shutter page transitions, stencil text reveals, self-drawing curves, spring-loaded compare tray, brand marquee, scroll reveals. All of it respects prefers-reduced-motion.
data/community.db) when the server runs. The static GitHub Pages preview has no server, so votes there are saved only in the visitor's browser.Requires Node 24 or newer (uses the built-in node:sqlite).
npm install
npm run dev # http://localhost:3000
npm test # vitest unit tests
npm run validate # schema-check the catalogue and report missing photos
npm run typecheck
npm run build && npm start
npm run discover builds most of the catalogue. It reads public product feeds and catalogue pages, keeps the strength machines, and downloads a photo for each:
| Brand | Source |
|---|---|
| Prime, Hoist, Gymleco | the brands' own Shopify stores |
| Hammer Strength, Life Fitness | lifefitness.com catalogue |
| Atlantis | atlantisstrength.com |
| gym80 | gym80.de API |
| Nautilus | Core Health & Fitness store |
| Newtech | ntws.co.kr |
| Panatta | Primo Fitness (US dealer; panattasport.com blocks automated access) |
| Arsenal Strength | Performaxx (AU distributor) |
| Watson | Gym Equipment UK |
| Vintage Cybex, Icarian and Nautilus; Precor; Technogym; Matrix | Fitness Superstore and Global Fitness (remanufactured listings; precor.com renders its catalogue client-side) |
npm run discover # all sources
npm run discover -- --only panatta # one source (others reuse their cached results)
npm run discover -- --from-cache # re-process without fetching product lists again
npm run validate
How it works:
scripts/discover/classify.ts). Accessories, cardio and parts are dropped.data/templates.ts) with small brand nudges. It is labelled "Estimated" in the UI and can be hidden with the Hand-reviewed only filter.Machines without a photo of their own get an openly licensed Wikimedia Commons photo of the same kind of machine. This covers most MedX, Bodymasters, Nebula, Universal and Flex models. Run npm run stock to pick these; they are tagged "Similar machine" and credited to their authors. npm run scrape -- --brand <slug> --fallback-only retries the dealer pages cited on curated machines.
Every photo is credited with a link to its source page. Product photos belong to their owners. They are included here for a personal, non-commercial comparison project.
.github/workflows/pages.yml runs validation and tests on every push to main, then builds a static export (STATIC_EXPORT=1) with the repository name as the base path. API routes are left out of the static build. To enable it:
main (or run the workflow manually). The site appears at https://diddyoss.github.io/Atlas/.For the full experience, including shared community votes and the leaderboard, run the server build (npm run build && npm start) on any Node host with a persistent disk.
app/ routes: home, catalogue, equipment/[slug], brands, vintage, compare, api/*
components/ UI: BodyMap, CatalogueBrowser, CompareView, ResistanceCurve, FeelRadar, …
data/brands.json brand records (status: active | defunct)
data/equipment/*.ts curated machine data (type-checked, validated with Zod)
data/scraped/ scraper output, merged in at build time (curated fields always win)
lib/ types, search, compare helpers, SQLite access, vote validation
scripts/ validate, scrape, flatten-export
tests/ vitest