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.
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.
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.
Users can edit a score and playback a score after selecting it from the dashboard.
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).
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.
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.
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:
- A
CLIENT_ID
- A
CLIENT_SECRET
. - 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
).
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
.
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.
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.
This project is licensed under the MIT license - see LICENSE.txt for details.