Joe Hitchens 8 years ago
parent
commit
693f28e76a
2 changed files with 76 additions and 50 deletions
  1. 56 49
      README.md
  2. 20 1
      app.js

+ 56 - 49
README.md

@@ -7,18 +7,25 @@ FC is a 501(c)(3) non-profit open education project dedicated to
 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
@@ -27,62 +34,24 @@ Requirements:
 	[[ 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.
 
@@ -131,6 +100,43 @@ Several node modules are leveraged to to make the basic website work:
 [[ 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).
@@ -159,3 +165,4 @@ NOTE: We still have an ongoing issue with the EPL server hanging up.  This is be
 
 
 
+

+ 20 - 1
app.js

@@ -1648,7 +1648,25 @@ app.get( '/archive/note/:id', loadUser, function( req, res ) {
 //
 // 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
@@ -1669,6 +1687,7 @@ app.get( '/archive/note/:id', loadUser, function( req, res ) {
 // 		[[ 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