Skip to content

SpotMe is a 10-day, 6 person project, during Mod 3 of 4 for Turing School's Back End Engineering Program.

Notifications You must be signed in to change notification settings

tvaroglu/spot_me_frontend

Repository files navigation

Contributors Issues Stargazers Forks Build Badge




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
LinkedIn LinkedIn LinkedIn LinkedIn LinkedIn LinkedIn

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]
  • System dependencies

    $ 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'
  • OAuth setup

    #Gemfile
      gem 'omniauth-google-oauth2'
      gem 'omniauth-rails_csrf_protection'
    $ bundle install
  • Google API setup

    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.
  • Yelp API access

    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.
  • API key configuration

    $ 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

    ⭐     Consume two or more external APIs which require authentication
    ⭐     Build APIs that return JSON responses
    ⭐     Use an external OAuth provider to authenticate users
    ⭐     Create a project with a separate frontend and backend
    ⭐     Organize and refactor code to be more maintainable
    ⭐     Implement a self-referential relationship in ActiveRecord
    ⭐     Use Rails to create web pages that allow users to CRUD resources
    ⭐     Create instance and class methods on a Rails model that use ActiveRecord methods and helpers
    ⭐     Write model and feature tests that fully cover data logic and potential user behavior
    ⭐     Utilize Continuous Integration via Travis CI or CircleCI
    ⭐     Deploy to Heroku
    ⭐     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
    ⭐     Write thorough, understandable documentation
    ⭐     Apply RuboCop’s style guide for code quality

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

About

SpotMe is a 10-day, 6 person project, during Mod 3 of 4 for Turing School's Back End Engineering Program.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages