each minute on the minute.
a minimalist emom workout timer. runs from your terminal, opens in your browser.
dark theme. flip-clock font. audio countdown. downloadable workout summary card.
git clone https://github.com/hpanwar09/emom.git
cd emom
bin/setupthis installs dependencies and adds the emom command to your system.
emom # start the timer (opens browser)
emom test # run specs
emom lint # run rubocop- configure your workout — set duration or target reps, reps per minute, exercise name
- hit start — 3-2-1 countdown with audio beeps
- timer runs — shows time left, current round, reps completed
- workout complete — summary card you can download as an image
- duration — set minutes + reps per minute (e.g. 10 min × 5 reps = 50 total)
- target — set total reps + reps per minute (e.g. 500 reps ÷ 10/min = 50 min)
- ruby + sinatra (backend)
- slim templates + stimulus.js (frontend)
- web audio api (beeps, no audio files)
- web worker (accurate timer, immune to tab throttling)
- sqlite (local data)
- tailwind cdn (styling)
- html2canvas (share card generation)
- ruby 3.1+
- bundler
bundle install
bundle exec ruby bin/startruns at http://localhost:4567
bundle exec rspec spec/
bundle exec rubocop lib/ spec/