Welcome to the final project of the course. Here you will demonstrate your skills as a full stack developer by creating a complete web application including a frontend and backend hosted on a cloud provider. Unlike our previous projects, the topic here is completely up to you and you will work in a group of 2-4 students. Be creative and keep in mind you only have a few weeks to finish.

The requirements of your application are:

  1. A responsive web application, I suggest that you use React but this is not required. You could use plain HTML/CSS/JS or even AngularJS if you really want to. You cannot use a server-side framework to dynamically generate HTML pages (Django, Ruby on Rails, PHP, etc).
  2. A backend server that connects to a MongoDB or SQL database and communicates with JSON messages. I suggest that you create a RESTful web service using MongoDB/Mongoose with Node.js/Express but you could use Python-Flask/SQL or any other combination of server frameworks and databases. If you really want, you could use a server-side framework like Django or Ruby on Rails as your backend server as long as it never returns HTML (only JSON!).
    1. Alternatively, you can use a messaging framework and/or WebSockets to communicate with your server and other clients (this is the best approach to implement a multiplayer online game like slither.io). However, you still need a server/database in your project. You could use it to track high scores, players, etc.
    2. You cannot use a backend as a service (BaaS) solution (Firebase, Azure, etc). You must create your own backend!
  3. The web application must make AJAX (or WebSocket) requests (eg fetch) to your backend server based on user input (ie your application must be interactive).
  4. Your application must cause changes to data in your backend server. Your application cannot simply “view” static data from the server. A user’s actions must cause insert and/or update operations on the database.
  5. Your complete application (frontend/backend) must be hosted by a cloud provider, such as Amazon Web Services or Google Cloud Platform.
  6. You can use other open-source components to build your application, but your final application must be a new and distinct contribution (not simply a trivial combination of other people’s work).
  7. If you want to extend another course’s project, senior design, a project you have previously worked on, see me for permission first.

Proposal

Due Monday, 4/9/2019, 11 AM. 10 points.

Submit a short proposal (on google classroom). The proposal should clearly contain the following information:

  1. List the group members names (all students should submit the same proposal).
  2. What is your idea? Is there a problem your application is trying to solve or is it just for fun?
  3. Are there already similar applications? What benefits will your application have the don’t already exist?
  4. The main user stories that drive your application’s features.
  5. Annotated storyboard that shows the flow of your application using sketches demonstrating your main user stories. Sketches can be drawn by hand or electronically. This should be the bulk of your proposal.
  6. What data is stored on the server? What is your database schema?
  7. What technology stack will you use? E.g.: React, node/js, express, mongoose, mongodb.
  8. How will you host your final solution? AWS? Separate backend/frontend server?

Live Demo

In-class on 4/30/2018, 11 AM. 10 points.

Similar to Project 2, you will have 3 minutes in class to demonstrate your project with 1 minute for questions.

Start Stop Project Name Names
1 11:00 AM 11:03 AM Textbook Anarchy Jason Corriveau
Eric Marshall
Jordan Voves
Cole Whitley
2 11:04 AM 11:07 AM Battery Diagnostics Ryan Pencak
3 11:08 AM 11:11 AM Fridge Raider Natalie Altman
Danny Toback
4 11:12 AM 11:15 AM Big Dog Bets Stefano Cobelli
Allan La
Jack Napor
5 11:16 AM 11:19 AM ABC Jenna Slusar
Parker Watson
6 11:20 AM 11:23 AM MIPS Processor Validator Dunni Adenuga
Jacob Mendelowitz
Sarah Xu
7 11:24 AM 11:27 AM Meal Tracker Dan Kershner
John Venditti
Dylan Zucker
8 11:28 AM 11:31 AM TakeFive Evan Harrington
Uttam Kumaran
9 11:32 AM 11:35 AM Bbay Junjie Jiang
Haipu Sun
10 11:36 AM 11:39 AM Makerportal Keller Chambers
Morgan Muller
Christian Ouellette
11 11:40 AM 11:43 AM Crowdcode Jack Hall-Tipping
Jeff Lee
12 11:44 AM 11:47 AM Xplor Jingya Wu

 

Final submission

Before 4/30/2018, 11:59 PM. 80 points.

This is the final deadline for submissions. Submit a link to your git repo (make sure I have at least read access). You must include a README file describing your application’s architecture (frontend and backend), data model, and how to deploy your application on the cloud host of your choice.

Grading Rubric

40 points, base functionality required to pass. See the requirements section in the project writeup.

10 points, ease of use, intuitive design, clear purpose.
10 points, visually aesthetically pleasing design.
10 points, logically structured project, HTML/CSS/JS/JSX follows generally good coding practices, is formatted nicely, and is easy to understand. Functionality is logically broken down into many small components.
10 points, correct submission including a README that is complete enough to download/build/deploy the application.