             </Row>
         </div>
 
+# Component that renders the "shared project" tab
+SharedProject = rclass
+    displayName : "CourseEditor-SharedProject"
+
+    propTypes :
+        shared_project_id : rtypes.string
+        redux             : rtypes.object.isRequired
+        name              : rtypes.string.isRequired
+
+    getInitialState : ->
+        confirm_create : false
+
+    panel_header_text: ->
+        if @props.shared_project_id
+            "Shared project that everybody can fully use"
+        else
+            "Optionally create a shared project for everybody"
+
+    render : ->
+        <Row>
+            <Col md=6>
+                 <Panel header={<h4><Icon name='users' />  {@panel_header_text()} </h4>}>
+                    {@render_content()}
+                 </Panel>
+            </Col>
+        </Row>
+
+    render_content: ->
+        if @props.shared_project_id
+            @render_has_shared_project()
+        else
+            @render_no_shared_project()
+
+    render_has_shared_project: ->
+        <div>
+            <div style={color:'#444'}>
+                <p>
+                    You created a common shared project, which everybody -- students and all collaborators
+                    on this project (your TAs and other instructors) -- have <b>write</b> access to.  Use
+                    this project for collaborative in-class labs, course-wide chat rooms, and making
+                    miscellanous materials available for
+                    students to experiment with together.
+                </p>
+                <p>
+                    When you created the shared project, everybody who has already created an account
+                    is added as a collaborator to the project.  Whenever you re-open this course,
+                    any students or collaborators on the project that contains this course will be
+                    added to the shared project.
+                </p>
+            </div>
+            <br/>
+            <Button onClick={@open_project}>
+                <Icon name="edit" /> Open shared project
+            </Button>
+        </div>
+
+    open_project : ->
+        @props.redux.getActions('projects').open_project(project_id:@props.shared_project_id)
+
+    render_no_shared_project: ->
+        <div>
+            <div style={color:'#444'}>
+                <p>
+                    You may <i>optionally</i> create a single common shared project, which everybody -- students and all collaborators
+                    on this project (your TAs and other instructors) -- will have <b>write</b> access to.  This can be useful
+                    for collaborative in-class labs, course-wide chat rooms, and making miscellanous materials available for
+                    students to experiment with together.
+                </p>
+                <p>
+                    When you create the shared project, everybody who has already created an account
+                    is added as a collaborator to the project.  Whenever you re-open this course,
+                    any students or collaborators on the project that contains this course will be
+                    added to the shared project.
+                </p>
+                <p>
+                    After you create the shared project, you should move the shared project to a members only server
+                    or upgrade it in other ways if you want it to be more stable.
+                </p>
+
+            </div>
+            <br/>
+            <Button onClick={=>@setState(confirm_create:true)} disabled={@state.confirm_create}>
+                <Icon name="plus"/> Create shared project...
+            </Button>
+            {@render_confirm_create()}
+        </div>
+
+    render_confirm_create: ->
+        if @state.confirm_create
+            <Alert bsStyle='warning' style={marginTop:'15px'}>
+                <ButtonToolbar>
+                    <Button bsStyle='warning' onClick={=>@setState(confirm_create:false);@create_shared_project()}>
+                        Create shared project for everybody involved in this class
+                    </Button>
+                    <Button onClick={=>@setState(confirm_create:false)}>
+                        Cancel
+                    </Button>
+                </ButtonToolbar>
+            </Alert>
+
+    create_shared_project: ->
+        @props.redux.getActions(@props.name).create_shared_project()
+
 CourseEditor = (name) -> rclass
     displayName : "CourseEditor"
 


        set_email_invite: (body) =>
            @_update(set:{email_invite:body}, where:{table:'settings'})

        # Set the pay option for the course, and ensure that the course fields are
        # set on every student project in the course (see schema.coffee for format

                    student_project_id = student.get('project_id')
                    if student_project_id?
                        redux.getActions('projects').start_project(student_project_id)
            @start_shared_project()

        set_all_student_project_titles: (title) =>
            actions = redux.getActions('projects')
