SkillAgentSearch skills...

Strengthjourneys

A strength progress visual tracker and other support utilities for strength lifters, powerlifters, crossfitters and new lifters.

Install / Use

/learn @wayneschuller/Strengthjourneys
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Strength Journeys (strengthjourneys.xyz)

Interactive strength progress visualizations for barbell and other gym lifts

Strength Journeys is a free, open-source web app to visualize your barbell lifting data from Google Sheets. Privacy-first — no user data is stored on any server. All analysis happens client-side in your browser. Chalk not included.

Powerlifters and barbell weirdos will love this app, but our real target audience is the novice. If we can help someone start barbell training and keep them going for ten years, their life and their family will be transformed. Barbell strength training is one of the most effective things you can do for your health, longevity, and quality of life. Stronger people are harder to kill, more useful in general, and tend to live longer.

Features

Google Sheets as data source

Requires user data in a Google Sheet with columns: date, lift type, reps, weight (kg or lb). The app requests read-only access to your specific spreadsheet, which can be revoked at any time.

Open our sample data format in Google Sheets (click File menu, then 'Make A Copy').

Privacy

No user data is stored server-side. Google Sheet reads are authenticated via Google OAuth and requested through a Next.js API route proxy, then processed client-side in the browser. The app does not persist your lifting data in a database.

Tech stack

Framework & language:

UI & styling:

Data visualization:

Auth & data:

  • NextAuth.js v4 with Google OAuth
  • Google Sheets API for user lifting data (read-only)
  • SWR for data fetching and caching
  • Vercel KV for server-side storage (playlists, leaderboard)

AI features:

Content & SEO:

See package.json for the full list of dependencies.

Codebase structure (quick contributor map)

This repo has grown into a multi-tool lifting app (analyzer, visualizer, calculators, AI assistant, playlists, articles) that shares a common app shell and lifting-data pipeline.

  • src/pages/ — Next.js Pages Router routes (tool pages, article pages, API routes)
  • src/pages/_app.js — global providers + app layout wrapper (theme, auth, lifting data, athlete bio, timer)
  • src/components/ — feature UI and shared UI
  • src/components/analyzer/ — PR Analyzer dashboard cards
  • src/components/visualizer/ — charting + visualizer UI
  • src/components/ai-elements/ — composable chat UI building blocks used by the AI assistant
  • src/components/ui/ — shadcn/Radix-based primitives
  • src/hooks/use-userlift-data.js — central Google Sheets fetch/parse/cache context (SWR + demo mode + derived metrics)
  • src/lib/parse-data.js — normalizes raw Google Sheets rows into the app’s canonical lift-entry format
  • src/lib/processing-utils.js — shared processing/aggregation helpers (PRs, tonnage, timing logs, unit conversion)
  • src/pages/api/read-gsheet.js — authenticated Google Sheets + Drive metadata proxy
  • src/pages/api/auth/[...nextauth].js — NextAuth Google OAuth setup + token refresh
  • src/lib/sanity-io.js — Sanity CMS fetch helpers for article pages and related content

Core data flow (at a glance)

  1. User signs in with Google (next-auth) and picks a spreadsheet.
  2. use-userlift-data fetches /api/read-gsheet via SWR.
  3. API route reads Google Sheets + Drive metadata and returns JSON.
  4. parseData() normalizes rows into canonical lift entries.
  5. Shared derived metrics (PRs, tonnage, lift types, session lookups) are computed once in context and consumed by pages/cards.

Common contributor entry points

  • Build a new tool page (or improve an existing one): start in src/pages/<tool>.js, then add/adjust feature components under src/components/<feature>/
  • Improve parser tolerance for real-world spreadsheets (header variations, blank-row patterns, date/weight formats): src/lib/parse-data.js
  • UI polish and usability improvements (layout spacing, card composition, mobile tweaks, theme details): src/components/, src/components/ui/, src/styles/globals.css
  • Add import support for other lifting apps/export formats: branch from src/lib/parse-data.js, reuse src/lib/parse-turnkey-importer.js as an example, or add a new parser module under src/lib/

Branch strategy

  • stable — Production branch. Deploys to strengthjourneys.xyz.
  • main — Development branch. Deploys to a Vercel preview URL for testing. Has informative console logging of processing timings and any errors.
  • Feature branches are created from main and deleted after merging.

Project history

Strength Journeys unites and extends features from earlier projects by the same author:

  • onerepmaxcalculator.xyz — standalone one rep max calculator (predecessor to the current calculator page)
  • powerlifting_strength_tracker_js — the original E1RM visualization prototype built with vanilla JS and Chart.js, which evolved into the Strength Journeys visualizer

Related Skills

View on GitHub
GitHub Stars14
CategoryCustomer
Updated4h ago
Forks1

Languages

JavaScript

Security Score

95/100

Audited on Apr 1, 2026

No findings