The final project is due on 5/2 at 11:59pm. 5 points will be deducted for each day that it is late.
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.
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
/aboutthat explains the goal/mission of the site. Be sure to add this link to your main navigation.
- At least 3 POST routes (excluding login, logout, and registration)
- 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
- Use of Gates of Policies for Authorization
- Whenever you render a list and that list is empty, show some helpful text to the user. For example, let’s say you have a site where users can create recipes. If the user hasn’t created any recipes, the table/list of recipes could say something like “You haven’t created any recipes. Create one now (this could be a link to the create recipe page)“.
- 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
titletag) 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.
Choose at least one of the following features to implement:
- 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).
- 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.
- 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.
- 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.
- 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.
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.
Deploy your project to Heroku and add the URL to your
If you are using Mail or Queues, cover them in the video walkthrough (see below), but no need to get that deployed.
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.
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.
- The URL to your deployed app on Heroku
- The URL to your video walkthrough
You are done! 👏