SpotMe
Finding a gym buddy to help maintain motivation for a long-term fitness regimen can be a challenging (and sometimes awkward) task... enter SpotMe!
SpotMe is a database-driven web application in which users can register with their gym(s) of choice, and find other registered users to share in their collective workout experience.
Contributors
Brian Fletcher | Caroline Tan | Ezzedine Alwafai | Gunnar Runkle | Scott Borecki | Taylor Varoglu |
---|---|---|---|---|---|
GitHub | GitHub | GitHub | GitHub | GitHub | GitHub |
Table of Contents
Links |
---|
Tools Used |
Setup |
Learning Goals |
Database Schema |
Wireframes |
Tools Used
Development | Development | Testing | Deployment |
---|---|---|---|
Ruby 2.7.2 | Git | RSpec for Rails | Heroku |
Rails 5.2.6 | Github | Capybara | CircleCI |
Pry | Bootstrap | Webmock | |
PostgresQL | HTML5 | VCR | |
Postico | CSS3 | Launchy | |
OmniAuth Google OAuth2 | Rubocop | FactoryBot | |
Figaro | Atom | Faker | |
Faraday | SimpleCov | ||
Postman |
Setup
This project requires Ruby 2.7.2.
- Fork this repository
- From the command line, install gems and set up your DB:
bundle install && bundle update
rails db:{create,migrate}
- Run the test suite with
bundle exec rspec -fd
- Run your development server with
rails s
to see the app in action.
Project Configurations
-
Ruby version
$ ruby -v ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin20]
-
$ rails -v Rails 5.2.6
-
Database creation
$ rails db:{drop,create,migrate,seed} Created database 'spot_me_frontend_development' Created database 'spot_me_frontend_test'
-
#Gemfile gem 'omniauth-google-oauth2' gem 'omniauth-rails_csrf_protection'
$ bundle install
-
Visit https://console.developers.google.com - Select your project - From the Credentials section: - Select the "OAuth consent screen" tab on top, and provide an 'EMAIL ADDRESS' and a 'PRODUCT NAME' - Wait 10 minutes for changes to take effect.
-
Visit https://www.yelp.com/developers/documentation/v3/get_started - Sign up for an account - To register for an API key, from within your account settings page: - Click on your avatar or initials in the main navigation - Click the "Settings" link - Click the "API" link in the left sidebar - Click "Create" or "click here" on the API page - This repo will be utilizing the `v3` token.
-
$ bundle exec figaro install
Add your credentials & API keys to
config/application.yml
:#Frontend Repo: GOOGLE_CLIENT_ID: <your client id> GOOGLE_CLIENT_SECRET: <your client secret> #Backend Repo: yelp_api_key: 'Bearer <your v3 token>'
-
How to run the test suite
$ bundle exec rspec -fd
-
Local Deployment, for testing
$ rails s => Booting Puma => Rails 5.2.6 application starting in development => Run `rails server -h` for more startup options Puma starting in single mode... * Version 3.12.6 (ruby 2.7.2-p137), codename: Llamas in Pajamas * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://localhost:3000 Use Ctrl-C to stop
-
Heroku Deployment, for production
Learning Goals
⭐ Use an external OAuth provider to authenticate users
⭐ Organize and refactor code to be more maintainable
⭐ Write model and feature tests that fully cover data logic and potential user behavior
⭐ Utilize Continuous Integration via Travis CI or CircleCI
⭐ Implement a production-quality user interface using Bootstrap or other common CSS styling framework
⭐ Implement project management by using project boards, participating in daily stand-ups and retros
⭐ Utilize quality workflow practices: small commits, descriptive pull requests, and code reviews
Database Schema
Wireframes
Home Page | User Registration | User Dashboard | User Profile #1 | User Profile #2 | User Profile #3 | Edit Profile | Gym Index | Gym Show Page #1 | Gym Show Page #2 | New Event Page
The following section displays a comparison of our vision and how our vision came to life.
Home Page
Wireframe | Production |
---|---|
User Registration
Wireframe | Production |
---|---|
User Dashboard
Wireframe | Production |
---|---|
User Profile No. 1
When you visit your own profile
Wireframe | Production |
---|---|
User Profile No. 2
When you visit the profile of a user you follow
Wireframe | Production |
---|---|
User Profile No. 3
When you visit the profile of a user you do not follow
Wireframe | Production |
---|---|
Edit Profile
Wireframe | Production |
---|---|
Gym Index
Wireframe | Production |
---|---|
Gym Show Page No. 1
When you are not a member of the gym
Wireframe | Production |
---|---|
Gym Show Page No. 2
When you are a member of the gym
Wireframe | Production |
---|---|
New Event Page
Wireframe | Production |
---|---|
Acknowledgements
- Background Image: Unsplash
- SVG Icons: Linea Iconset is a free iconset designed by Dario Ferrando
- Google Cloud Platform
- Yelp API