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
-
About The Project
-
Getting Started
- Usage
- Highlights
- Learning Goals
- Known Issues
- Future Goals
- Contact
- Acknowledgments
About The Project
Built With
(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
- 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
- Clone this repository:
Enter the following commands for SSH or HTTPS to clone the frontend application repository.
-
using ssh key
$ git clone git@github.com: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
- 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
- You will now need to navigate to the parent directory and set up the backend application.
$ cd ..
- Clone the backend repository:
Enter the following commands for SSH or HTTPS to clone the frontend application repository.
-
using ssh key
$ git clone git@github.com: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
- Install required gems:
$ bundle install
$ bundle exec figaro install
The following steps apply to both frontend and backend
- 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}
- 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.
$ /iono_fe main $ rails s
$ /iono_be main $ rails s
(back to top)
Usage
Visit site IONO or on local
Click 'Where to Eat'
View the randomized restaurant selection
Click Shuffle
View the next restaurant in the randomized list
Click Home link
Click Login with Google
Fill in filters as desired
Click Find Me Food
View the randomized restaurant selection
Click Shuffle
View the next restaurant in the randomized list
Click Logout link
(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)