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:
- 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).
- 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!).
- 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.
- You cannot use a backend as a service (BaaS) solution (Firebase, Azure, etc). You must create your own backend!
- 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).
- 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.
- Your complete application (frontend/backend) must be hosted by a cloud provider, such as Amazon Web Services or Google Cloud Platform.
- 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).
- 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:
- List the group members names (all students should submit the same proposal).
- What is your idea? Is there a problem your application is trying to solve or is it just for fun?
- Are there already similar applications? What benefits will your application have the don’t already exist?
- The main user stories that drive your application’s features.
- 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.
- What data is stored on the server? What is your database schema?
- What technology stack will you use? E.g.: React, node/js, express, mongoose, mongodb.
- 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.