This product aims to help users find locations for leisure activities near them which fit their mood and needs.
The third place is disappearing; a physical location to go to between work/school and home. This application aims to help people find a sense of connection by allowing users to input their current mood and likes with a response of places that may help them find a sense of inclusion (or just help them destress from their daily lives).
OS X & Linux: This project runs on Rails 7.0.8.
Fork and clone this repository, which is the front-end of our application.
Fork and clone this repository to access our back-end.
Windows:
This product is not compatible with Windows.
SIGN UP for a FREE TomTom API Key to access the locations through the back-end API calls here.
There are plenty of people who, for a variety of reasons, may wish to find a location to relax beyond their home. This application takes into account the following needs:
- Mood
- Accessibility Needs
- Money the user wishes to spend
- Whether the space is sober
- Calm
- Studious
- High Energy
- Loud
- Quiet
- Relaxed
- Friendly
To provide feedback (including ideas for other moods to be added to our list), contact one of our members in the Staff list below or create a pull request using the instructions outlined in Contributing.
Third Space can provide a list of locations based on a number of criteria indicated by the user.
Users can create an account using their email. This product includes 2 Factor Authentication via rotp. Once an account has been made, the user will be able to login and see their User Dashboard. OmniAuth was utilized to allow for login through Google.
The user will find a Recommended Locations section, which lists a selection of the 5 closest locations that match the user's current mood/needs.
The Saved Locations section will list locations previously saved by a user.
The user can also access a larger number of locations near them by clicking on "See All" under the Recommended Locations or Saved Locations sections.
The most important part of this product is the ability to add moods to locations. When a user visits a page for a specific location, they are invited to add the moods that they experienced while in this location. Over time, the mood data will become more robust as more locations are reviewed. This application will organize the moods in order of the most commonly reported mood to least common. So, if 20 people experience a Relaxed mood and 2 experience a Loud mood, the Relaxed mood will be shown first. Given that there are no moods with more reports, Relaxed will be listed as the "Top Mood" for a location, and this will be displayed under the location name on all pages listing the location.
Download both our front end and back end applications.
Start the server on the back end and front end applications by typing the following in the terminal of both.
rails s
NOTE: The back-end application should be running on PORT 5000, while the front-end application should be running on PORT 3000.
Run the following code in your terminal to install the gems required to use this application:
bundle install
Check to make sure all the tests are passing by running the following code in your terminal:
bundle exec rspec
The front end repository handles most of what the user will interact with, including routing and page rendering.
Geocoder was used to provide geolocation
Omniauth was used for Oauth.
Bootstrap was used extensively for design on the front end.
Example of bootstrap code
<input class="form-control me-2" id="name" name="name" type="text" placeholder="search by name" aria-label="Search" style="flex-grow: 1;">
<button class="small-default-button" type="submit" style="margin-right: 2rem;">Search</button>
</form>
Our application includes extensive testing using the Capybara gem to simulate user input and interaction.
This application also uses the Launchy Gem to view pages in the browser without needing to start the server.
The Shoulda Matchers Gem is used for one-liner testing of models.
The Orderly Gem is used to check the order in which items appear on the pages for our application.
The SimpleCov Gem provides test coverage analysis for our application.
The FactoryBot and Faker Gems was used to create large amounts of data for testing.
The Rails Controller Testing gem was used to test some controller actions, such as assign
to access instance variables and assert
to make sure certain templates were rendered
The back end handles API calls to the TomTom API as well as accepts post requests from the user for location moods. It simulates API calls using the WebMock gem and the VCR gem.
Both use the Pry gem and RSpec Rails within the testing environment for unit and feature testing.
In the testing environment, a static OTP code was used.
Main Support Email: [email protected]
Shawn Carpenter: Email LinkedIn
Brendan Bondurant: Email LinkedIn
Nathan Trautenberg: Email LinkedIn
- Fork it (https://github.com/shawndcarpenter/third_space_fe)
- Create your feature branch (
git checkout -b feature/fooBar
) - Commit your changes (
git commit -am 'Add some fooBar'
) - Push to the branch (
git push origin feature/fooBar
) - Create a new Pull Request