Source Code
The software that powers this website is free software. Moving the codebase to a distributed versioning system like Git is on our list of things to do, but until then, you can download the tarball below.
The software is a custom Rails application, built over the course of a few weeks within the agile development paradigm, and a perusal of the code should suggest to the attentive programmer some of both the strengths and weaknesses of this approach.
It has the following functionality:
- Basic multiuser CMS (add, edit, retrieve, delete, and hierarchically organize "pages") with user list (username/password, with password change/reset/etc.) and automatically generated navigation
- Collect information (in our case, activities, employment, and education information) on individuals applying to anything (in our case, a Fellowship program) and review and vote on "applicants" with a "reviewer" system
- Send and track emails to groups of users/applicants (very rudimentary email contact solution)
- Basic photo gallery (manageable without HTML knowledge)
- Basic document-sharing system with tagging
- Basic calendaring system
- Functional (but not comprehensive) Level 2 Google Checkout integration (for allowing "applicants" to pay application fees, and to keep track of when they have paid)
The software was created specifically for StartingBloc, but it is licensed under the GNU Affero General Public License ("GNU AGPL"), so if you want to use the code for something:
- Please feel free; but
- be aware that the codebase is not optimized for general use; and
- feel free to email the developer, Six Silberman, at six@[this domain] if you have any questions.
Release 20080814 Download (400 KB TAR)
Note: The codebase has been developed simultaneously with StartingBloc's Facebook application (also a Rails application), and is designed to use the same database. As a result, there is some code in the 'login' controller that checks for existing accounts that will not be of much use for most other uses. Finally, this version of the application relies on a "countries" table in the database to provide names of countries; it might be cleverer to use Rails' COUNTRIES constant.
