The final project for this course will be either a 2-person or 3-person team-based project. You can use class time or the Discord server to find students interested in working with you. It is up to you to find a group, so get an early start. If you have difficulty finding people to work with, please contact your instructor with at least 1 week advance notice of when the group declaration is due.
The application that your team implements is largely up to you! So long as it can fulfill the requirements described in this document, your instructor approves of it, and your team is agreeable to it, then go for it. I provide a few example ideas below.
Though you are given significant creative librerty in choosing your application idea, all apps must meet these requirements:
The project needs to be of significant scale and complexity. You want to make sure your project selection is big enough to not loose points for bsing too simple, but not so big that you run out of time to finish. To give you a rough gramework, the scale of the project should require at LEAST 20 hours of the groups effort per week. Since you have four weeks, that a minumum of 80 efficient hours of work for the group, but potentially higher. To be clear, this does not mean that if you each spend 20+ hours you are guaranteed to get a good grade. You also have to spend those hours efficiently, effectively, and wisely :)
You should NOT base your project idea directly off of one of the course PAs. For example, your final project should not be a chat communication program (PA8) or an online marketplace (PAs 9 and 10).
You should use the design patterns and best-practices discussed in class and in readings, when and where applicable.
The server side of the application must make use of nodejs, express, mongoDB, and mongoose. You are welcome to use other NPM modules in addition to this.
On the client-side, you should use HTML, CSS, and Js. You may utilize utilize jQuery to help reduce the codebase size. You are also welcome to use React. If there’s an additional client-side module that you’d like to use on the final project, make sure you clear it with the instructor. For instance, if you want to make a game, you might want to find some kind of JS module for doing graphics. You MUST request permission before expecting that using it will be acceptable.
The application must make use of AJAX to communicate between the client and the server. This does not mean that the entire application has to exist on a single HTML page, but you must use AJAX to create a modern-feeling user experience.
The application must have a user account creation and login feature, with proper password salting/hashing, and login sessions.
The database “backing” the application must have at least three different and meaningful document types.
For instance, say you were going to create a budgeting website.
You might have one document type for Users
(representing a user, username, password, etc), another for Budget
(representing one of the user’s budgets), and another for Item
(representing a particular item within a database).
You are welcome to have more than three, but three is the minimum.
Your application is only required to support desktop-sized screens. You may also have it support mobile-sized screens if you’d like.
Your web application should include an in-app help page, which explains to the user (or the grader!) how to use the application. You must have an obviously-located button that a user can click on to get the the help page.
Your web application must be made LIVE on the web for at least 7 days after the due date.
The URL should be in a file named live.txt
in the zip file you submit.
It is VERY important for you to have it running live.
You may lose a significant amount of points if you don’t have this for the 5 days.
Each team should write an approximately 3 page document, describing the plans for the application. Essentially, you can think of this document as your own, custom final project specification. The document should be organized into several clearly-labeled sections:
The Overview section should provide a general overview of what the end-result app will be, what kind of features it will have, and how it will function. This should be one or two paragraphs.
The Frontend Section should provide an outline (perhaps accompanied by pictures/diagrams) of the user interface. It should describe the various screens and features that the user can interact with in the browser.
The Backend section should some details about how you plan to go about implementing the server and database. It should include what npm modules you anticipate using, what kind of routes it will have to support, what the structure of the database will look like, etc.
The Timeline section should provide a clear picture of how you plan to approach the implementation. In this section, you should include a series of milestones you’d like to achieve, and when you’d like to accomplish each one by. You should also include an estimate of hours of work it will take for each portion. You have approximately 4 weeks from the time the document is due to finish the project, so write this section accordingly.
The document should also clearly state who is working on the project on the first page.
In addition to the codebase and the document, you will be required to create a presentation video, demoing the application (Thus, you should wait to create this until the application is nearly or entirely complete).
One of the team members (or both) should do a 5-8 minute screen-capture recording, showing off the final project.
In this video, you should demonstrate as many of the site features as possible.
You should upload this video to a site such as Youtube or Vimeo.
If you don’t want the video to be searchable, you can set it as an “unlisted” video.
You should also include a link to this in a file called video.txt
in your zipped submission.
I recommend using either the Quicktime screen capture feature, or OBS, to record this.
It is VERY important that you have this video ready, and include the link when you submit.
You should have your team finalized by March 30th at 7pm. You should submit a paragraph on gradescope explaining who is in your team, and what you have considered working on. It is acceptable if your app idea is not 100% nailed down at this point.
You are required submit a completed and polished document spec on gradescope by April 4th at 7pm. This document will contribute to a part of your final project grade, so take it seriously! On grdescope, you’ll be able to submit this document as a team.
You should submit your entire project in a zip file via gradescope (including live.txt
and video.txt
) by May 3rd at 11:59pm.
It is critical for you to have your application live on the web, and your video presentation created when you submit.
If you don’t, you may be subject to lose a significant amount of points.
On grdescope, you’ll be able to submit this as a team.
The expectation for the size, complexity, and quality of the project is the same regardless of group size. The advantage of a 2-person group is that there is reduced communication and coordination complexity, but it may mean more coding is required per-person. A 3 person group gets to divide the work across more people, but needs to be careful that everyone is staying in-sync.