From 693f28e76add00fb644c27833528016050bd0193 Mon Sep 17 00:00:00 2001 From: Joe Hitchens Date: Sat, 12 Nov 2011 12:03:04 -0800 Subject: [PATCH] docs --- README.md | 105 +++++++++++++++++++++++++++++------------------------- app.js | 21 ++++++++++- 2 files changed, 76 insertions(+), 50 deletions(-) diff --git a/README.md b/README.md index 149f1b5..8c2a355 100644 --- a/README.md +++ b/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 + diff --git a/app.js b/app.js index 722e164..295cfbe 100644 --- a/app.js +++ b/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: { {, , ...}, + public: true, + votes: [ , , ...], + reports: [ , , ...] + } + 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 -- 2.25.1