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.
🏋🏽 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 🏋
Brian Fletcher | Caroline Tan | Ezzedine Alwafai | Gunnar Runkle | Scott Borecki | Taylor Varoglu |
---|---|---|---|---|---|
GitHub | GitHub | GitHub | GitHub | GitHub | GitHub |
Links |
---|
Tools Used |
Project Overview |
Learning Goals |
Database Schema |
Endpoints |
Development | Development | Testing | Deployment |
---|---|---|---|
Ruby 2.7.2 | Atom | RSpec for Rails | Heroku |
Rails 5.2.6 | GitHub | Webmock | CircleCI |
Pry | Git | VCR | |
PostgresQL | HTML5 | SimpleCov | |
Postico | CSS3 | ||
OmniAuth Google OAuth2 | Rubocop | ||
Faraday | FactoryBot | ||
Figaro | |||
Postman |
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
⭐ 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
The base path
of each endpoint is:
https://spotme-app-api.herokuapp.com/api/v1
- For
GET
requests, you can send the endpoint requests through your internet browser, or utilize an API client (i.e. Postman) - For any other requests (i.e.
POST
,PATCH
,DELETE
), you will need to use an API client to provide the required request body
The following table presents each API endpoint and its associated documentation
- For
GET
requests, an example link is provided for demonstration purposes
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 |