Skip to content

Latest commit

 

History

History
309 lines (213 loc) · 8.8 KB

README.md

File metadata and controls

309 lines (213 loc) · 8.8 KB

Contributors Issues

IONO (Where to Eat)

Have you found yourself in a state of IONO ("I don't know") where to eat tonight? Let the IONO app help out with that! This app was designed to provide visitors with a restaurant to solve their culinary woes, based on their location, and filters available to authenticated users.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Highlights
  5. Learning Goals
  6. Known Issues
  7. Future Goals
  8. Contact
  9. Acknowledgments

About The Project

IONO

Built With

  • Rails
  • Bootstrap

(back to top)

Getting Started

(for Mac)

Prerequisites

  • Ruby Version 2.7.4
  • Rails Version 5.2.7
  • Bootstrap Version 4.6.2

Gems Utilized for Testing and Development

  • RSpec
  • Pry
  • SimpleCov
  • Shoulda-Matchers
  • Factory_Bot_Rails
  • Faker
  • jsonapi-serialize
  • Webmock
  • VCR

Globally Utilized Gems

  • Omniauth-google-oauth2
  • Figaro
  • Bootsnap
  • JQuery-rails

Installation

  1. Create a parent directory for the IONO frontend and backend applications. Both repositories will live in this directory. On your local machine open a terminal session and enter the following command:
$ mkdir IONO
  • Navigate into this directory using the $cd command.
$ cd IONO
  1. Clone this repository:
    Enter the following commands for SSH or HTTPS to clone the frontend application repository.
  • using ssh key
$ git clone [email protected]:IONO-where-to-eat/iono_fe.git
  • using https
$ git clone https://github.com/IONO-where-to-eat/iono_fe
  • Once cloned, you'll have a new local copy in the directory you ran the clone command in. Navigate into the frontend directory using the $cd command.
$ cd iono_fe
  1. Install required gems:
    In terminal, use Bundler to install any missing Gems. If Bundler is not installed, first run the following command.
$ gem install bundler
  • If Bundler is already installed or after it has been installed, run the following command.
$ bundle install
$ bundle exec figaro install
  1. You will now need to navigate to the parent directory and set up the backend application.
$ cd ..
  1. Clone the backend repository:
    Enter the following commands for SSH or HTTPS to clone the frontend application repository.
  • using ssh key
$ git clone [email protected]:IONO-where-to-eat/iono_be.git
  • using https
$ git clone https://github.com/IONO-where-to-eat/iono_be
  • Navigate into the backend directory:
$ cd iono_be
  1. Install required gems:
$ bundle install
$ bundle exec figaro install

The following steps apply to both frontend and backend


  1. Database Migration
    Before using the web application you will need to setup your databases locally by running the following commands:
$ /iono_fe main $ rails db:{drop,create,migrate}
$ /iono_be main $ rails db:{drop,create,migrate}
  1. Startup and Access
    Finally, in order to use the web app you will have to start servers locally and access the app through a web browser.
  • Start servers
$ /iono_fe main $ rails s
$ /iono_be main $ rails s

(back to top)

Usage

Visit site IONO or on local

Click 'Where to Eat'

Landing

View the randomized restaurant selection

Visitor Results

Click Shuffle

View the next restaurant in the randomized list

Visitor Shuffle

Click Home link

Click Login with Google

Fill in filters as desired

Click Find Me Food

Dashboard

View the randomized restaurant selection

User Results

Click Shuffle

View the next restaurant in the randomized list

User Shuffle

Click Logout link

Landing

(back to top)

Highlights

  • Google OAuth2: For authenticated access, IONO implements Google OAuth2 using the OmniAuth gem. From the homepage, users are prompted to login using Google and routed to a screen where they allow Google to share user information and provide an authenticity token to use for the session. The OmniAuth gem also supports testing with features that allow IONO to mock Google account info for complete feature test coverage.

(back to top)

Learning Goals

  • The goal of this project is to create a successful web application from a student-led project idea. The team will create an app that will solve a real world problem, and allow users to authenticate with a third-party service, and consume at least two other apis.

(back to top)

Known Issues

  • When deploying to production using Heroku, it was discovered that Heroku adds a "X-Path-Header" to the API request which alters the IP address when using the app. The results for both visitors and registered users default to a Virginia zip code and do not reflect the users actual longitude and latitude. After much research and consideration, it was decided to keep the app deployed on Heroku as is due to the unknown, looming changes to Heroku accounts. All features have been tested on a local server and operating as expected.

(back to top)

Future Goals

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contact

Project Link: https://github.com/IONO-where-to-eat

Acknowledgments

(back to top)