Project 3 Open-ended application (with database)
Summary
The final project in this course brings together the skills we’ve learned throughout the semester to create a web application that uses Laravel and interacts with a database. The concept for this project is open-ended.
Requirements
- Demonstrates at least 3 unique CRUD operations.
- Demonstrates at least 1 relationship between at least 2 different database tables.
- Demonstrates at least 2 features (preferably more) that make it unique from the Bookmark lecture example.
- Utilizes the Laravel auth/user system.
- Migrations are complete and functioning for all tables.
- Seeders are complete, meaningful, and functioning for all tables.
- The users table seeder includes the seed users discussed in the notes (Jill/Jamal).
- Form(s):
- No minimum form input requirements for this project; use what makes sense for your application.
- Form data should be checked and problems should be reported via Laravel’s validation features.
- Upon validation failure, the form fields should be pre-filled with the problematic data.
- Views use Blade syntax and template inheritance.
- Appropriate placement of code in routes, controllers, views, models.
- JavaScript can not be used to supersede any of the server-side functionality we’re studying; if you wish to incorporate JS into your project, email me to discuss.
Graduate credit requirement
If you are taking this course for graduate credit, you must also incorporate testing into your application. It is expected that you will have Codeception acceptance tests present and passing for all features. Examples of expected test coverage will be shown in lecture.
Testing output should be included in the project README.md file (as demonstrated in the template provided below).
Students taking this course for undergraduate credit are encouraged but not required to incorporate testing.
Examples
-
BoardHoarder
- Board game manager. Catalog application similar to Bookmark, but also has these features:
- Add/edit tags via a multi-line input (allows for dynamic tag creation)
- In addition to games, you can also manage designers, publishers, artists and awards
- Board game manager. Catalog application similar to Bookmark, but also has these features:
-
Education Equipment Circulation
- A tool to help the Distance Education office track equipment. Featured an interface for users to check in/out equipment and an interface for admins to manage equipment. Neat feature: Student printed barcodes for items and was used a barcode reader to input equipment info.
-
Magnetic Poetry
- A online interface that mimics the experience of magnetic poetry. Users can drag and drop words to create new poems, save poems, and edit existing poems. (This project does incorporate JavaScript, but the student discussed this with me ahead of time to ensure none of the server-side concepts were being overlooked.)
-
Chirper
- Microblogging platform similar to Twitter.
-
Gift Guru
- Gift wish list manager. Ties into Amazon, sharable URLs to share lists.
No Bookmark clones
When coming up with your project idea, think outside the box of a “catalog” application like Bookmark— that is, an application that simply manages records of data (be it books, movies, games, etc.)
A catalog-style application is not completely off limits. In fact, some of the examples given above are catalog-style applications (BoardHoarder is cataloging board games, Chirper is cataloging messages, etc).
However, while these applications bear similarities to the general idea of Bookmark, they do implement unique features not demonstrated in Bookmark, or tackle similar features in a unique way.
Projects that are a copy/paste/swap version of Bookmark will face a large deduction, and if the similarities are striking enough, they may not earn credit.
Ambitious ideas
If you have an idea for an application you’ve been wanting to create, but it feels broader than the scope (and timeline) of this project, think about tackling a smaller portion of the application as a prototype/proof-of-concept.
Setup
- Build your project in your e15 repository under a subdirectory called p3.
- Your project must be accessible on your server following the URL convention of http://e15p3.yourdomain.com.
- Your project must be set up to run as an independent application with its own document root; it must not run as a subdirectory.
Submissions
This project will be submitted/due with your Week 14 assignment (due Tue May 9 11:59pm). In that assignment I will have prompts asking you for your submission URLs (Server URL, Github repo URL, URL of last commit).
Because it’s the end of the semester, late work is not accepted for this final deliverable.
All final commits should be made before you submit your Week 14 assignment. Small commits made after the assignment deadline (e.g. a small bug fix, a typo correction, etc.) will be considered when grading, but any notable commits will not.
README.md
- Your project must include a README.md file using this template...
- Put your README.md file in the p3 application root (i.e. /e15/p3/README.md)
- Use proper Markdown syntax.
- All links must be clickable.
- For outside resources, do not include course notes or examples, but do include any/all of the following:
- External blogs/tutorials/books
- Specific forum posts (e.g. StackOverflow)
- ChatGPT searches (you do not have to include the answers, only the searches)
- Sources for images that you did not create
- Outside resources such as CSS frameworks, Google fonts, etc.
- Anything else (if in doubt, cite!)
Code
- Use modern and semantic HTML. CSS is optional but a minimal amount of CSS is suggested to present a clear and clean interface.
- Code should be organized and easy to follow.
- Code should be accurately indented with consistent spacing, styling, and syntax.
- Any non-obvious lines of code should be commented.
- Any extraneous code (including old, commented-out code) should be removed before submission.
- Code should follow all best practices discussed in lecture/notes.
Getting help
You are allowed/encouraged to post questions about this project/your code in the forum. You are also allowed/encouraged to utilize the PHP documentation, Google, StackOverflow, etc. to assist with project development/troubleshooting.
Be sure to read the course policy on original work and academic integrity to make sure you are responsibly using outside resources and getting the most out of this project.
Misc
It is expected that projects will follow all best practices discussed in lecture/notes, even if they are not explicitly mentioned in the specifications above. Failure to do so may result in point deductions.