US-01Fully implemented
“As a visitor, I want to see information about the app so I understand what it offers.”
Screen · Home / About page
The Home template extends base.html and presents the GT Movies Store purpose, a hero banner and an About page describing the catalog, reviews and ordering features.
AccountsUS-02Fully implemented
“As a new user, I want to register for an account.”
Screen · Sign Up page
A Django CustomUserCreationForm renders styled fields with server-side validation; on success the user record is created and redirected to Login.
AccountsUS-03Fully implemented
“As a returning user, I want to log in and log out securely.”
Screen · Login / Logout
Built on django.contrib.auth with LoginView, session cookies and a logout POST action. The navbar swaps between Login/Sign Up and the username dropdown.
AccountsUS-04Fully implemented
“As a user, I want to view my account details.”
Screen · Account dropdown / Orders page
Authenticated templates use {% if user.is_authenticated %} to reveal the account menu linking to Cart and Order history.
AccountsUS-05Fully implemented
“As a shopper, I want to browse the full movie catalog.”
Screen · Movies list page
The movies.list view queries Movie.objects.all() and renders a responsive Bootstrap card grid with poster images, names and prices.
Catalog & SearchUS-06Fully implemented
“As a shopper, I want to open a movie and see its details.”
Screen · Movie detail page
movies.show resolves the movie by primary key and shows poster, description, price, an add-to-cart quantity form and the review thread.
Catalog & SearchUS-07Fully implemented
“As a shopper, I want to search movies by title.”
Screen · Movies list search bar
A GET form posts a search term handled with Movie.objects.filter(name__icontains=search), returning a filtered grid and an empty-state message.
Catalog & SearchUS-08Fully implemented
“As a shopper, I want to add a movie to my cart.”
Screen · Movie detail → Add to cart
A POST writes {movie_id: quantity} into request.session['cart'], so the cart survives page navigation without a database write.
Cart & OrdersUS-09Fully implemented
“As a shopper, I want to add several different movies to my cart.”
Screen · Cart page
The session dictionary accumulates multiple keys; the cart view rebuilds movie objects from those IDs and computes a running total.
Cart & OrdersUS-10Fully implemented
“As a shopper, I want to view the items and total price in my cart.”
Screen · Cart page
A table lists each title, unit price, quantity and line total, with the grand total calculated in the view helper.
Cart & OrdersUS-11Fully implemented
“As a shopper, I want to remove an item or clear the whole cart.”
Screen · Cart page controls
Per-row Remove buttons pop the movie key from the session cart; Clear cart resets it to an empty dict and redirects back.
Cart & OrdersUS-12Fully implemented
“As a shopper, I want to purchase the items in my cart.”
Screen · Checkout confirmation
Purchase creates an Order plus Item rows inside a single request, empties the session cart and renders the order confirmation.
Cart & OrdersUS-13Fully implemented
“As a user, I want to see my order history and what I spent.”
Screen · Orders page
Order.objects.filter(user=request.user) lists each order with date, item breakdown and total, giving a simple expense record.
Cart & OrdersUS-14Fully implemented
“As a user, I want to write a review of a movie.”
Screen · Movie detail → Create review
A ReviewForm bound to the logged-in user and movie saves a Review with comment and date; anonymous users are prompted to log in.
Reviews & ModerationUS-15Fully implemented
“As a user, I want to read all reviews for a movie.”
Screen · Movie detail review list
Reviews are pulled through the movie's related manager and rendered newest-first with author and timestamp.
Reviews & ModerationUS-16Fully implemented
“As an author, I want to edit my own review.”
Screen · Edit review page
The edit view checks request.user == review.user before pre-filling the form, so users cannot alter reviews they did not write.
Reviews & ModerationUS-17Fully implemented
“As an author, I want to delete my own review.”
Screen · Delete review action
A guarded POST deletes the review and redirects to the movie detail page with the thread refreshed.
Reviews & ModerationUS-18Fully implemented
“As a user, I want to report an inappropriate review.”
Screen · Report review action
A report flag is recorded against the review so staff can review flagged content from the Django admin queue.
Reviews & ModerationUS-19Fully implemented
“As an administrator, I want to manage users, movies, reviews and orders.”
Screen · Django admin dashboard
Every model is registered in admin.py, giving staff full create, read, update and delete control behind an is_staff login.
Admin SuiteUS-20Fully implemented
“As an administrator, I want to add or retire catalog items quickly.”
Screen · Admin → Movies
The Movie admin exposes name, price, description and image so the storefront can be curated without a code deploy.
Admin SuiteUS-21Fully implemented
“As any user, I want the site to work on phone, tablet and desktop.”
Screen · Every page
Bootstrap's responsive grid, a collapsing navbar and fluid card columns keep layouts readable from 360px upward.
Responsive Design