- Summary
- Installation
- Requirements
- User Stories
- Wireframing
- Workflow Diagram
- Entity Relationship Diagram
- List of Tools Used
- Project Plan
- Future Updates
Link : https://clevercat.xyz/
This app was designed as part of the CoderAcademy assignment to build a two-sided marketplace.
PROBLEM DEFINITION It is difficult to find a tutor cheaply and quickly. There was a time when finding a tutor relied upon recommendations from friends or looking through newspaper adverts. Often you have to sign up through an agency and tutors can be expensive and slow to find. I decided on a tutoring app whilst trying to find a piano teacher for my son. It was impossible to find a tutor to meet on my time and schedule. Students need to find a tutor in real time and cheaply.
SOLUTION With the immense growth and popularity of on-demand services in other major industries, it makes sense that tutoring will follow. A tutoring app solves a real problem for students of all ages and parents — to find an affordable and knowledgeable tutor on-demand.
The design is based on a two sided marketplace whereby tutors can advertise their skills and students can search for tutors based on their skills and locations. Tutors are offered and reviewed online. The app allows you to seamlessly contact tutors nearby and schedule a session at a fraction of the cost of traditional services.
Configuration - you will not have an ENV file as this has been ignored through Git. In order to run the App you will need to create a .env file with your own mailgun and stripe API keys.
- Clone the repo then change into the directory.
- Run
bundle install
in terminal. - Run
rails db:migrate
in terminal. - Create a
.env
file in the root of the directory, then add your own ENV variables :STRIPE_PUBLISHABLE_KEY=XXXX
STRIPE_SECRET_KEY=XXXX
POSTGRES_PASSWORD=XXXX
MAILGUN_API_KEY=XXXX
MAILGUN_DOMAIN_KEY=XXXX
- Create your application using Ruby on Rails
- Demonstrate knowledge of Rails conventions.
- Use postgresql database in development.
- Use an API (eg. Omniauth, Geocoding, Maps, other..).
- Use appropriate gems.
- Use environmental variables to protect API keys etc.
- Implement a payment system for your product.
- Your app must send transactional emails (eg. using Mailgun).
- Your app should have an internal user messaging system.
- Your app will have some type of searching, sorting and or filtering capability.
- Your app will have some type of file uploading capability (eg. images).
- Your app will have authentication (eg. Devise, must have full functionality in place).
- Your app will have authorisation (users have restrictions on what they can see and edit).
- Your app will have an admin dashboard for the admin user to administrate the site.
- Document your application with a README that explains how to setup, configure and use your application.
- Github - Version control, user stories and to assign story points for project management.
- Lucidchart - ERD
- postgresql - Database
- Devise - authentication
- Devise-Bootstrap-Views - Devise Styling
- aws-sdk - AWS S3 bucket
- Namecheap - domain purchase
- Cloudflare - DNS server
- Webhosting - Heroku
- Mailgun - emails
- Stripe - payments
- Rubocop - code quality
- Balsamiq - wireframing
- Paperclip - image uploads
- dotenv-rails - environmental variables
- geocoder - longitude latitude geocoding
- Google Maps - map locations
- activeadmin - admin dashboard
- Peer code review
- If two users are from the same location you can not zoom into the map.
- Conversations path is not viewable.
- I would like to add a function where students can ask an instant question to be answered by a tutor.
- Functions to search by skill and location.