CoachMe
Jun 5, 2023

- Team project at EPFL (5 members)
- Grade: 6 / 6
TL;DR
- Developed an Android app that connects sports coaches with clients.
- Implemented location-based discovery, profile management, messaging, calendar scheduling, push notifications, and ratings.
- Built with Kotlin, Jetpack Compose, Firebase, and Google Maps API.
- Delivered as a Scrum team project at EPFL, graded 6 / 6.
At a glance
- Role: Mobile developer (team of 5, Scrum methodology)
- Timeline: Mar–June 2023 (14 weeks)
- Context: EPFL Software Development Project course project
- Users/Stakeholders: Sports enthusiasts and professional coaches
- Scope: Android development, Maps integration, Calendar scheduling, Messaging, Push notifications
Problem
Finding qualified coaches nearby, scheduling sessions, and managing communication is fragmented across messaging apps, booking systems, and personal calendars. We set out to create an all-in-one mobile app that connects athletes with coaches seamlessly, lowering the barrier for people to find and book trainings.
Solution overview
CoachMe integrates location services, profile management, calendar planning, and real-time communication into a single Android app:
- Athletes can discover nearby coaches via an interactive map.
- Both coaches and clients can manage their profiles.
- In-app messaging enables direct coordination.
- Training events are scheduled directly into a calendar, with real-time updates.
Architecture
The app is structured around:
- Frontend: Kotlin with Jetpack Compose for modern Android UI.
- Backend: Firebase Realtime Database, Authentication, and Cloud Functions for data sync, security, and serverless logic.
- Integration: Google Maps API for coach discovery and geolocation features.
Data
- User profiles: Basic info, sports expertise (for coaches), preferences (for clients).
- Location data: GPS coordinates stored in Firebase for map-based search.
- Messages: Real-time chat stored in Firebase Realtime Database.
- Events: Training sessions persisted with calendar integration.
Product & UX
-
Primary user journey:
- Create a profile.
- Search for nearby coaches by sport or location.
- View detailed profiles.
- Send messages to arrange training.
- Schedule events into calendar.
-
Key features:
- Location-based coach discovery.
- Profile creation & management.
- In-app chats and group chats for booking.
- Calendar scheduling.
- Secure login & real-time updates.
- Notifications for messages and events.
System & Operations
- Stack: Kotlin, Jetpack Compose, Firebase, Google Maps API.
- Authentication: Google Sign-In via Firebase Auth.
- Data sync: Realtime Database with Cloud Functions for serverless triggers.
- Delivery: Delivered as an Android package, tested on emulators & physical devices.
- Scalability: Firebase handles concurrent users without manual server ops.
Impact
- Simplified how students and coaches at EPFL connect and organize training.
- Demonstrated a production-ready mobile app in a course setting.
- Provided a foundation that could scale to broader use cases in sports coaching marketplaces.
What I learned
- Practical Scrum teamwork and coordination on a real mobile app.
- Integrating multiple APIs (Firebase, Maps) in a coherent UX.
- Importance of real-time features (messaging, live updates) in user adoption.
- Balancing app complexity with time constraints in a semester project.
Future Work
- Add support for payments and booking confirmations.
- Improve recommendation by matching based on user preferences.
- Build an iOS version for broader accessibility.
References
- Firebase documentation (Realtime Database, Authentication, Cloud Functions).
- Google Maps API documentation.
- Jetpack Compose official guides.
- Scrum methodology resources.