Hi HN, I'm SrPakura, a junior product designer from Spain. For my Master's thesis, driven by the frustration of fragmented nutrition, training, and progress apps (combined with their low quality, zero privacy, and subscription abuse), I built aerko_.
On the technical side, I went with a pure local-first PWA approach using vanilla JavaScript. To keep the app as lightweight as possible, I avoided heavy frameworks like React or Vue. The reactivity and UI encapsulation are built entirely on the native Web Components standard, relying only on strictly necessary lightweight libraries like Chart.js for metrics or JSZip.
Since privacy was the core design pillar, the app is 100% local-first. All storage persists on the device via IndexedDB, and the app works fully offline thanks to its Service Worker. For security, I implemented the native Web Crypto API (AES-GCM 256 and PBKDF2). This allows users to encrypt their data vaults locally in RAM, ensuring zero personal data is exposed. It also includes a robust local import/export tool (Apple Health, Google Fit, CSV, JSON) to guarantee users never suffer from vendor lock-in.
The most complex aspect was the biomechanical analysis module for workouts. I integrated Google's MediaPipe computer vision models running entirely inside a Web Worker. This allows the app to process exercise form at 30fps without blocking the main thread, and ensures the video feed never leaves the user's device.
The code is available on GitHub. Initially, I wanted to make it fully Open Source, but then I realized anyone could just fork it, slap a paywall on it, and repeat the exact cycle I'm trying to break (maybe highly unlikely, but just in case).
I presented my thesis just a month ago and I'm still deepening my JavaScript knowledge, so I relied heavily on AI to generate about 80-85% of the actual codebase and translate the app, allowing me to focus strictly on the architecture and UI/UX. Because of this, any feedback on the design, code architecture, or ideas for the next version would be incredibly helpful. Thanks in advance!
Hi HN, I'm SrPakura, a junior product designer from Spain. For my Master's thesis, driven by the frustration of fragmented nutrition, training, and progress apps (combined with their low quality, zero privacy, and subscription abuse), I built aerko_.
On the technical side, I went with a pure local-first PWA approach using vanilla JavaScript. To keep the app as lightweight as possible, I avoided heavy frameworks like React or Vue. The reactivity and UI encapsulation are built entirely on the native Web Components standard, relying only on strictly necessary lightweight libraries like Chart.js for metrics or JSZip.
Since privacy was the core design pillar, the app is 100% local-first. All storage persists on the device via IndexedDB, and the app works fully offline thanks to its Service Worker. For security, I implemented the native Web Crypto API (AES-GCM 256 and PBKDF2). This allows users to encrypt their data vaults locally in RAM, ensuring zero personal data is exposed. It also includes a robust local import/export tool (Apple Health, Google Fit, CSV, JSON) to guarantee users never suffer from vendor lock-in.
The most complex aspect was the biomechanical analysis module for workouts. I integrated Google's MediaPipe computer vision models running entirely inside a Web Worker. This allows the app to process exercise form at 30fps without blocking the main thread, and ensures the video feed never leaves the user's device.
The code is available on GitHub. Initially, I wanted to make it fully Open Source, but then I realized anyone could just fork it, slap a paywall on it, and repeat the exact cycle I'm trying to break (maybe highly unlikely, but just in case).
I presented my thesis just a month ago and I'm still deepening my JavaScript knowledge, so I relied heavily on AI to generate about 80-85% of the actual codebase and translate the app, allowing me to focus strictly on the architecture and UI/UX. Because of this, any feedback on the design, code architecture, or ideas for the next version would be incredibly helpful. Thanks in advance!