CS 2340 Movie Store
Project Description
GT Movies Store is a full stack Django web application that lets users browse a movie catalog, read and write reviews, manage a shopping cart, and complete purchases, while giving administrators full control over the underlying data.
The home and about pages give visitors an introduction to the site and its purpose, covering the story that asks for basic information about the app before a user commits to signing up.
The signup, login, and logout pages handle account creation and access. A new user registers with a username and password, is logged in automatically, and can log back in or out at any time, covering the stories about registering an account and logging in to access personal data like orders and reviews.
The movie list page displays every movie in the catalog and includes a search bar that filters titles by name. This single page covers both the story about viewing available movies and the story about searching for a specific title.
The movie detail page is the most feature dense screen in the app. It shows a movie's description, price, and image, satisfying the story about seeing movie details. Below that, it lists every review left by other users, satisfying the story about reading reviews before deciding to purchase. Logged in users see a form to add their own review, and their own reviews carry edit and delete links, covering the stories about creating, editing, and deleting reviews. Every review also carries a report link visible to any logged in user, which lets someone flag inappropriate content so it disappears from the page immediately, covering the reporting story.
The shopping cart page lists whatever movies a user has added, with quantities and a running total. From here a user can remove all items at once or proceed to purchase, covering the stories about accessing a cart, adding items to it, and clearing it out entirely.
Completing a purchase creates an order tied to the logged in user and moves every cart item into a permanent record of what was bought and at what price. The orders page then lists a user's full purchase history, covering the story about tracking past orders and expenses.
Finally, the Django admin panel gives administrators full management access over users, movies, reviews, and orders, covering every administrative story in the list. Movies can be searched and sorted by name and price, and reviews, orders, and order items can all be created, updated, or removed directly from the admin interface.
Process Description
I worked through this project step by step, following Django 5 for the Impatient as my primary guide and extending past it wherever the assignment's requirements went further than the book did. My process was to move through the book chapter by chapter, since each chapter's code builds directly on the last: templates before models, models before authentication, authentication before reviews and the cart.
When something broke, my first step was always to read the actual error message and traceback closely, rather than guessing at a fix. I would try to identify exactly which line and which piece of code the error pointed to before doing anything else. Only after I had a clear idea of what was actually wrong would I turn to Stack Overflow, the textbook, or the official Django documentation, using them to confirm my understanding of the error rather than to find a fix to copy blindly.
Most of my early errors were syntactical: small typos, missing characters, or mismatched names between a model field, a view, and a template. As I built out more apps and models, though, I felt increasingly comfortable with the pattern, and the overall format became more reusable from one app to the next. That said, I still find myself preferring more opinionated, reusable frameworks, since it felt like I was redefining the same shape of model, view, and URL routing for every new app rather than reusing a shared structure across them.