tvaroglu / spot_me_backend

SpotMe is a 10-day, 6 person project, during Mod 3 of 4 for Turing School's Back End Engineering Program.
https://spotme-app.herokuapp.com
4 stars 1 forks source link
json-api microservices postgresql-database rspec-rails ruby-on-rails
![Version][version-badge] [![Contributors][contributors-badge]][contributors-url] [![Forks][forks-badge]][forks-url] [![Stargazers][stars-badge]][stars-url] [![Issues][issues-badge]][issues-url] [![Ruby Style Guide][rubocop-badge]][rubocop-url] ![Build][build-badge] [![SpotMe][front-end-badge]][front-end-url] # [SpotMe](https://spotme-app.herokuapp.com/) This is the back-end architecture of the SpotMe application, which exposes resources for the fitness application front end by consuming the Google OAuth 2.0 and Yelp APIs. Google OAuth allows the app to authorize users and retrieve data, such as their name, email address, zip code, Google ID, Google image URL, and Google token. The incorporation of the Yelp API allows users to search for gyms in their local area based on their zip code. ### SpotMe allows users to:
    🏋🏽   Search for gyms in their local area 🏋
    🏋🏽   Add gyms to their account 🏋
    🏋🏽   Search for SwoleMates that have gyms in common 🏋
    🏋🏽   Add/delete SwoleMates as friends 🏋
    🏋🏽   Schedule/delete workout sessions with SwoleMates 🏋
## Contributors |Brian Fletcher|Caroline Tan|Ezzedine Alwafai|Gunnar Runkle|Scott Borecki|Taylor Varoglu |--- |--- |--- |--- |--- |--- | |[GitHub](https://github.com/bfl3tch)|[GitHub](https://github.com/carolinectan)|[GitHub](https://github.com/ealwafai)|[GitHub](https://github.com/gunnarrunner)|[GitHub](https://github.com/Scott-Borecki)|[GitHub](https://github.com/tvaroglu) |[LinkedIn](https://www.linkedin.com/in/bfl3tch/)|[LinkedIn](https://www.linkedin.com/in/carolinectan/)|[LinkedIn](https://www.linkedin.com/in/ezzedine-alwafai/)|[LinkedIn](https://www.linkedin.com/in/gunnar-runkle/)|[LinkedIn](https://www.linkedin.com/in/scott-borecki/)|[LinkedIn](https://www.linkedin.com/in/taylorvaroglu/) ## Table of Contents |Links |--- | [Tools Used](#tools-used) [Project Overview](#project-overview) [Learning Goals](#learning-goals) [Database Schema](#database-schema) [Endpoints](#endpoints) ## Tools Used |Development|Development|Testing|Deployment |--- |--- |--- |--- | |[Ruby 2.7.2](https://www.ruby-lang.org/en/downloads/)|[Atom](https://atom.io/)|[RSpec for Rails](https://github.com/rspec/rspec-rails)|[Heroku](http://virtual-watch-party.herokuapp.com)| |[Rails 5.2.6](https://rubygems.org/gems/rails/versions/5.2.6)|[GitHub](https://desktop.github.com/)|[Webmock](https://github.com/bblimke/webmock)|[CircleCI](https://circleci.com/)| |[Pry](https://rubygems.org/gems/pry/versions/0.10.3)|[Git](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup)|[VCR](https://github.com/vcr/vcr)| |[PostgresQL](https://www.postgresql.org/)|[HTML5](https://developer.mozilla.org/en-US/docs/Web/HTML)|[SimpleCov](https://rubygems.org/gems/simplecov/versions/0.12.0)| |[Postico](https://eggerapps.at/postico/)|[CSS3](https://developer.mozilla.org/en-US/docs/Web/CSS)| |[OmniAuth Google OAuth2](https://github.com/zquestz/omniauth-google-oauth2)|[Rubocop](https://rubygems.org/gems/rubocop/versions/0.39.0)| |[Faraday](https://github.com/lostisland/faraday)|[FactoryBot](https://github.com/thoughtbot/factory_bot)| |[Figaro](https://github.com/laserlemon/figaro)|| |[Postman](https://www.postman.com/product/rest-client/)|
## Project Overview

This project was developed by Brian Fletcher, Caroline Tan, Ezzedine Alwafai, Gunnar Runkle, Scott Borecki, and Taylor Varoglu during Mod 3 of Turing School's Back End Engineering Program.

Created from scratch and deployed to Heroku in a short period of 10 days, this project consists of a Ruby on Rails web application utilizing a service-oriented architecture. The front-end and back-end applications were both built in Rails. The front end communicates with the back end through an API. The back-end application houses the application database, authenticates users with Google OAuth 2.0, and consumes a third-party Yelp API.

The project description and base requirements can be found here

## Learning Goals

    ⭐     Create a project with a separate front-end and back-end
    ⭐     Use Rails to create web pages that allow users to CRUD resources
    ⭐     Use an external OAuth provider to authenticate users
    ⭐     Build APIs that return JSON responses
    ⭐     Consume two or more external APIs which require authentication
    ⭐     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
    ⭐     Implement a self-referential relationship in ActiveRecord
    ⭐     Utilize Continuous Integration via CircleCI
    ⭐     Deploy to Heroku
    ⭐     Implement a production-quality user interface using Bootstrap or other common CSS styling framework
    ⭐     Implement agile project management via Kanban boards, daily stand-ups, and team retros
    ⭐     Utilize quality workflow practices: small commits, descriptive pull requests, and code reviews
    ⭐     Organize and refactor code to be more maintainable
    ⭐     Apply RuboCop’s style guide for code quality
    ⭐     Write thorough, understandable documentation

## Database Schema

schema

## Endpoints

The base path of each endpoint is:

https://spotme-app-api.herokuapp.com/api/v1

The following table presents each API endpoint and its associated documentation

Users Docs Examples
Find User by Google ID docs example
Get User by User ID docs example
Create New User docs
Update User docs
Friendships Docs Examples
Get User's Friends docs example
Create New Friendship docs
Delete Friendship docs
Events Docs Examples
Get User's Events docs example
Create User New Event docs
Delete Existing Event docs
Gym Members Docs Examples
Get Users at Gym docs example
Get User's Gym Memberships docs
Create Gym Membership docs
Delete Gym Membership docs
Gym Search Docs Examples
Get Gyms Near User docs example
Get Gym Show Page docs example