
Tactical Barbell Tracker - A modern Svelte 5 application for tracking strength training, cardio workouts, and training blocks following the Tactical Barbell methodology. Built with TypeScript and Vite, ready for deployment on Cloudflare Pages.
- Training Block Management: Organize workouts into structured training blocks (Endurance, Powerbuilding, Strength, Bodybuilding)
- Comprehensive Workout Tracking: Support for strength, hypertrophy, LISS cardio, HIIT, rest, and deload workouts
- Exercise Database: Track 1RM and 10RM personal records with automatic weight calculations
- Smart Warm-up Sets: Automatically calculated warm-up progressions for strength workouts
- Rest Timer: Built-in timer with notifications and extend options
- Workout History: Complete tracking of all completed workouts
- Drag & Drop Planning: Reorder training blocks with intuitive drag-and-drop interface
- Responsive Design: Works seamlessly on desktop and mobile devices
- Node.js 18.0.0 or higher
- npm (comes with Node.js)
-
Clone the repository:
git clone https://github.com/Bruno-366/Unbroken.git cd Unbroken
-
Install dependencies:
npm install
-
Start the development server:
npm run dev
-
Open your browser and navigate to
http://localhost:5173
npm run dev
- Start development servernpm run build
- Build for productionnpm run preview
- Preview production build locallynpm run lint
- Run ESLintnpm run lint:fix
- Run ESLint with auto-fixnpm run type-check
- Run Svelte type checking
- Svelte 5 - Modern reactive framework with runes for state management
- TypeScript - Type safety and enhanced developer experience
- Vite - Build tool and dev server with hot module replacement
- Tailwind CSS - Utility-first CSS framework for responsive design
- ESLint - Code linting and quality enforcement
- Tactical Barbell Methodology - Structured training approach for strength and conditioning
-
Connect Repository to Cloudflare Pages:
- Go to Cloudflare Pages
- Click "Create a project"
- Connect your GitHub account
- Select the
Bruno-366/Unbroken
repository
-
Configure Build Settings:
- Framework preset:
None
(orVite
if available) - Build command:
npm run build
- Build output directory:
dist
- Root directory:
/
(leave empty) - Node.js version:
18
or higher
- Framework preset:
-
Environment Variables (if needed):
- Go to Settings > Environment variables
- Add any required environment variables
-
Deploy:
- Click "Save and Deploy"
- Your site will be built and deployed automatically
- Future pushes to the main branch will trigger automatic deployments
-
Build the project locally:
npm run build
-
Upload the
dist
folder contents to Cloudflare Pages using:- Cloudflare Pages dashboard (drag and drop)
- Wrangler CLI:
npx wrangler pages deploy dist
- In Cloudflare Pages dashboard, go to your project
- Navigate to "Custom domains"
- Add your domain and follow DNS configuration instructions
Unbroken/
βββ public/ # Static assets
βββ src/ # Source code
β βββ components/ # Svelte components (refactored from monolithic App.svelte)
β β βββ CardioWorkouts.svelte # LISS and HIIT workout rendering
β β βββ StrengthWorkouts.svelte # Strength/hypertrophy workouts with warm-up sets
β β βββ RestWorkouts.svelte # Rest and deload workout rendering
β β βββ History.svelte # Workout history display
β β βββ TrainingPlan.svelte # Training blocks drag & drop management
β β βββ ExerciseDatabase.svelte # 1RM and 10RM exercise input management
β β βββ RestTimer.svelte # Rest timer with visual feedback
β β βββ ResetProgress.svelte # Reset confirmation modal
β βββ App.svelte # Main App component with reactive state management
β βββ types.ts # Centralized TypeScript interfaces and types
β βββ utils.ts # Shared utility functions (weight calculations, notifications)
β βββ blockTemplates.ts # Training block templates and configurations
β βββ main.ts # Entry point
β βββ app.css # Global styles with Tailwind CSS
βββ .github/ # GitHub Actions workflows
βββ dist/ # Build output (generated)
βββ index.html # HTML template
βββ package.json # Dependencies and scripts
βββ tsconfig.json # TypeScript configuration
βββ vite.config.ts # Vite configuration
βββ wrangler.jsonc # Cloudflare Pages configuration
βββ tailwind.config.js # Tailwind CSS configuration
βββ postcss.config.js # PostCSS configuration
βββ svelte.config.js # Svelte configuration
βββ .eslintrc.cjs # ESLint configuration
The application has been built with Svelte 5's modern reactive architecture using runes for state management:
- Reactive State Management: Svelte 5 runes ($state, $derived, $effect) provide automatic reactivity
- Component Composition: Each component handles a specific aspect of functionality
- Type Safety: Comprehensive TypeScript interfaces ensure code reliability
- Reusability: Components are designed to be easily testable and modifiable
- Maintainability: Svelte's compile-time optimizations and clean syntax improve maintainability
The repository includes GitHub Actions workflow that runs on every push and pull request:
- Linting: ESLint checks for code quality (Svelte components included)
- Type Checking: Svelte type checking validates components and TypeScript
- Build: Ensures the project builds successfully
- Artifact Upload: Stores build output for review
- Built with Tailwind CSS for rapid UI development
- Utility-first approach with responsive design support
- Dark mode support included out of the box
- Modify
src/index.css
to customize Tailwind configuration - Use Tailwind classes directly in your components for styling
- Custom CSS can be added to
src/index.css
if needed
# Example: Add a UI library (compatible with Tailwind and Svelte)
npm install @floating-ui/dom
# Example: Add routing (for multi-page functionality)
npm install svelte-spa-router
# Example: Add form handling and validation
npm install felte @felte/validator-zod zod
# Example: Add state management (if needed for larger scale)
npm install svelte/store
# Example: Add date/time utilities
npm install date-fns
- Modify
tailwind.config.js
to extend the theme, add custom colors, or configure plugins - Add custom utilities or components in
src/app.css
- Use Tailwind IntelliSense extension in VS Code for better development experience
- Svelte components work seamlessly with Tailwind's utility classes
Create .env
files for different environments:
.env.local
- Local development.env.production
- Production builds
- Vite Documentation
- Svelte 5 Documentation
- Cloudflare Pages Documentation
- TypeScript Documentation
- Tailwind CSS Documentation
- Tactical Barbell Official - Learn about the training methodology
- Fork the repository
- Create a feature branch:
git checkout -b feature-name
- Make your changes
- Run tests:
npm run lint && npm run type-check && npm run build
- Commit your changes:
git commit -m 'Add feature'
- Push to the branch:
git push origin feature-name
- Submit a pull request
This project is open source and available under the MIT License.