helping college students collaborate, learn, and share their knowledge freely online.
-# Installing
+## Additional resources
+
+[[ discussion groups, chat rooms, etc. related to FC and FC sources ]]
+
+
+
+# Quick install
Requirements:
-- Linux server (circa 2011)
+- A typical Linux server (circa 2011)
- Node.js (Version 0.4.10 or later) [More ...](http://nodejs.org)
- MongoDB (Version 1.8.2 or later) [More ...](http://mongodb.org)
-
-## Quick start for a single server installation
+- forever
$ pwd
/home/you
+ $ install git
+ $ install node
$ git clone git@github.com:/finalsclubdev/FinalsClub fc
$ cd fc
$ git submodule init
[[ flesh this out with correct commands - reference util scripts - fix util scripts ]]
-# Resources
-
-[[ discussion groups, chat rooms, etc. related to FC and FC sources ]]
-
-
-# Database
-
-The database is MongoDB.
-MongoDB is not a relational database, but rather a noSQL or "document/object" database.
-Data is stored as structured objects versus tables and rows.
-(More about MongoDB)[http://mongodb.org].
+# System components
-## Collections in the database
-
-- archivedcourses
- [[ schema needed ]]
-- archivednotes
- [[ schema needed ]]
-- archivedsubjects
- [[ schema needed ]]
-- courses
- [[ schema needed ]]
-- lectures
- [[ schema needed ]]
-- notes
- [[ schema needed ]]
-- posts
- [[ schema needed ]]
-- schools
- [[ schema needed ]]
-- sessions
- [[ schema needed ]]
-- users
- [[ schema needed ]]
+The system consists of these main parts:
+- The website
+- The collaborative, real-time editor
+- The back channel
-## [[ stuff ]]
+Most of the system is written in Javascript and executed by the Node.js runtime.
-[[ notes about scaling/replication/etc. ]]
# Source Code
-The source code for the website itself consists of these main parts:
-
-- The collaborative, real-time editor
-- The back channel
-- The surrounding website
-
-These pieces are written in Javascript for Node.js.
-
## The Collaborative Real-time Editor
-The real-time editor is an embedded editor called
-[Etherpad-Lite](https://github.com/Pita/etherpad-lite) (EPL).
+The editor is an embedded editor called [Etherpad-Lite](https://github.com/Pita/etherpad-lite) (EPL).
It provides the ability for multiple people to simultaneously edit a single document.
The documents in FC are the notes for a specific lecture.
[[ more detail about website generally, then defer to src comments ]]
+# Database
+
+The database is MongoDB.
+MongoDB is not a relational database, but rather a noSQL or "document/object" database.
+Data is stored as structured objects versus tables and rows.
+(More about MongoDB)[http://mongodb.org].
+
+## Collections in the database
+
+- archivedcourses
+ [[ schema needed ]]
+- archivednotes
+ [[ schema needed ]]
+- archivedsubjects
+ [[ schema needed ]]
+- courses
+ [[ schema needed ]]
+- lectures
+ [[ schema needed ]]
+- notes
+ [[ schema needed ]]
+- posts
+ [[ schema needed ]]
+- schools
+ [[ schema needed ]]
+- sessions
+ [[ schema needed ]]
+- users
+ [[ schema needed ]]
+
+
+## [[ stuff ]]
+
+[[ notes about scaling/replication/etc. ]]
+
+
+
# AWS Infrastructure
The actual finalsclub.org servers run in the cloud on Linux servers, using Amazon Web Services (AWS).
+
//
// Data types:
// Posts - Posts are the main items in backchannel, useful for questions or discussion points
-// [[ example object needed]]
+// [[ example object needed with explanation E.G:
+/*
+ Post: { postID: '999-1',
+ userID: '1234',
+ userName: 'Bob Jones',
+ userAffil: 'Instructor',
+ body: 'This is the text content of the post.',
+ comments: { {<commentObj>, <commentObj>, ...},
+ public: true,
+ votes: [ <userID>, <userID>, ...],
+ reports: [ <userID>, <userID>, ...]
+ }
+ Comment: { body: 'foo bar', userName: 'Bob Jones', userAffil: 'Instructor' }
+
+ if anonymous: userName => 'Anonymous', userAffil => 'N/A'
+*/
+//
+//
+//
// Comments - Comments are replies to posts, for clarification or answering questions
// [[ example object needed]]
// Votes - Votes signifyg a users approval of a post
// [[ example needed ]]
// reports - An array of user ids which are the users that reported the post
// [[ reports would be "this post is flagged as inappropriate"? ]]
+// [[ bruml: consistent terminology needed ]]
//
// Posts and comments can be made anonymously. When a post is anonymous, the users info is stripped
// from the post and the userName is set to Anonymous and the userAffil to N/A. This is to allow