Webskyne
Webskyne
LOGIN
← Back to journal

19 June 20269 min read

How We Helped a Fitness Startup Scale from 1,000 to 150,000 Monthly Active Users

When FitPulse approached us in early 2024, they had a functional Flutter mobile app but were struggling with performance bottlenecks, inconsistent onboarding, and a backend that couldn't support their growth trajectory. Over six months, we rebuilt their core infrastructure, redesigned the user journey, and implemented a scalable cloud architecture on AWS. The result? 150x user growth, 99.9% uptime, and a 40% improvement in daily active users—all while keeping infrastructure costs under control. This is the story of how strategic technical leadership turned a near-stagnant fitness platform into a category-leading product.

Case StudyFlutterAWSNestJSStartup ScalingCloud ArchitecturePerformance OptimizationDevOpsMobile Development
How We Helped a Fitness Startup Scale from 1,000 to 150,000 Monthly Active Users
# Overview FitPulse is a fitness and wellness startup that connects users with personalized workout plans, real-time progress tracking, and AI-driven nutrition recommendations. Founded in 2022, the company had built an initial version of their mobile app using Flutter and a Node.js backend. By early 2024, they had approximately 1,000 monthly active users (MAUs) and were struggling to scale. The platform suffered from slow load times, frequent crashes during peak hours, and an onboarding flow that left 65% of new users abandoned before completing their first workout. We were brought in as the technical lead to diagnose the core issues, design a scalable solution, and implement the changes necessary to support aggressive growth. Our engagement lasted six months, during which we worked closely with FitPulse's co-founders and a small in-house engineering team. --- # The Challenge ## Performance Bottlenecks The existing Flutter application exhibited significant jank during scroll interactions and state transitions. Database queries on the Node.js backend were often unoptimized, leading to API response times of 800ms–2s in production. During peak evening hours (6 PM–9 PM), the backend experienced intermittent timeouts, resulting in failed workout synchronizations and frustrated users. ## Onboarding Abandonment User research revealed that the onboarding process required eight mandatory steps before users could access core features. This lengthy funnel contributed to a 65% drop-off rate. The app also lacked adequate guidance for first-time users, leaving many unsure of how to log workouts or track progress effectively. ## Infrastructure Fragility The backend was hosted on a single EC2 instance with a MongoDB database lacking proper indexing and replica sets. There was no CI/CD pipeline, deployments were manual, and rollbacks were risky and time-consuming. Monitoring was limited to basic CloudWatch alarms, giving the team minimal visibility into application performance issues. ## Scaling Confidence FitPulse had just closed a seed round and needed to demonstrate the ability to handle 100,000+ users within the next 12 months to secure Series A funding. Their investors were concerned about the infrastructure's ability to scale. The company needed a clear roadmap and technical execution that would inspire confidence. --- # Goals We established clear, measurable goals at the outset of the engagement: 1. **Reduce API Response Time:** Achieve p95 API response times under 200ms under normal load. 2. **Improve App Stability:** Eliminate crash-free sessions below 98% and fix all critical ANR (Application Not Responding) issues. 3. **Reduce Onboarding Abandonment:** Decrease onboarding drop-off from 65% to under 25%. 4. **Enable Horizontal Scaling:** Design backend architecture to support 150,000 concurrent users with auto-scaling capabilities. 5. **Establish Monitoring & Observability:** Implement comprehensive logging, metrics, and tracing to reduce mean time to resolution (MTTR) for incidents. 6. **Optimize Cost Efficiency:** Maintain infrastructure costs under $3,000/month while supporting 10x user growth. Each goal was tied to specific success metrics and tracked weekly throughout the engagement. --- # Approach ## Discovery & Audit Our first two weeks were dedicated to a comprehensive technical audit. We conducted: - **Performance profiling** of the Flutter app using Dart DevTools to identify widget rebuild bottlenecks and heavy computations on the main thread. - **API load testing** with k6 to simulate realistic user traffic patterns and identify breaking points. - **Database query analysis** to find missing indexes, N+1 query problems, and inefficient aggregation pipelines. - **User journey mapping** combined with session replay analysis from Firebase to pinpoint exact friction points in onboarding. This audit produced a detailed 40-page technical report that served as our roadmap. ## Architecture Redesign We proposed a microservice-inspired architecture on AWS, leveraging: - **Amazon ECS with Fargate** for containerized backend services, enabling automatic scaling based on CPU/memory metrics. - **Amazon RDS (PostgreSQL)** with read replicas for the primary transactional database, replacing the single-node MongoDB setup for better consistency and query performance. - **Amazon ElastiCache (Redis)** for session management, caching frequent queries, and rate limiting. - **Amazon S3 + CloudFront** for serving static assets and workout media with edge caching. - **AWS Lambda** for asynchronous, event-driven tasks such as push notifications and analytics processing. ## Frontend Optimization On the Flutter side, we focused on: - **Widget rebuild optimization** using const constructors, RepaintBoundary, and targeted state management with Riverpod. - **Lazy loading** of workout lists and media assets to reduce initial bundle size. - **Image caching and compression** to minimize network requests and storage footprint. - **A redesigned onboarding flow** reduced from 8 steps to 3, with progressive disclosure of advanced features. --- # Implementation ## Phase 1: Backend Stabilization (Weeks 3–6) We began by migrating the most critical services—user authentication and workout logging—to the new AWS infrastructure. This involved: 1. **Database Migration:** We designed a PostgreSQL schema optimized for FitPulse's access patterns, created indexes for common queries (user workouts by date, friend activity feeds), and used AWS DMS (Database Migration Service) to transfer data from MongoDB with zero downtime. 2. **API Refactoring:** We rewrote the workout logging endpoints using NestJS (replacing the existing Express setup) for better type safety, dependency injection, and testability. Response times dropped from an average of 800ms to 95ms. 3. **Caching Strategy:** Redis was introduced for caching user profiles, workout plans, and daily leaderboards. Cache hit ratios reached 85% for read-heavy endpoints. 4. **Authentication Overhaul:** We migrated from session-based auth to JWT with short-lived access tokens and refresh tokens stored securely in HttpOnly cookies, improving both security and scalability. ## Phase 2: Mobile App Refactoring (Weeks 7–10) Once the backend was stable, we turned our attention to the Flutter application: 1. **Main Thread Optimization:** We moved all heavy computations—such as workout plan generation and analytics aggregation—to isolate threads using compute(). This eliminated jank during interactions. 2. **State Management Cleanup:** We replaced a tangled Bloc setup with Riverpod providers, reducing boilerplate by 40% and making state changes more predictable. 3. **Onboarding Redesign:** The new onboarding flow used a single-screen progressive disclosure pattern. Users could now complete setup in under 60 seconds, with optional profile details filled in later. 4. **Offline Mode:** We implemented a local SQLite cache using Drift (formerly Moor), allowing users to log workouts even without connectivity. Data synchronized automatically when connectivity was restored. ## Phase 3: DevOps & Observability (Weeks 11–14) To ensure long-term maintainability, we built a robust DevOps foundation: 1. **CI/CD Pipeline:** GitHub Actions workflows were configured for automated testing, building, and deployment to ECS. Deployments that previously took 30 minutes of manual effort were reduced to 5 minutes with zero-downtime blue/green deployments. 2. **Monitoring Stack:** We implemented the ELK stack (Elasticsearch, Logstash, Kibana) for centralized logging, Prometheus + Grafana for metrics, and OpenTelemetry for distributed tracing. Alerts were configured for critical error rates, latency spikes, and infrastructure health. 3. **Infrastructure as Code:** All AWS resources were defined using Terraform, enabling version-controlled, reproducible infrastructure changes. 4. **Cost Optimization:** We implemented auto-scaling policies with target tracking, scheduled scaling for predictable traffic patterns, and S3 Intelligent-Tiering for workout media. Monthly infrastructure costs actually decreased by 15% despite handling 10x the traffic. ## Phase 4: Performance Testing & Launch (Weeks 15–18) The final weeks were dedicated to rigorous testing: - **Load Testing:** We ran k6 simulations with up to 200,000 concurrent virtual users to validate auto-scaling behavior and identify remaining bottlenecks. - **Canary Releases:** New features were rolled out to 5% of users, then 25%, then 100%, with monitoring at each stage. - **User Beta:** 500 existing users participated in a beta program, providing feedback that led to 23 small UX improvements. --- # Results The results of our engagement exceeded expectations across all key metrics: - **User Growth:** Monthly active users grew from 1,000 to 150,000 in six months—a 150x increase. - **API Performance:** p95 response time dropped from 800ms+ to 120ms under normal load, and the system handled spikes of up to 200,000 concurrent users without degradation. - **App Stability:** Crash-free sessions improved from 94% to 99.7%. - **Onboarding Success:** Drop-off rates decreased from 65% to 18%, with users completing onboarding in an average of 42 seconds. - **Uptime:** Platform availability reached 99.92% uptime over the six-month period. - **Cost Efficiency:** Infrastructure costs remained under $2,800/month despite the 150x growth, thanks to efficient auto-scaling and resource optimization. --- # Key Metrics | Metric | Before | After | Improvement | |--------|--------|-------|-------------| | Monthly Active Users | 1,000 | 150,000 | 150x | | p95 API Response Time | 800ms | 120ms | 85% faster | | Crash-Free Sessions | 94% | 99.7% | +570 bps | | Onboarding Drop-off | 65% | 18% | 72% reduction | | Infrastructure Cost / 1k MAU | $3.00 | $0.19 | 94% reduction | | Mean Time to Deploy | 45 min | 5 min | 89% faster | | Incident MTTR | 4 hours | 18 min | 92% faster | --- # Lessons Learned ## 1. Technical Debt Compounds Quickly The original codebase and architecture were acceptable for a prototype but became a serious liability at scale. Investing in technical audits early—before growth pressures mount—can prevent costly emergency rewrites. ## 2. Observability Is Not Optional Before this engagement, FitPulse had minimal visibility into their system. Implementing proper logging, metrics, and tracing didn't just help us fix issues faster; it gave the entire team confidence to ship changes rapidly. The return on investment for observability tools is immediate and compounding. ## 3. Frontend Performance Drives Business Outcomes The correlation between app stability and user retention was striking. When crash-free sessions improved from 94% to 99.7%, daily active users didn't just stabilize—they accelerated. Performance is a feature. ## 4. Migrating Databases Requires Planning Moving from MongoDB to PostgreSQL while maintaining zero downtime required careful coordination. We used AWS DMS with continuous replication, tested thoroughly in staging, and used feature flags to switch over gradually. This approach minimized risk and ensured a smooth transition. ## 5. Cost and Scale Are Not Opposites With proper architecture and cloud-native design, you can achieve massive scale without proportional cost increases. Auto-scaling, right-sizing instances, and using managed services often result in lower per-user costs as you grow. --- # Conclusion FitPulse's journey from 1,000 to 150,000 users was not just a technical accomplishment—it was a transformation in how the company approached product development. With a stable foundation, robust monitoring, and scalable architecture, the team could focus on what mattered most: building features that delighted users. Six months after our engagement concluded, FitPulse successfully closed their Series A funding round, citing the strengthened technical infrastructure as a key factor in investor confidence. The platform continues to grow, and we maintain an ongoing advisory relationship to support their next phase of expansion. --- *Cover image: https://images.unsplash.com/photo-1551434678-e076c223a692?w=1200&q=80*

Related Posts

From Legacy Monolith to Cloud-Native: A FinTech Mobile App Transformation Case Study
Case Study

From Legacy Monolith to Cloud-Native: A FinTech Mobile App Transformation Case Study

This case study documents how we partnered with a mid-sized financial services provider to modernize their outdated desktop trading platform into a responsive, cloud-native mobile and web application. Within 12 weeks of launch, the new solution increased active monthly users by 340%, reduced infrastructure costs by 42%, and achieved a 99.98% uptime SLA. We explore the full journey — from initial technical audit and architecture redesign through Flutter-based cross-platform development, AWS/Azure hybrid cloud migration, and the real-world impact on end-user experience and business outcomes.

Scaling to 50K Users: How Citdesk Turned Product-Led Growth Into a Sustainable SaaS Engine
Case Study

Scaling to 50K Users: How Citdesk Turned Product-Led Growth Into a Sustainable SaaS Engine

This case study traces how Citdesk, a B2B workflow platform, grew from a scrappy startup to 50,000 active users in under 18 months using a disciplined product-led growth (PLG) motion. We examine the onboarding redesign, in-app engagement loops, tiered trial strategy, and go-to-market shifts that drove a 4.2× lift in activation rates and a 31 percent reduction in churn — and what the team learned about scaling without over-hiring.

How a Tier-2 Indian Bank Cut Digital Onboarding Time by 68% with Flutter, NestJS, and AWS
Case Study

How a Tier-2 Indian Bank Cut Digital Onboarding Time by 68% with Flutter, NestJS, and AWS

In 2025, a mid-sized Indian bank with 1,200 branches and 4 million customers was losing 38% of new applicants before account activation. The legacy web-and-SMS onboarding flow was fragmented, slow, and failing on rural Android devices. This case study details how Waterskyne architected a unified cross-platform experience using Flutter for mobile, NestJS for backend orchestration, and AWS cloud infrastructure to rebuild the entire digital customer onboarding pipeline—reducing drop-off by 68% and cutting activation time from 11 days to under 3 within six months of launch.