Final Project
Proposal: Due April 5th
Milestone: Due April 16th
Presentations: Due April 23rd
Final Deadline: Due May 4th
Your final project for CIS 1962 will be a culmination of all that you learned within this course. This will be an full-stack open-ended project that must include a front-end and back-end component with deployment at the end, but otherwise is an opportunity to apply what you learned in a creative way to make something cool! You can use what you've learned in this class, or do a deep dive into new technologies, frameworks, or libraries to create something truly unique.
There are a few deadlines to keep track track of: a proposal will be due a week after this final project is announced, on April 2nd. A short milestone check-in will be due April 16th to check in on your progress towards completing the final project. Then, we will present your projects in class during our final scheduled class on April 23rd. Your final submission will be due on May 4th (a day after reading days). All submissions will be done through Gradescope assignments, either as text documents or a link to your final GitHub repo.
This project is intended to be done solo or as a pair. You will indicate this to us during your project proposals. Feel free to use Ed Discussion to find a group member if you desire for your project ideas. You will be submitting your final project as a GitHub repo, so make sure you familiarize yourself with GitHub collaboration techniques like pull requests, code reviews, and branches if you intend to work in a group. Only 1 student of a pair has to submit for the group for all assignments.
Proposal
Before you begin your project, we would like to gauge what kinds of project you would like to do. We would like a clear and concise description of what your project will provide for users, and a rough idea of the technologies and tech stack you will use for the final project (Express, React, Vite, MongoDB, etc.), and how you plan to deploy your app at the end. You are welcome to include topics we haven't yet or will not discuss in this course, as this project is a chance to explore new ideas and technologies in JavaScript.
You will submit your proposal as a text document responding to the below questions to Canvas:
- Are you working solo or as a pair? If you are working as a pair, who are the group members?
- Write a pitch for your final project. This should include a clear description of the project's goals and what it will provide for users.
- Describe the tech stack for this project, including the main frontend and backend technologies you will use, and what your plan for deploying the app will be.
- Include your goals for what you would like to be done with before the scheduled milestone check-in. For this milestone, you should consider prioritizing the back-end functionality first before the front-end, but it is up to you to pace yourself and hold yourself to your own scheduled goals.
- If you intend to use unique, new technologies we will not discuss in this course (see Extra Credit section), include them within your proposal so that we can verify whether or not it will count for extra credit!
After submitting your proposals, we will return to you with feedback on them promptly. You are free to start working on them or setting up your projects beforehand, so long as your project scope will fall within our rubric specifications and you do not get an outright rejection of your proposal from the instructors. Please look at the provided rubric for the final project to get a better sense of what kinds of projects will be appropriate for this assignment. If you have any questions about your proposal or want to run an idea by us, please feel free to reach out to us on Ed Discussion or during office hours!
Milestone
It is important to pace yourself and give yourself enough time to develop and research new technologies for this final project. This is why we've explicitly required a milestone check-in and for you to schedule your goals for it in advance in the proposal.
You will submit your milestone as a text document responding to the below questions to Gradescope:
- Have you met your goals for this milestone that you defined in your proposal?
- Describe any setbacks and challenges you are facing at this moment in the project, either related to this milestone or otherwise.
- At this point in time, are you on track to completing this final project in the alloted time?
Presentation
During our last scheduled class on April 23rd, you will be expected to present your final project to the class. This presentation should be around 5-10 minutes long and should include a demo of your project, an overview of the technologies you used, and a reflection on the development process. This is a chance to show off your hard work and creativity, and to share your project with your classmates. More details about the presentation format and expectations will be provided as we get closer to the date, including where to submit the slides for your presentation. You are expected to present in person during class, but if you have an excused absence for that day, please reach out to us and we can work something out for you to present remotely or submit a recorded presentation for the instructor.
Since this presentation is before the final project submission, you are not expected to have a fully polished and completed project by the time of the presentation. However, you should have a working demo that you can show to the class, and you should be able to talk about your development process and the technologies you used in a thoughtful way. This is also a chance to get feedback from your classmates and instructors on your project before the final submission, so we encourage you to be open to constructive criticism and suggestions during your presentation!
Extra Credit
You can gain up to 30% extra credit on this final project, usable for the grade of this project or applied to lost points in previous homework grades. We will award 10% extra credit for each unique, new techonology you use that is not covered in this course. These technologies should be substantial libraries or frameworks that add significant functionality to the app. For instance, a small library like react-hot-toast won't be applicable.
Some ideas for technologies include:
- Three.js for 3D
- Framer Motion or React Spring for animations
- Passport.js for validation
- Prisma or Drizzle for database interactions
- WebSockets or Socket.io for real time communication/live data/multiplayer
- AI applications that make use of libraries like openai-node or anthropic-sdk-typescript must have a novel use other than a chatbot (which we already did!) Points will not be given for just connecting to an API and returning chat responses, consider prompt engineering, fine tuning, computer vision/images, or other AI integrations.
- We will NOT count any UI libraries or frameworks for extra credit. We will need to use at least one UI library for the frontend of this application, any additional will not count towards extra credit (unless there is sufficient complexity in how you plan to use them).
Rubric
All final projects will be graded with the same rubric, with 4 sections. In total, you can get up to 13 points - and we're hoping everyone can get all points! Below you can see the requirements for getting points in each section.
[3 pts] Backend
- Backend has working API routes that perform basic CRUD operations for the application
- Backend code is cleanly organized, is well-documented, and secure (no sensitive information exposed, data is sent in secure/encrypted formats)
- App has clean middleware, robust authentication, and fully functional database integration
Authentication and databases are optional if your project is otherwise sufficiently complex in other aspects. Please clarify if this is the case in your proposal.
[3 pts] Front-end
- Frontend uses at least one UI library, framework, or component library for customized styling
- Frontend is a multi-page app with some form of routing, or is a sufficiently complex single-page app
- Frontend follows good UI/UX practices for accessibility, is easy to navigate, and is not able to be broken by normal users.
[3 pts] Full-Stack & Deployment
- Frontend and backend connect seamlessly without bugs
- App is deployed to a production environment at an accessible URL
- Users are able to interact with the app at the deployed URL for the intended functionality of the app without encountering errors or issues
[4 pts] Project Goals + Submission
- Submitted Proposal by April 2nd
- Submitted milestone by April 16th
- Presented a final project during class on April 23rd
- Submitted the final project code by April 29th
Suggestions
This is a selection of approved proposals and various project ideas to help inspire you for your final project! These are truncated versions of proposals, so please use these as a reference but go into more detail in your own proposals so we can understand your project and give you feedback on it. These examples have a milestone 2, but you can consider the project presentation date as the milestone 2 for your own project and set your goals accordingly.
FridgeFriend
FridgeFriend is here to simplify your kitchen experience by providing a seamless platform to organize your groceries, monitor your fridge inventory, and explore delightful culinary possibilities.
Tech Stack: React + React Router, Express, MongoDB + Mongoose
- Milestone 1: Backend API and basic frontend
- Milestone 2: Complete Frontend Components
New tech:
- AI Image analysis to suggest items based on uploaded images (+10% extra credit)
Trivia Website
A trivia website that allows users to improve their general knowledge by answering trivia questions. They’ll be able to type answers to random trivia questions that pop up. There’ll also be a leaderboard for both accuracy and number of questions answered. Some additional features could be categorizing questions based on topic/difficulty using NLP techniques.
Tech Stack: Postgres, ExpressJS, and React
- Milestone 1: All backend routes and question categorization logic
- Milestone 2: Complete frontend components and integrate with backend
New tech:
- Prisma ORM (+10% extra credit)
- AI/NLP to categorize questions (+10% extra credit)
3D Snake
A web app that lets you play a multiplayer, head-to-head game of 3D Snake.
Tech Stack: Three.js, socket.io, PostgreSQL, Prisma
- Milestone 1: Backend + socket.io
- Milestone 2: Frontend and Three.js integration
New tech:
- Three.js for rendering of game (+10% extra credit)
- Socket.io for real-time multiplayer (+10%) (+10% extra credit)
- Prisma for database interactions (+10% extra credit)
VidToScore
A web application that extracts musical scores or sheet music from video content and converts them into a downloadable PDF format. Includes Youtube video URL input and preview, a video editor interface, frame extraction, and PDF generation/download functionality.
Tech Stack: React, Python/Flask
- Milestone 1: Backend Video Processing
- Milestone 2: Frontend Core Interface
New tech:
- Flask Backend (+10% extra credit)