We need to build a platform for people to find available trainers in United Kingdom, mostly London. Let’s call this TrainerAPP for now (name pending).
The trainers can be found by geo location (which the trainer enters into the system, there may need to be multiple locations per trainer). Each trainer has a rating (1-5 stars) so a user knows how good the trainer is.
The app will use Google Maps API heavily. It need to be fast and simple.
Please see this Ionic template (http://market.ionic.io/themes/ionic-2-taxi) for what the frontend should look like. I will purchase this template, edit slightly and provide a Github + I’ll provide the Firebase 3 project / database access.
A user registers or logs into the app. The main screen (from above template) needs to show possible trainers (and their locations) near the user. The user would then tap a trainer to see their profile and availability. Then be able to book the trainer.
Please quote in $US dollars for both stages below. Plus supply rough timeline for each.
PAGES (STAGE 1). What I need now (first 3 points most important)
1) Register / Login screens (connected to Firebase Auth / Firebase user profile with uid).
2) FB login etc for users (connected to Firebase and user profile).
3) Main page > search based on trainer type and user’s geo location to show nearby trainers. Trainers are show through indicators on the map, when tapped show profile pic in bubble with trainer name / rating. This needs to be very simple (connects to Firebase for trainer locations and profiles). We can just input the trainer locations / profiles manually for now (no need to be in the app at first).
4) Trainer profile (gets trainer profile info from Firebase). We will manually enter a few trainers info. Ratings are needed for all trainers (default set to 3 stars out of 5).
5) Temp trainer schedule screen (get trainer schedule from Firebase but we can enter schedule info manually for now).
6) Temp “Confirm booking” screen.
7) User profile / change password etc.
1) There are 3 types of trainers: 1. Gym 2. Home 3. Outdoor
2) Based on template: There should only be one box at the top (Where you want to workout) instead on two (pick-up, drop-off). The box should be able to have text-input location search also (which doesn’t use user’s current location to find a trainer).
3) I’ll edit the template to replace the colours, logo, taxi etc icons.
4) In the future the user should be able to select a date / day of week to narrow down their search for a trainer.
5) Keep in mind there will be other search filters in the future like male/female, freelance/club-employee, actives e.g. yoga, cross-fit, bootcamp, etc.
6) Your code must be fully commented.
7) Firebase database structure is very important. It needs to be very scalable and based around this important information > https://firebase.google.com/docs/database/web/structure-data
Note: We need to refer to trainer as client (so we have users and clients, not users and trainers in the database) and client type as 1,2,3. See potential database structure attached (with sample data). Happy to hear your comments on attached also.
PAGES (STAGE 2). What I’ll need later.
1) Calculate distance from user location / selected location to selected trainer > show on schedule / booking page after tapping a trainer.
2) Contact trainer, chat system also using Firebase (only once booked). Plus, use Push notifications.
3) User Forgotten password feature etc.
4) Register / login as trainer. Profiles for trainers.
5) Ability for trainer to enter multiple locations for users to find them.
6) Ability for trainers to enter and maintain their schedule for bookings and availability. Plus, show availability to users in search results.
7) Ability for users to enter training schedule / date range. In the template, replace "Choose your drop-off above" with a date range picker which search will be based on. If no date range then the search for nearby trainers isn’t affected by availability.
8) Pricing page / How it works screen > this is static text info.
9) “Confirm booking” screen which leads to Stripe payments.
10) Ability for users and clients.
11) Promo popup for specific client profiles.