4 This is the source code repository for [finalsclub.org](http://finalsclub.org/).
6 FC is a 501(c)(3) non-profit open education project dedicated to
7 helping college students collaborate, learn, and share their knowledge freely online.
14 - Linux server (circa 2011)
15 - Node.js (Version 0.4.10 or later)
16 - MongoDB (Version 1.8.2 or later)
18 ## Quick start for a single server installation
22 $ git clone git@github.com:/finalsclubdev/FinalsClub fc
25 $ git submodule update
27 [[ flesh this out with correct commands - reference util scripts - fix util scripts ]]
32 The database is MongoDB.
33 MongoDB is not a relational database, but rather a noSQL or "document/object" based database.
34 Data is stored as structured objects versus tables and rows.
35 (More about MongoDB)[http://mongodb.org].
64 The source code for the website itself consists of these main parts:
66 - The collaborative, real-time editor
68 - The surrounding website
70 These 3 pieces are written in Javascript for Node.js.
72 ## The Collaborative Real-time Editor
74 The real-time editor is an embedded editor called
75 [Etherpad-Lite](https://github.com/Pita/etherpad-lite) (EPL).
76 It provides the ability for multiple people to simultaneously edit a single document.
77 The documents in FC are the notes for a specific lecture.
80 ## The Back Channel (BC)
82 The back channel portion of FC is implemented with ["BC"](https://github.com/FinalsClubDev/bc).
83 BC allows the note takers, or anyone else who is just observing,
84 to suggest questions for the lecturer, and vote on each other's questions.
85 It also allows people to post commentary.
87 Although the actual BC code was written for FC, it has been extracted from the original
88 FC source and turned into an independent open source project.
91 ## The Surrounding Website
93 This is the FC website, which brings together the other two elements into
94 a single website that serves it's stated purpose (above).
95 This would be the home page, privacy policy page, the page that lists the participating
96 schools, the sub pages containing lists of lectures and note taking sessions, and the
97 core page where EPL and BC are both found along side each other.
103 The actual finalsclub.org servers run in the cloud on Linux servers, using Amazon Web Services (AWS).
104 Scaling is accomplished by adding additional servers to a load balancer.
106 NOTE: The scaling system is automatic; new servers have to be added manually, but it it's very easy.
107 NOTE: Automatic fail-over of the database is not yet in place.
109 NOTE: There are currently 2 running server instances. One for the live server and one for testing.
111 Data is stored in a MongoDB server running on the same AWS instance as the website.
112 Data is backed up daily to the durable AWS S3 system.
113 One backup of the database is kept for the most recent 30 days, one for each of the most
114 recent 12 months, and one for every year.
116 AWS Cloudwatch is used to monitor the servers.
117 When the configured conditions warrant attention, notices are sent to "info@finalsclub.org".
119 NOTE: There are currently 2 monitors set up:
121 - available disk space
124 NOTE: We still have an ongoing issue with the EPL server hanging up. This is being worked on.