Final Project

The requirements below are mostly complete. They will be finalized during the early part of the semester.

The final project is due on 5/2 at 11:59pm. Points will be deducted if you turn it in late. Turning it in 1 day late is -10 points, and each subsequent day will be -5 points.

The Database

Design and build a Postgres database with at least 4 tables and 3 relationships (one to one, one to many, many to many, etc). Please include a schema similar to this one, where you specify the tables, their columns, and how columns relate. You can either draw this out on paper or a whiteboard and take a picture of it, or use some other software. Please put this image in your README.md. Check out this resource on how to create an image in Markdown.

Once you have figured out what your database will look like, create it using Laravel migrations.

Part 1: The Application

Build an application using Laravel with the following requirements:

  • At least 4 GET routes, excluding GET /about (more on this below)
  • Create an about page at /about that explains the goal/mission of the site. Be sure to add this link to your main navigation.
  • At least 3 POST routes
  • Pages where users can create, edit, and delete data
  • Server-side validation with Laravel’s validation rules
  • Display error messages as flashed session data for when form submissions fail validation. Your error messages should be specific to the fields that failed validation as opposed to showing a single generic error message on the page.
  • Form submissions that fail validation should repopulate the form with the user’s input
  • Notifications or Bootstrap-style alerts as flashed messages (flashed session data) for when inserts, updates, and deletions are successful
  • Authentication - Sign up, Login, and Logout
  • Blade templating with a single layout that is used for all of your pages
  • The document title (the title tag) for each page should be unique and contain meaningful, contextual data. This includes pages with different data. For example, on Amazon, the document title of a product page is different for every product listed.
  • All queries should go through Eloquent or the Query Builder for database access
  • Your site should look organized and have a consistent layout. Feel free to use Bootstrap if you’d like.

Part 2: Additional Feature

Choose at least one of the following features to implement:

  1. Build a commenting system from scratch for some resource in your application. The comments in your commenting system should at the very least contain the commenter’s name, a comment body, and a time stamp. Comments should be displayed from the most recent to the oldest. Comments don’t need to be commentable.
  2. Build a bookmarks / favorites system from scratch for some resource in your application. A user should be able to add and remove a particular resource from their bookmarks / favorites section. When you display the resource in the bookmarks / favorites section, display information about the resource and the date/time of when the item was bookmarked / favorited.
  3. Pitch your idea to me by sending me an email with your idea. I will respond back either approving the feature or giving some suggestions.

Code Quality

  • All code should be nicely formatted. Points will be deducted for sloppy code.
  • Be sure to put all sensitive information (like API keys and credentials) in environment variables.

Complexity

I will take into account your application’s complexity. You will not get full credit by doing the bare minimum. Your project should be different from the application(s) that we build in class, the assignments, and the midterm.

Deployment

Deploy your project to Heroku and add the URL to your README.md.

Video Walkthrough

Create a video with Zoom where you demo all parts of your project and explain where you fulfilled each requirement. This video should have audio. Please keep this video under 10 minutes.

Submission

Send an email to me with the subject “ITP 405 Spring 2021 Final Project Submission” and a link to your GitHub repo in the body.

Include the following links as Markdown links in a Markdown list at the top of the README.md:

  • The URL to your deployed app on Heroku
  • The URL to your video walkthrough

You are done! 👏