Sippyshop
SippyShop is a full-stack Django e-commerce application for selling mugs, featuring product browsing, user authentication, and secure payments.
Install / Use
/learn @RichM1216/SippyshopREADME
SippyShop
A e-commerce website for selling different type of mugs.
Live Project Links
-Live Site: -Repository:
Table of Contents
- Introduction
- User Stories And Manuel Testing
- Agile Planning
- Features
- Future Features
- Security
- Accessibility
- Design Choices
- Automated Tests
- Validation
- Deployment
- Wireframes
User Stories And Manual Testing
Must Have
-
View All Mugs - Story: As a customer I want to see all mugs so I can choose what i want to buy
-
Test: Go to /products/ and check all products are listed - PASS
-
Register Account - Story: As a customer I want to register account so I can shop
-
Test: Go to /accounts/signup/ (allauth) and create a new user - PASS
-
Login to see my orders - Story: As a customer I want to login so I can see my orders
-
Test: Go to /accounts/login/ and login with the user created above - PASS
-
Pay With Card - Story: As a customer I want to pay with card so I can buy products
-
Test: Add product to card and go to /checkout/ then submit stripe test payment - PASS
-
Payment Confirmation - Story: As a customer I want to see confirmation after payment
-
Test: After checkout the app redirects to payment_success - PASS
-
Add Product (Admin) - Story: As an admin I want to add new products in admin panel
-
Test: Login to /admin/ then products, add product - PASS
-
Edit Product (Admin) - Story: As an admin I want to edit products when price change
-
Test: In /admin/ edit and existing product - PASS
-
Delete Products (Admin) - Story: As an admin I want to delete products when they are not available
-
Test: In /admin/ delete a product - PASS
-
Review Product - Story: As a logged in customer I want to leave a review so I can tell others what I think
-
Test: Go to product detail and submit review - PASS
-
Edit Review - Story: As the review owner I want to edit my review so I can fix mistakes
-
Test: Click "Edit" on own review - PASS
-
Delete Review - Story: As the review owner I want to delete my review if I don't want it anymore
-
Test: Click "Delete" on own review - PASS
Automated Tests
I made 5 automated tests to check that my models and views worked.
Model Tests
- test_create_product: Test that a new product can be created.
- test_create_order: Test that a new order can be created(and fixed a bug where it needed a user).
- test_create_review: Test that a review can be created and linked to a product.
View Tests
- test_product_list_view: Checks that the main shop page loads.
- test_product_detail_view: Checks that a single product's page loads.
How to run tests?
1 - Open the terminal 2 - Run this command : Python3 manage.py test products
3 - Results : Ran 5 tests in 0.067s (OK)
Validation
HTML W3C Markup
-
`accounts/templates/accounts - order_details.html (Removed unused <ul> and <li> now fixed - PASS
-
`accounts/templates/accounts - order_history.html - PASS
-
`products/templates/products - cart.html - PASS
-
`products/templates/products - checkout.html - ( 1 Error from django-countries needs alt="") except from that PASS
-
`products/templates/products - home.html - PASS
-
`products/templates/products - product_detail.html - PASS
-
`products/templates/products - product_list.html - PASS
-
`products/templates/products - edit_review.html - PASS
-
`products/templates/products - payment_success.html - PASS
-
`products/templates - base.html PASS
CSS W3C Jigsaw
- `products/static/css - base.css - PASS
- `products/static/css - cart.css - PASS
- `products/static/css - checkout.css - PASS
- `products/static/css - payment_success.html - PASS
- `products/static/css - product_detail.html - PASS
JavaScript JShint
- `products/statid/js - main.js (jshint didn't like const or let so i needed to change it to var to go through) - PASS
- `products/static/js - stripe-checkout.js ( want var so changed const to var, and everything was pass except import in comment that i use stripe) - PASS
Flake8 - Python
-
To ensure the Python code follows PEP 8, the project was linted using flake8.
-
.flake8 file was added in the project root:
-
exclude = venv, .venv, env, migrations, pycache, manage.py.
-
Run flake8 . in the terminal and everyting is clean.
What was fixed with flake8
-
removing trailing whitespace
-
fixing extra/too many blank lines
-
adding the required 2 blank lines before top-level defs/classes
-
splitting overly long lines
-
removing unused imports
Related Skills
node-connect
354.0kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
claude-opus-4-5-migration
112.2kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
frontend-design
112.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
model-usage
354.0kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
