We want to see you learning what you're interested in and sharing what you know how to do. http://library-school.herokuapp.com
##Description
At its simplest, Library School is a tool to connect members of a community both with others who share their learning goals and with local content experts to lead participants toward those goals.
- Propose a course
- See what proposals are out there
- Express an interest in a proposed course
- Offer to lead a course for a particular proposal
- See what courses offerings are out there
- Express an interest in enrolling in a course offering
Once a course has been offered for a proposal and enough people have expressed interest in enrolling, we reach out to the course instructor and those interested to work out the details of when and where.
##Thought process behind LibrarySchool
Many libraries try to offer courses that they suspect members of the public will be interested in. Library School provides the data to support what classes are offered so that they actually represent the interests of the library’s community.
Community interest areas often extend beyond the expertise of a library's staff. Library School relies on pulling rather than pushing. Instead of staff using their connections to identify course leaders, those leaders identify themselves. Of note, course leaders don’t need to be experts themselves, per se. So long as they can find resources, be they available curricula, video lectures, etc. and are willing to lead participants through their course offering.
Since participants express their interest to enroll in a course based on the course leader’s course description and objectives, participants effectively take the onus of vetting courses and their course leaders on themselves.
How do we decide how many participants is enough? Course leaders specify the minimum and maximum number of students they are willing to teach. Once a course reaches the minimum number of students, that’s when we start to organize meetings.
- Ruby 2.1.2 (rvm or rbenv highly recommended for installation)
- Bundler 1.6
- MySQL 5.5 (Production)
- SQLite (For local development, temporarily)
From root of project directory run bundle install
For now SQLite is used for local development, but this will change soon. We are using MySQL on production and this should be reflected in development.
The database configuration, database.yml
is not kept in the repository. You will need to write it yourself and place in config
. An example database.yml
for SQLite can be found here
Next, you will need to bootstrap the database by running rake db:create
, rake db:schema:load
, and rake db:seed
.
The default sign-in credentials are e-mail address [email protected]
with changeme
as the password. You can actually change this before you run the bootstrapping process by editing config/secrets.yml
.
You can either run guard
or rails s
. guard
will reboot the development server when relevant files are changed, which is handy. It will also run tests as you work. By the way, we need more tests. Help us write them!
The absolute easiest method is via Heroku, that is definitely not required. Regardless of how you choose to deploy, install the prerequisites and ensure the following environment variables are set:
Environment Variable | Value |
---|---|
ADMIN_NAME | Admin's personal name |
ADMIN_EMAIL | Admin's e-mail address |
ADMIN_PASSWORD | Admin's password |
DOMAIN_NAME | Domain name of app |
SECRET_KEY_BASE | Rails session secret key |
ADMIN_NAME
, ADMIN_EMAIL
, and ADMIN_PASSWORD
are used temporarily to bootstrap the initial admin user on production, so you may clear those out after the database bootstrapping process.
In ruby, a secret key can be generated with
SecureRandom.hex(64)
Copyright (C) 2014 Chattanooga Public Library
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see: http://www.gnu.org/licenses/