Inspiration
The inspiration for WalkMate came from my own frustration with the monotony of walking the same routes every day. As a fitness enthusiast and urban explorer, I often found myself stuck in routine paths, missing out on the hidden gems and diverse landscapes my neighborhood had to offer. The idea sparked during countless repetitive walks during the pandemic, when I was seeking safe outdoor activities but was limited by my knowledge of local walking routes.
I envisioned an app that could act as a personal route curator, intelligently generating diverse walking paths that would turn every walk into a mini-adventure. My goal was to combine the health benefits of regular walking with the excitement of exploration, helping users discover new areas while maintaining their fitness routines.
What it does
WalkMate is an intelligent iOS application that I built to transform ordinary walks into personalized adventures by generating unique walking routes based on your location and preferences. The app creates three distinct route options for every generation, each carefully crafted to meet your target distance while ensuring variety and walkability.
Core Features I Implemented:
- Smart Route Generation: Uses advanced algorithms I developed to create polygonal walking routes that avoid repetition and ensure optimal distance coverage
- Customizable Distances: Choose from beginner (3km), regular (12km), or advanced (20km) walking distances
- Location Avoidance: Mark and permanently avoid specific areas like construction zones, unsafe neighborhoods, or private properties
- Route Favorites: Save your best discoveries for future walks with detailed route information and turn-by-turn directions
- Interactive Map Experience: View routes on beautiful maps with multiple styles (standard, satellite, hybrid) and real-time location tracking
- Flexible Units: Seamlessly switch between kilometers and miles based on your preference
- Multi-language Support: I added support for English and Turkish for international accessibility
The app intelligently learns from walking patterns, using completion history to optimize future route suggestions and ensure users always have engaging paths to explore.
How I built it
I architected WalkMate using modern iOS development best practices, emphasizing maintainability, testability, and user experience.
Technical Architecture I Chose:
- Framework: Built entirely in SwiftUI for iOS 17.0+, leveraging the latest declarative UI paradigms
- Architecture Pattern: I implemented The Composable Architecture (TCA), providing predictable state management, easy testing, and clear separation of concerns
- Route Generation Algorithm: I developed a sophisticated polygonal route generation system that:
- Creates 8-15 sided polygons based on target distance
- Uses trigonometric calculations to ensure geometric variety
- Implements collision detection to prevent route intersections
- Integrates with MapKit's walking directions API for real-world path validation
- Employs adaptive distance boosting based on completion history
Key Technical Components I Built:
- Location Services: Custom LocationManager wrapper using CoreLocation with privacy-first design
- Map Integration: Advanced MapKit implementation with custom annotations, polyline rendering, and camera controls
- Data Persistence: UserDefaults-based storage system for routes, favorites, and user preferences
- Monetization: RevenueCat integration for premium features and user support
- Push Notifications: OneSignal framework for user engagement and updates
Algorithm Highlights: The route generation algorithm I created uses mathematical principles to create engaging walks:
[ \text{numberOfSides} = \max(8, \min(15, \frac{\text{targetDistance}}{300})) ]
[ \text{angleIncrement} = \frac{2\pi}{\text{numberOfSides}} ]
This ensures that longer walks have more complex, interesting shapes while maintaining walkable segments.
Challenges I ran into
Building WalkMate presented several complex technical and design challenges that I had to overcome:
1. Route Generation Complexity The biggest challenge I faced was creating an algorithm that generates truly walkable, interesting routes. My initial attempts produced routes that crossed private property, went through buildings, or created impossible walking paths. I solved this by:
- Implementing sophisticated collision detection between route segments
- Integrating real-time validation with MapKit's walking directions API
- Adding minimum spacing requirements between route points (30 meters)
- Creating fallback mechanisms when routes couldn't be completed
2. Performance Optimization Generating multiple routes simultaneously while maintaining smooth UI performance required careful optimization that I implemented:
- Used async/await patterns with proper task management
- Added strategic delays between route calculations to prevent API rate limiting
- Implemented actor isolation for thread-safe route generation
- Optimized map rendering for complex polylines with hundreds of coordinates
3. Location Privacy and Accuracy Balancing user privacy with functionality required thoughtful implementation decisions I made:
- All location data processing happens locally on-device
- I implemented graceful degradation when location permissions are denied
- Created fallback to default locations (London) for demo purposes
- Designed privacy-first data storage with no server-side location tracking
4. User Experience Consistency Creating an intuitive interface for complex functionality involved multiple iterations I went through:
- I designed custom glass-effect UI components for modern aesthetics
- Implemented smooth animations and transitions using SwiftUI's animation system
- Created contextual help and guidance for complex features like area avoidance
- Balanced feature richness with interface simplicity
5. Mathematical Precision Ensuring accurate distance calculations and geometric route generation required deep mathematical implementation I developed:
- Converting between coordinate systems and distance measurements
- Handling edge cases in trigonometric calculations
- Accounting for Earth's curvature in distance calculations
- Implementing robust intersection detection algorithms
Accomplishments that I'm proud of
Technical Achievements:
- Advanced Algorithm Development: I created a sophisticated route generation system that successfully balances mathematical precision with real-world walkability
- Clean Architecture: I implemented a maintainable, testable codebase using TCA that scales beautifully as features are added
- Performance Excellence: I achieved smooth, responsive performance even when generating complex routes with hundreds of coordinate points
- Privacy Leadership: I built a completely local-first application that never transmits user location data to external servers
User Experience Wins:
- Intuitive Design: I created an interface so intuitive that users can generate their first route within seconds of opening the app
- Feature Integration: I seamlessly integrated complex features like area avoidance and route favorites without overwhelming the user interface
- Accessibility: I designed with multiple language support and flexible unit systems for global accessibility
- Real-world Validation: I successfully tested route generation across diverse geographical areas, from urban centers to suburban neighborhoods
Product Success:
- App Store Launch: I successfully launched on the App Store with positive user reception
- Solo Development: I accomplished this as a complete solo project, handling everything from algorithm design to UI/UX to App Store optimization
- Scalable Foundation: I built a solid foundation that supports future features like social sharing, route challenges, and community features
What I learned
Technical Insights:
- Algorithm Design: I learned that successful route generation requires balancing mathematical elegance with real-world constraints. Pure geometric approaches often fail when applied to actual street networks and walkable paths.
- iOS Development Mastery: I gained deep expertise in SwiftUI's advanced features, MapKit integration, and modern iOS architecture patterns. The Composable Architecture proved invaluable for managing complex state interactions.
- Performance Optimization: I discovered that user-perceived performance is often more important than raw computational speed. Strategic delays and smooth animations can make complex operations feel instantaneous.
- Location Services: I learned the intricacies of CoreLocation, including accuracy management, battery optimization, and privacy compliance in location-based applications.
Product Development Lessons:
- User-Centric Design: I realized that feature complexity should be hidden behind simple interfaces. Users want powerful functionality that feels effortless to use.
- Iterative Improvement: I learned the value of rapid prototyping and user feedback. The route generation algorithm went through multiple iterations based on real-world testing.
- Privacy by Design: I understood that privacy isn't just a feature—it's a fundamental architectural decision that affects every aspect of the application.
Mathematical Applications:
- Practical Geometry: I applied trigonometry, coordinate geometry, and collision detection in a real-world context, bridging theoretical mathematics with practical problem-solving.
- Algorithm Optimization: I learned to balance algorithmic complexity with user experience, finding the sweet spot between route variety and generation speed.
What's next for WalkMate - Weight Loss
Immediate Enhancements I'm Planning:
- iPad Support: I'm expanding to iPad with optimized layouts for larger screens and enhanced map interactions
- Apple Watch Integration: I'm developing a companion watchOS app for route guidance and fitness tracking during walks
- Enhanced Route Intelligence: I'm implementing machine learning to better understand user preferences and generate more personalized routes
- Weather Integration: I'm adding weather-aware route suggestions that consider current conditions and forecasts
Community Features I Want to Add:
- Route Sharing: Enabling users to share their favorite discoveries with friends and the community
- Social Challenges: Creating walking challenges and leaderboards to gamify the fitness experience
- Local Recommendations: Integrating points of interest, cafes, and landmarks into route planning
- Community Safety: Allowing users to report and share information about route conditions and safety
Advanced Functionality I'm Exploring:
- Multi-Modal Routes: Supporting routes that combine walking with public transportation for longer adventures
- Fitness Integration: Deep integration with HealthKit for comprehensive fitness tracking and goal setting
- AR Navigation: I'm exploring augmented reality features for immersive route guidance
- Accessibility Features: Adding support for wheelchair-accessible routes and visual/audio accessibility enhancements
Platform Expansion I'm Considering:
- API Platform: Potentially opening route generation capabilities to third-party fitness and navigation apps
The future of WalkMate lies in becoming the definitive platform for walking exploration, combining cutting-edge technology with the simple joy of discovering new paths in familiar places.
Built With
- core-location
- ios
- mapkit
- swiftui
Log in or sign up for Devpost to join the conversation.