sfcma / members

1 stars 1 forks source link

README

This is the Membership Management System ("the system") used by the San Francisco Civic Music Association. It is a fairly basic Rails app, with a few standard gems on top of it. It is made to run on a single Heroku dyno, plus database.

Note that there is no current JS pre-processing that occurs.

Purpose

The system is used for several key areas of SFCMA's activities:

  1. Having a central repository for all member contact information
  2. Recording which members are playing in which groups, and having that be accessible to all relevant parties
  3. Being able to contact current lists of members in each group through email
  4. Allowing members to opt into playing
  5. Allowing members to record their absences, and for the musical leadership to know these absences in advance
  6. Collecting data to be used in reporting to the Board, membership, and for grants/funding.

Here is a basic overview of the data model:

Data Model

Key Models:

Members is the core model, representing the players.

Users are the login accounts. While there is a large overlap with members, we have chosen to not link the two

Ensembles represent each of the ensembles in SFCMA, such as the Civic Symphony.

PerformanceSets represent a single set of rehersals and concerts where an ensemble plays the same music with the same group of musicians. Most Performance Sets in SFCMA ensembles have a eight rehearsals and a single concert, but that is not always the case.

MemberSet is the join table between members and the performance sets that they participate in. Additional data about the player's participation is stored in this table, except the instrument.

SetMemberInstrument is an additional table that records the instruments played by the member for a given performance set, since there can be more than one.

Setup

  1. Install Ruby 2.7.3 using RVM or rbenv

  2. Install heroku cli, sqlite3, postgres, pkg-config, and imagemagick: sudo apt-get install heroku-cli sqlite3 progresql pkg-config imagemagick libmagick++-dev

  3. Run git clone https://github.com/sfcma/members.git .

  4. In that folder, run ruby -v and make sure it matches the correct version

  5. Run gem install bundler

  6. Run bundle install

  7. Run heroku git:remote -a limitless-sierra-92168 to set up correct remote repo

  8. Output from git remote -v should look like this:

    heroku https://git.heroku.com/limitless-sierra-92168.git (fetch) heroku https://git.heroku.com/limitless-sierra-92168.git (push) origin https://github.com/sfcma/members.git (fetch) origin https://github.com/sfcma/members.git (push)

  9. Run ruby db:setup

  10. Run rails s to start server

  11. Visit http://locahost:3000