Building SwimIQ
A development blog recording the designing and building of Team Grouse's Senior Inquiry Project.
SwimIQ is a web platform and mobile application for swim coaches to manage practices, lifts, meets, and team analytics.
Development Team Grouse: Lucas Rettig, Ian Palmroos, Tyler Leslie, and Primo Moreno.
New entries posted every week by team Grouse members as SwimIQ evolves.
Week 8 - 9: Meet Simulator MVP, Mobile Heart Rate & The Big Monorepo Restructure
We shipped the Meet Simulator MVP, bootstrapped the mobile app with HealthKit/HealthConnect/BLE heart rate monitoring, restructured the entire project into a Yarn monorepo, and added a real-time communication layer, dark mode, and a full Settings page to the web app.
Read post →Week 7: Advanced Analytics and Practice Builder Overhaul
This week we introduced a comprehensive Analytics suite with a taper prediction engine, dynamic team filtering, and interactive performance charts. We also overhauled the Practice Builder to include live PDF generation and database integration.
Read post →Week 6: Feature Expansion & System Growth
This week we added a temporary messaging center, a temporary practice builder, CCIW team rosters, an end-of-season prediction model, meet result data storage, and a meet result upload system to expand SwimIQ’s functionality.
Read post →Week 5: Heart Rate Dashboard & Firebase Integration
This week we began developing a heart rate dashboard for visualizing swimmer training intensity while exploring Polar’s AccessLink API for collecting heart rate data outside of Bluetooth limitations in water. We also started integrating Firebase with a Firestore database, improving our performance prediction model, and planning the separation of swimmer and coach profiles.
Read post →Week 4: Project Overview — What We’ve Built So Far
We’re four weeks into SwimIQ. This post walks through every feature currently in the app — from the coach dashboard and event forms to the full calendar view and the Python analytics API — and explains the technical decisions that got us here.
Read post →