SmartRep: Modular Rep Counter
SmartRep: Modular Rep Counter for Bangle.js 1
This pull request adds the SmartRep application to the Bangle.js App Loader.
SmartRep is a modular, user-friendly fitness app that detects and counts repetitions for common gym exercises using Bangle.js 1's built-in accelerometer. Each exercise uses lightweight detection logic tailored to real movements.
✅ Features:
- 8 Supported Exercises:
- Bench Press
- Bicep Curls
- Cable Rows
- Lateral Raise
- Pushup
- Shoulder Press
- Triceps Pushdown
- Squats
- Touch-free interface with button-based navigation
- Target rep setting before session
- Circular animated rep indicator
- Visual and haptic feedback
- Custom app icon and full UI branding
- Modular detection logic files per exercise (
logic/folder)
🧠 Internals:
- Main UI:
smartrep.app.js - Exercise logic:
logic/*.js - Metadata:
metadata.json - Icon:
smartrep-icon.png
The application has been tested on real Bangle.js 1 hardware. All code is safely sandboxed within its directory and follows the BangleApps structure.
Ready for review and merge. 🙌
Looks good - unfortunately I don't have a Bangle1 to test on, does anyone else?
Hey! This app looks like something I would use! Unfortunately, I don't have a Bangle.js 1. What makes this app incompatible with the JS 2? Perhaps we could design a workaround...
Hi - are you really sure this works? Because I can see quite a few issues - some are listed in the pre-merge tests: https://github.com/espruino/BangleApps/actions/runs/16104483721/job/45451159898?pr=3927
- Bangle.js doesn't support folders, so trying to put stuff in
logic/*doesn't make that much sense (and no URL has been supplied for the files in the metadata anyway) - the icon uploaded is a large
pngfile, not the 48px JS format - looking at the app.js I can't see where it loads any of the
logicfiles liketricepspushdown.jsmentioned in metadata (which doesn't matchtriceps_pushdown.js)
It looks like a great idea, but I'm not really sure I see how it's meant to work? as far as I can tell even when running right now it'll display the UI but doesn't really use any of the sport style JS files?