CPNT 262 Final Project - Deployed Product/Services Website

Team Assignments

In this assignment, your group will deploy a multi-page, database-driven Product website using Express and Mongoose. It will be deployed to Heroku and MongoDB Atlas.

Instructions

This website will sell/advertise new products/services of your choice that you have not covered in prior assignments in this program.

Note: Since this is not an HTML/CSS assignment, visual components such as hero sections, footers, logos etc may be reused from prior assignments and projects. Only the theme/product/service of the website must be unique for the purposes of this assignment. Existing images may be considered placeholders but must be served locally (no lorem picsum).

Design elements will be ignored for this assignment with the exception of:

Aside from the required endpoints and features defined, you may layout and organize your site as you feel appropriate.

BUT, please make sure your instructor doesn't have to hunt to find your code...

Project Setup

While not explicitly listed as assignment criteria, marks will be deducted for projects that are not properly deployed.


Example Directory Structure

project-root
  ├─ models
      ├─ seeds
          ├─ images.js
          ├─ subscribers.js (if used)
          └─ team-members.js
      ├─ Image.js
      ├─ Subscriber.js
      └─ Member.js
  ├─ public
  ├─ routes
      └─ api.js
  ├─ package.json
  └─ server.js

Criteria

Points will be awarded for the criteria below, for a total of 35 points:

1. Static pages: 5 points

Create HTML route handlers to render and serve the following static pages:


2. Schema/model implementation: 10 points

DB seeds

Your instructor may need to build a local version of your database to mark this assignment.


3. JSON Endpoints: 5 points

Create the following JSON endpoints to serve your frontend views:

  1. Products/Services gallery
    • GET /api/gallery
  2. Single Product/Service
    • GET /api/gallery/:id
  3. Subscribers list
    • GET /api/subscribers
    • POST /api/subscribers
      • Inserts subscriber to database using subscriber model
  4. Team members
    • GET /api/members
  5. Frontend fetch() implementations: Create appropriate frontend fetch() requests for the following JSON endpoints defined above:
    • Requests GET /api/gallery for /public/gallery.html
    • Requests GET /api/gallery/:id for /public/item.html
    • Requests GET /api/subscribers for /public/admin/index.html
    • Requests GET /api/members for /public/team.html
  6. For each fetch() request, build a corresponding gallery/list using .forEach() or similar method.

5. Fancy Feature: 5 points

Implement an app feature that we haven't covered in this course. Your instructor needs to approve this feature (before the end of CPNT 262) to ensure it has a large enough scope to qualify for its 5 points of mark value.

Some examples that would qualify:


5. Individual Contribution: 15 points

Assign the key roles and responsibilities for each group member in delivering the Final Project. After each entry write a short summary defining their role and what their responsibilities are in the project.

This charter will serve as the reference for your instructor's evaluation of your individual contribution to the group project.

Peer Evaluation

At the end of the Final Project, all team members must evaluate their teammates on a scale of 1-10. Each member's mark for this portion will be the average score given to them by their teammates.

Instructor Evaluation

Your instructor will also evaluate the individual contribution of each team member, within the context of the Group Charter. This will be based largely on your commit history for the project.

Things to remember:


Submitting Your Assignment

In order to receive a grade, you must:

  1. Deploy your Express app to Heroku and MongoDB Atlas.
  2. Include a README.md in your project that contains the following information:
  1. Zip your project (excluding node_modules and .env file) and submit them to Brightspace.
    • include a copy of the database seed (the array of objects) you used for this project so your instructor can recreate your database, if needed.
  2. Include links to the following as a comment with your Brightspace submission:
    • GH Repo
    • Deployed Heroku App URL
    • Connection string for MONGODB_URL