This project is deployed via GitHub Pages.
Deployment URL: https://limfull.github.io/stronglift-timer/
A timer application for weight training that accurately measures and records rest periods between sets.
- Multiple Timer Settings: 1min 30sec, 3min, 5min (First Timer) / 40sec, 1min, 1min 30sec (Second Timer)
- Real-time Countdown: Precise time measurement down to milliseconds
- Set Recording: Automatically records completed set times
- Audio Alerts: Beep sound notification when timer ends
- Responsive Design: Works on both mobile and desktop
- Dark Theme: Eye-friendly dark mode UI
- Frontend: React 17, TypeScript
- Styling: Tailwind CSS, Styled Components
- Routing: React Router DOM
- Icons: Font Awesome
- Build Tool: Create React App
- Deployment: GitHub Pages
- Select Timer: Choose your preferred timer mode from the bottom navigation
- Set Time: Click on the desired rest time button
- Start: Press the "Start" button to begin countdown
- Stop/Reset: Pause or reset the timer as needed
- Set Recording: Timer completion automatically records to the set list
- Clear: Use the "Clear" button to delete all set records
- 1 minute 30 seconds (90 seconds)
- 3 minutes (180 seconds)
- 5 minutes (300 seconds)
- 40 seconds
- 1 minute (60 seconds)
- 1 minute 30 seconds (90 seconds)
- Node.js 14.0.0 or higher
- npm or yarn
# Clone the repository
git clone https://github.com/limfull/stronglift-timer.git
# Navigate to project directory
cd stronglift-timer
# Install dependencies
npm install
# or
yarn installnpm start
# or
yarn startnpm run build
# or
yarn buildnpm run deploy
# or
yarn deploysrc/
├── components/
│ ├── BottomNav.tsx # Bottom navigation
│ ├── Button.tsx # Reusable button component
│ ├── SetList.tsx # Set record list
│ ├── TimeButton.tsx # Time setting button
│ ├── Timer.tsx # Timer logic
│ └── TimerContainer.tsx # Timer container
├── assets/
│ └── sounds/
│ └── beepbeep.mp3 # Timer end notification sound
├── utils/
│ ├── index.tsx # Utility functions
│ └── useEffectOnlyOnce.tsx
└── App.tsx # Main app component
- Intuitive Interface: Large buttons and clear layout
- Color Coding: Different color themes for each timer mode
- Mobile Optimized: Touch-friendly design
- Accessibility: High contrast colors and large font sizes
- React 17: Functional components and Hooks
- TypeScript: Type safety guaranteed
- Tailwind CSS: Utility-first CSS framework
- Styled Components: Dynamic styling
- React Router: SPA routing
This project is licensed under the MIT License.
Make your weight training more systematic and efficient! 💪