Final Project

The final project is due on 5/2 at 11:59pm. 5 points will be deducted for each day that it is late.

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 templates that share a common layout. If you want to have a couple different layouts such as one for public pages and one for admin pages, that is fine too.
  • 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.
  • Use Eloquent or the Query Builder for all database access
  • Your site should look organized and have a consistent layout. Feel free to use Bootstrap or any other CSS library 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. When comments are displayed, they should be sorted from the most recent to the oldest. Comments don't need to be commentable (nested comments).
  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. Build a log that tracks when data is created, updated, and deleted. In this feature, you should have a page that displays these log entries sorted by the most recent to the oldest. You may find Eloquent Events to be helpful for building this feature.
  4. 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 built in class, the assignments, and the midterm.

Deployment

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

If you are using Mail or Queues, cover them in the video walkthrough (see below), but no need to get that deployed.

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! 👏