Skip to content

Community Compose is a group project for mod 3 of Turing. It is intended to be a social media platform for composers in a given area. Composers can collaborate on scores using an embedded editor from flat.io.

License

Notifications You must be signed in to change notification settings

zachholcomb/community_compose

Repository files navigation

COMMUNITY COMPOSE

Welcome to Community Compose! We're glad you found us.

We are a Ruby on Rails application that integrates with an online music notation software to provide music composers an opportunity to meet, socialize, and collaborate with other musicians in their geographic area.


Why?

Community Compose was created by Zach Holcomb, Kevin McGrevey, Tyler Porter, and Andrew Reid as a class project for the Turing School of Software and Design's Back End Engineering program.

The idea for this application came from Zach, who had used music notation software previously and felt that it was missing an important "social media" aspect.


Features

After authenticating with OAuth 2.0 via Flat.io and registering for Community Compose, users can create a score by clicking the link on the dashboard. After providing a name & specifying the type, the user will be redirected to a Flat.io interface to write their new piece of music.

On the dashboard, users can view all scores they own and collaborate on, listed in descending order of the most recently edited. dashboard

Users can edit a score and playback a score after selecting it from the dashboard. edit

The explore page will show users scores from other users in their geographic area (defined as zip codes within 10 miles of the user's zip code). explore

When viewing a score composed by somone else, a user can request to collaborate. Once approved by the score's owner, they'll have full edit access to that score.

Users can communicate in-app using the message feature.


Technology & Frameworks

Community Compose is built using Ruby on Rails. It uses a Sinatra microservice to call a RapidAPI location API to identify users in the same geographic proximity. Users are required to have Flat.io accounts to login and compose music. Community Compose is hosted on Heroku with continuous integration from TravisCI.


Running Locally

To run this project locally, fork, clone, and run bundle install.

Install the Figaro gem, which will create a config/application.yml file.

This file needs three values:

  1. A CLIENT_ID
  2. A CLIENT_SECRET.
  3. A CALLBACK

The CLIENT_ID and CLIENT_SECRET must be requested from Flat.io. As part of this request, you must specify a callback URI (we recommend http://localhost:3000/auth/flat/callback) and the neccessary scopes (we recommend scores and account.public_profile).


Testing

Code is tested using RSpec with Capybara. Test coverage is assessed by SimpleCov at greater than 95%.

Tests are located in the spec folder and grouped into features and models. Webmock is used to mock API calls and FactoryBot and Faker are used to generate dynamic test data.

To run tests locally, download this repo and run bundle exec rspec.


Roadmap

Future planned development includes greater adoption of Flat.io features, including the ability to fork and comment on scores. Increased in-app messaging, activity feeds, and the ability to see other users on a "Google Maps"-type interface are also planned.


Credits

We could not have built this project without the cooperation of the team at Flat.io, who provided configuration assistance and developed the RESTful API with which we interact.

Brian Zanti was the Turing instructor assigned as our project manager on this project and provided invaluable direction. He, along with the rest of the Turing instructional staff, receive credit for helping us learn the skills applied in this project.


License

This project is licensed under the MIT license - see LICENSE.txt for details.

About

Community Compose is a group project for mod 3 of Turing. It is intended to be a social media platform for composers in a given area. Composers can collaborate on scores using an embedded editor from flat.io.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published