You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# GymTracker 🏋️
A personal gym tracking PWA built with Blazor WebAssembly. Tracks workouts, bodyweight, and progression over time. Installs on your iPhone home screen for free — no App Store needed.
## Features
- **Log Workouts** — Pick exercises, enter sets/reps/weight, with auto-fill from your last session
- **Log Bodyweight** — Daily weigh-in with 7-day rolling average
- **History** — Browse and filter past workouts, expandable detail view
- **Progress Charts** — Bodyweight trend and per-exercise weight progression over time
- **Personal Bests** — Automatic PB tracking and estimated 1RM (Epley formula)
- **Exercise Library** — 27 pre-loaded exercises + add your own custom ones
- **Offline Support** — Works without internet once installed
- **All data stays on your device** — nothing is sent to any server
## Quick Start (Local)
```bash
# Prerequisites: .NET 8 SDK (https://dotnet.microsoft.com/download/dotnet/8.0)
dotnet restore
dotnet run
# Open https://localhost:5001 in your browser
```
## Deploy to GitHub Pages (Free)
1. **Create a GitHub repo** and push this code:
```bash
git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/YOUR_USERNAME/GymTracker.git
git push -u origin main
```
2. **Enable GitHub Pages**:
- Go to your repo → Settings → Pages
- Under "Source", select **GitHub Actions**
3. **Wait for the build** — check the Actions tab. Once green, your app is live at:
```
https://YOUR_USERNAME.github.io/GymTracker/
```
4. **Install on iPhone**:
- Open the URL above in **Safari**
- Tap the **Share** button (square with arrow)
- Tap **"Add to Home Screen"**
- Done! It now works like a native app with its own icon
## Project Structure
```
GymTracker/
├── Models/Models.cs # Data models (WorkoutSession, BodyweightLog, etc.)
├── Services/DataService.cs # Data persistence via browser localStorage
├── Pages/
│ ├── Index.razor # Dashboard
│ ├── LogWorkout.razor # Workout logging
│ ├── LogWeight.razor # Bodyweight logging
│ ├── History.razor # Workout history browser
│ └── Progress.razor # Charts and stats
├── Layout/MainLayout.razor # Shell with bottom tab navigation
├── wwwroot/
│ ├── index.html # Entry point with PWA meta tags
│ ├── manifest.json # PWA manifest
│ ├── css/app.css # Full dark-theme styling
│ ├── js/chart-interop.js # Chart.js integration
│ └── icons/ # PWA icons
└── .github/workflows/
└── deploy.yml # Auto-deploy on push to main
```
## Tech Stack
- C# / .NET 8 Blazor WebAssembly
- Blazored.LocalStorage (browser persistence)
- Chart.js (progression graphs)
- PWA (installable, offline-capable)
## Notes
- All data is stored in your browser's localStorage — clearing browser data will erase it
- Designed for mobile-first usage on iPhone but works on any device
- Units are in kg; to change to lbs, update the display strings in the `.razor` files
# gymtracker
# gymtracker