Front and back end Ruby on Rails web app where non-professional cleaners can find customers who are able to setup appointments for somebody to clean their home through the app. Customers
can create an appointment request, and Cleaners
can view all not yet assigned appointments and assign them to themselves or make them available again. Features:
- standard, Google, and Facebook authentication
- messaging between
Cleaner
andCustomer
To get the Rails server running locally:
- Clone this repo
bundle install
to install all required dependenciesrake db:migrate
to make all database migrationsrails s
to start the local server
- fomantic-ui-sass - For front end framework
- omniauth - For implementing standardized Multi-Provider Authentication
- omniauth-facebook - Facebook OAuth2 Strategy for OmniAuthAuthentication
- omniauth-google-oauth2 - Google OAuth2 Strategy for OmniAuthAuthentication
- jquery-rails - For use of jquery JavaScript library
app/models
- Contains the database models for the application where we can define methods, validations, queries, and relations to other models.- A
User
has_onesub_class
of typesCleaner
andCustomer
. - A
Cleaner
andCustomer
has manyAppointments
. ACleaner
has manyCustomers
throughAppointments
and vice-versa. - A
Cleaner
belongs_to anInstitution
, and anInstitution
has_manyCleaners
. - A
User
has_manyConversations
- A
Conversation
has manyMessages
- A
app/views
- Contains templates for user interface.app/controllers
- Contains the controllers where requests are routed to their actions, where we find and manipulate our models and return them for the views to render.config
- Contains configuration files for our Rails application and for our database, along with aninitializers
folder for scripts that get run on boot.db
- Contains the migrations needed to create our database schema.
Standard authentication only requires an email and password upon registration.
If you wish to use OmniAuth for Facebook and Google authentications however, create your own .env file in the root folder and fill in your own google or Facebook credentials.
GOOGLE_CLIENT_ID=<your client id here>
GOOGLE_CLIENT_SECRET=<your client here>
FACEBOOK_APP_ID=<your app id here>
FACEBOOK_APP_SECRET=<your app secret here>