diff --git a/API.md b/API.md index e69de29..d9a1c28 100644 --- a/API.md +++ b/API.md @@ -0,0 +1,428 @@ +# API Documentation + +API documentation can also be at http://localhost:8000/docs#/ when running backend. This was generated documentation showing all 48 endpoints. + +Base URL: `http://localhost:8000` + +## Authentication +Most endpoints require authentication via JWT token in the `Authorization` header: +``` +Authorization: Bearer +``` + +Admin-only endpoints also require the user to have `role: "admin"`. + +--- + +## Auth Endpoints + +### `POST /auth/register` +Register a new user account. +- **Body**: `{ name, email, password }` +- **Returns**: User object with token + +### `POST /auth/login` +Login with email and password. +- **Body**: `{ email, password }` +- **Returns**: User object with token + +### `GET /auth/me` +Get current authenticated user details. +- **Auth**: Required +- **Returns**: User object + +### `GET /auth/users` +Get all users (admin only). +- **Auth**: Admin required +- **Returns**: Array of user objects + +### `GET /auth/users/{user_id}` +Get specific user by ID. +- **Auth**: Required +- **Returns**: User object + +### `GET /auth/email/{email}` +Get user by email address. +- **Auth**: Required +- **Returns**: User object + +### `POST /auth/users/{user_id}/role` +Set user role (admin/customer). +- **Auth**: Admin required +- **Body**: `{ role }` +- **Returns**: Updated user object + +### `POST /auth/users/{user_id}/promote-admin` +Promote user to admin role. +- **Auth**: Admin required +- **Returns**: Updated user object + +### `GET /auth/admin-only` +Test endpoint for admin access. +- **Auth**: Admin required +- **Returns**: Success message + +--- + +## Product Endpoints + +### `GET /products/` +Get all products with optional sorting. +- **Query**: `sort` (optional) - Sort order +- **Returns**: Array of products + +### `GET /products/search/{keyword}` +Search products by keyword. +- **Params**: `keyword` - Search term +- **Query**: `sort` (optional) +- **Returns**: Array of matching products + +### `GET /products/{product_id}` +Get product by ID. +- **Params**: `product_id` +- **Returns**: Product object + +### `GET /products/{product_id}/fetch-image` +Fetch and cache product image. +- **Params**: `product_id` +- **Returns**: Product with updated image link + +### `POST /products/` +Create new product (admin only). +- **Auth**: Admin required +- **Body**: Product object +- **Returns**: Created product + +### `PUT /products/{product_id}` +Update product (admin only). +- **Auth**: Admin required +- **Params**: `product_id` +- **Body**: Product fields to update +- **Returns**: Updated product + +### `DELETE /products/{product_id}` +Delete product (admin only). +- **Auth**: Admin required +- **Params**: `product_id` +- **Returns**: Deleted product + +### `POST /products/fetch-images-all` +Fetch and cache images for all products. +- **Returns**: Success message with count + +--- + +## Cart Endpoints + +### `GET /cart/` +Get current user's cart. +- **Auth**: Required (via user_token query param) +- **Returns**: Cart object with items + +### `POST /cart/add` +Add item to cart. +- **Auth**: Required +- **Body**: `{ user_token, product_id, quantity }` +- **Returns**: Updated cart + +### `PUT /cart/update/{product_id}` +Update item quantity in cart. +- **Auth**: Required +- **Params**: `product_id` +- **Body**: `{ user_token, quantity }` +- **Returns**: Updated cart + +### `DELETE /cart/remove/{product_id}` +Remove item from cart. +- **Auth**: Required +- **Params**: `product_id` +- **Query**: `user_token` +- **Returns**: Updated cart + +### `POST /cart/checkout` +Checkout cart and create transaction. +- **Auth**: Required +- **Body**: `{ user_token }` +- **Returns**: Transaction object + +--- + +## Wishlist Endpoints + +### `GET /wishlist/{user_id}` +Get user's wishlist. +- **Params**: `user_id` +- **Returns**: Array of product IDs + +### `POST /wishlist/add` +Add product to wishlist. +- **Body**: `{ user_id, product_id }` +- **Returns**: Success message + +### `DELETE /wishlist/{user_id}/{product_id}` +Remove product from wishlist. +- **Params**: `user_id`, `product_id` +- **Returns**: Success message + +--- + +## Transaction Endpoints + +### `GET /transactions/` +Get current user's transactions. +- **Auth**: Required +- **Returns**: Array of transactions + +### `GET /transactions/{transaction_id}` +Get specific transaction by ID. +- **Auth**: Required +- **Params**: `transaction_id` +- **Returns**: Transaction object + +--- + +## Review Endpoints + +### `GET /reviews/{product_id}` +Get all reviews for a product. +- **Params**: `product_id` +- **Returns**: Array of reviews + +### `POST /reviews/{product_id}` +Add review for a product. +- **Auth**: Required +- **Params**: `product_id` +- **Body**: `{ user_id, user_name, review_title, review_content }` +- **Returns**: Created review + +### `DELETE /reviews/{product_id}/{review_id}` +Delete a review. +- **Auth**: Required +- **Params**: `product_id`, `review_id` +- **Returns**: Success message + +--- + +## Refund Endpoints + +### `POST /refunds` +Create refund request for a transaction. +- **Auth**: Required +- **Body**: `{ transaction_id, message }` +- **Returns**: Created refund object + +### `GET /refunds/my-requests` +Get current user's refund requests. +- **Auth**: Required +- **Returns**: Array of refunds + +### `GET /refunds/all` +Get all refund requests (admin only). +- **Auth**: Admin required +- **Returns**: Array of all refunds + +### `PUT /refunds/{refund_id}/approve` +Approve a refund request (admin only). +- **Auth**: Admin required +- **Params**: `refund_id` +- **Returns**: Updated refund object + +### `PUT /refunds/{refund_id}/deny` +Deny a refund request (admin only). +- **Auth**: Admin required +- **Params**: `refund_id` +- **Returns**: Updated refund object + +--- + +## Penalty Endpoints + +### `GET /penalties/my-penalties` +Get current user's penalties. +- **Auth**: Required +- **Returns**: Array of penalties + +### `GET /penalties/{user_id}` +Get penalties for specific user. +- **Auth**: Required +- **Params**: `user_id` +- **Returns**: Array of penalties + +### `POST /penalties/apply` +Apply penalty to user (admin only). +- **Auth**: Admin required +- **Body**: `{ user_id, reason }` +- **Returns**: Created penalty object + +### `POST /penalties/{penalty_id}/resolve` +Resolve a penalty (admin only). +- **Auth**: Admin required +- **Params**: `penalty_id` +- **Returns**: Updated penalty object + +--- + +## Metrics Endpoints (Admin) + +### `GET /admin/metrics/product/category` +Get products grouped by category. +- **Auth**: Admin required +- **Returns**: Category statistics + +### `GET /admin/metrics/product/charts` +Get product chart data. +- **Auth**: Admin required +- **Returns**: Chart data for products + +### `GET /admin/metrics/anomalies` +Get data anomalies and issues. +- **Auth**: Admin required +- **Returns**: Array of anomalies + +### `GET /admin/metrics/users` +Get user engagement metrics. +- **Auth**: Admin required +- **Returns**: User statistics and metrics + +--- + +## Export Endpoints (Admin) + +### `GET /export/` +Export data file (users, products, transactions, etc.). +- **Auth**: Admin required +- **Query**: `file` - File name (e.g., "users", "products") +- **Returns**: File download + +### `GET /export/available` +Get list of available export files. +- **Auth**: Admin required +- **Returns**: Array of filenames + +--- + +## External/Currency Endpoints + +### `GET /external/currency` +Get products with currency conversion. +- **Query**: `to` - Target currency code (INR, USD, CAD, EUR, GBP) +- **Returns**: Array of products with converted prices and exchange rate + +--- + +## Response Models + +### User +```json +{ + "user_id": "uuid", + "name": "string", + "email": "string", + "role": "customer|admin", + "user_token": "string" +} +``` + +### Product +```json +{ + "product_id": "string", + "product_name": "string", + "category": "string", + "discounted_price": 0, + "actual_price": 0, + "discount_percentage": 0, + "rating": 0, + "rating_count": 0, + "about_product": "string", + "img_link": "string", + "product_link": "string" +} +``` + +### Cart +```json +{ + "user_id": "uuid", + "items": [ + { + "product_id": "string", + "quantity": 0 + } + ] +} +``` + +### Transaction +```json +{ + "transaction_id": "uuid", + "user_id": "uuid", + "customer_name": "string", + "customer_email": "string", + "items": [], + "total_price": 0, + "timestamp": "ISO8601", + "estimated_delivery": "ISO8601", + "status": "completed|refunded" +} +``` + +### Refund +```json +{ + "refund_id": "uuid", + "transaction_id": "uuid", + "user_id": "uuid", + "message": "string", + "status": "pending|approved|denied", + "created_at": "ISO8601", + "updated_at": "ISO8601|null" +} +``` + +### Penalty +```json +{ + "penalty_id": "uuid", + "user_id": "uuid", + "reason": "string", + "resolved": false, + "created_at": "ISO8601" +} +``` + +### Review +```json +{ + "review_id": "uuid", + "product_id": "string", + "user_id": "uuid", + "user_name": "string", + "review_title": "string", + "review_content": "string", + "img_link": "string", + "product_link": "string", + "timestamp": "ISO8601" +} +``` + +--- + +## Error Responses + +All endpoints return standard HTTP status codes: +- `200` - Success +- `201` - Created +- `400` - Bad Request (validation error) +- `401` - Unauthorized (missing/invalid token) +- `403` - Forbidden (insufficient permissions) +- `404` - Not Found +- `500` - Internal Server Error + +Error response format: +```json +{ + "detail": "Error message" +} +``` diff --git a/backend/data/cart.json b/backend/data/cart.json index 92ff376..4d12f06 100644 --- a/backend/data/cart.json +++ b/backend/data/cart.json @@ -18,37 +18,18 @@ "items": [] }, "79be980f-d83d-4c63-b3b6-77c13193e1a5": { - "items": [ - { - "product_id": "B08HDJ86NZ", - "product_name": "boAt Deuce USB 300 2 in 1 Type-C & Micro USB Stress Resistant, Tangle-Free, Sturdy Cable with 3A Fast Charging & 480mbps Data Transmission, 10000+ Bends Lifespan and Extended 1.5m Length(Martian Red)", - "img_link": "https://m.media-amazon.com/images/I/41V5FtEWPkL._SY300_SX300_QL70_FMwebp_.jpg", - "product_link": "https://www.amazon.in/Deuce-300-Resistant-Tangle-Free-Transmission/dp/B08HDJ86NZ/ref=sr_1_4?qid=1672909124&s=electronics&sr=1-4", - "discounted_price": 329.0, - "quantity": 1 - }, - { - "product_id": "B08Y1TFSP6", - "product_name": "pTron Solero TB301 3A Type-C Data and Fast Charging Cable, Made in India, 480Mbps Data Sync, Strong and Durable 1.5-Meter Nylon Braided USB Cable for Type-C Devices for Charging Adapter (Black)", - "img_link": "https://m.media-amazon.com/images/I/31wOPjcSxlL._SY300_SX300_QL70_FMwebp_.jpg", - "product_link": "https://www.amazon.in/Solero-TB301-Charging-480Mbps-1-5-Meter/dp/B08Y1TFSP6/ref=sr_1_6?qid=1672909124&s=electronics&sr=1-6", - "discounted_price": 149.0, - "quantity": 1 - }, - { - "product_id": "B098NS6PVG", - "product_name": "Ambrane Unbreakable 60W / 3A Fast Charging 1.5m Braided Type C Cable for Smartphones, Tablets, Laptops & other Type C devices, PD Technology, 480Mbps Data Sync, Quick Charge 3.0 (RCT15A, Black)", - "img_link": "https://m.media-amazon.com/images/I/41lJ8x1yeIL._SY300_SX300_QL70_FMwebp_.jpg", - "product_link": "https://www.amazon.in/Ambrane-Unbreakable-Charging-Braided-Cable/dp/B098NS6PVG/ref=sr_1_2?qid=1672909124&s=electronics&sr=1-2", - "discounted_price": 199.0, - "quantity": 1 - } - ] + "items": [] }, "ae993132-12a6-40c6-a91a-3fe889d95edd": { "items": [] }, "1cb86309-e8b2-45e3-8da7-1c2f54c65ae5": { "items": [] + }, + "0bffca91-1c49-47a5-87b7-b0248da35d16": { + "items": [] + }, + "a7977848-4f94-4cb5-beea-6aa0604d3dda": { + "items": [] } } \ No newline at end of file diff --git a/backend/data/penalties.json b/backend/data/penalties.json index ab9b5fb..e76adff 100644 --- a/backend/data/penalties.json +++ b/backend/data/penalties.json @@ -25,7 +25,7 @@ "user_id": "79be980f-d83d-4c63-b3b6-77c13193e1a5", "reason": "this is a test\n", "timestamp": "2025-12-04T09:51:32.112239+00:00", - "status": "active" + "status": "resolved" }, { "penalty_id": "fcc4f1f7-b804-47b7-aabd-df60422581e1", @@ -33,5 +33,40 @@ "reason": "this will be resolved\n", "timestamp": "2025-12-04T09:51:39.294157+00:00", "status": "resolved" + }, + { + "penalty_id": "acea54ce-b852-4278-a61c-0c5ce22e1f4a", + "user_id": "79be980f-d83d-4c63-b3b6-77c13193e1a5", + "reason": "another one, bad", + "timestamp": "2025-12-04T21:36:26.127889+00:00", + "status": "active" + }, + { + "penalty_id": "e540b446-4cc6-4fce-bb97-0391ad57a113", + "user_id": "0bffca91-1c49-47a5-87b7-b0248da35d16", + "reason": "youve been spamming orders", + "timestamp": "2025-12-04T23:16:53.220112+00:00", + "status": "active" + }, + { + "penalty_id": "ad972921-23d0-4d17-918e-8d540c16a2aa", + "user_id": "a7977848-4f94-4cb5-beea-6aa0604d3dda", + "reason": "bad bad", + "timestamp": "2025-12-04T23:27:44.655761+00:00", + "status": "active" + }, + { + "penalty_id": "ee63d5ff-75ab-4e8f-87a4-07b11e9f0c72", + "user_id": "a7977848-4f94-4cb5-beea-6aa0604d3dda", + "reason": "terrible", + "timestamp": "2025-12-04T23:27:53.185321+00:00", + "status": "resolved" + }, + { + "penalty_id": "78900127-1853-499f-a3bb-33b92c2539aa", + "user_id": "a7977848-4f94-4cb5-beea-6aa0604d3dda", + "reason": "okay.", + "timestamp": "2025-12-04T23:27:59.267582+00:00", + "status": "resolved" } ] \ No newline at end of file diff --git a/backend/data/products.json b/backend/data/products.json index 807dff3..1059571 100644 --- a/backend/data/products.json +++ b/backend/data/products.json @@ -8,7 +8,7 @@ "discount_percentage": 43.0, "rating": 4.0, "rating_count": 43994, - "about_product": "Compatible with all Type C enabled devices, be it an android smartphone (Mi, Samsung, Oppo, Vivo, Realme, OnePlus, etc), tablet, laptop (Macbook, Chromebook, etc)|Supports Quick Charging (2.0/3.0)|Unbreakable – Made of special braided outer with rugged interior bindings, it is ultra-durable cable that won’t be affected by daily rough usage|Ideal Length – It has ideal length of 1.5 meters which is neither too short like your typical 1meter cable or too long like a 2meters cable|Supports maximum 3A fast charging and 480 Mbps data transfer speed|6 months manufacturer warranty from the date of purchase", + "about_product": "edited: Compatible with all Type C enabled devices, be it an android smartphone (Mi, Samsung, Oppo, Vivo, Realme, OnePlus, etc), tablet, laptop (Macbook, Chromebook, etc)|Supports Quick Charging (2.0/3.0)|Unbreakable – Made of special braided outer with rugged interior bindings, it is ultra-durable cable that won’t be affected by daily rough usage|Ideal Length – It has ideal length of 1.5 meters which is neither too short like your typical 1meter cable or too long like a 2meters cable|Supports maximum 3A fast charging and 480 Mbps data transfer speed|6 months manufacturer warranty from the date of purchase", "img_link": "https://m.media-amazon.com/images/I/41lJ8x1yeIL._SY300_SX300_QL70_FMwebp_.jpg", "product_link": "https://www.amazon.in/Ambrane-Unbreakable-Charging-Braided-Cable/dp/B098NS6PVG/ref=sr_1_2?qid=1672909124&s=electronics&sr=1-2" }, @@ -183,14 +183,14 @@ }, { "product_id": "B0B6F7LX4C", - "product_name": "MI 80 cm (32 inches) 5A Series HD Ready Smart Android LED TV L32M7-5AIN (Black)", + "product_name": "Huge tv!", "category": "Electronics|HomeTheater,TV&Video|Televisions|SmartTelevisions", "discounted_price": 13999.0, "actual_price": 24999.0, - "discount_percentage": 44.0, + "discount_percentage": 49.0, "rating": 4.2, "rating_count": 32840, - "about_product": "Note : The brands, Mi and Xiaomi, are part of the same multinational conglomerate|Resolution : HD Ready (1366 x 768) Resolution | Refresh Rate : 60 Hertz | 178 Degree wide viewing angle|Connectivity: Dual Band Wi-Fi | 2 HDMI ports to connect latest gaming consoles, set top box, Blu-ray Players | 2 USB ports to connect hard drives and other USB devices | ALLM | ARC | Bluetooth 5.0 | Ethernet|Sound: 20 Watts Output | Dolby Audio, DTS Virtual: X, DTS-HD|Smart TV Features : Android TV 11 | PatchWall | IMDb Integration | Universal Search | 300+ Free Live Channels | Kids Mode with Parental lock | Smart Recommendations | Language Universe – 15+ Languages | User Centre | Okay Google | Chromecast suporting Apps : Netflix, Prime Video, Disney+ Hotstar | 5000+ apps from Play Store |Quad core Cortex A35 | Chromecast built-in | Ok Google | Auto Low Latency Mode | 1GB RAM + 8GB Storage|Display: HD Ready | Vivid Picture Engine|Warranty Information: 1 year comprehensive warranty on product and 1 year additional on Panel provided by the brand from the date of purchase", + "about_product": "this is a huge TV", "img_link": "https://m.media-amazon.com/images/I/518sTcK7UGL._SY300_SX300_QL70_FMwebp_.jpg", "product_link": "https://www.amazon.in/MI-inches-Ready-Android-L32M7-5AIN/dp/B0B6F7LX4C/ref=sr_1_18?qid=1672909124&s=electronics&sr=1-18" }, @@ -1494,19 +1494,6 @@ "img_link": "https://m.media-amazon.com/images/I/21jGngYuQoL._SY300_SX300_QL70_FMwebp_.jpg", "product_link": "https://www.amazon.in/Electvision-Remote-Control-Compatible-Pairing/dp/B09DDCQFMT/ref=sr_1_130?qid=1672909130&s=electronics&sr=1-130" }, - { - "product_id": "B08RP2L2NL", - "product_name": "King Shine Multi Retractable 3.0A Fast Charger Cord, Multiple Charging Cable 4Ft/1.2m 3-in-1 USB Charge Cord Compatible with Phone/Type C/Micro USB for All Android and iOS Smartphones (Random Colour)", - "category": "Computers&Accessories|Accessories&Peripherals|Cables&Accessories|Cables|USBCables", - "discounted_price": 347.0, - "actual_price": 999.0, - "discount_percentage": 65.0, - "rating": 3.5, - "rating_count": 1121, - "about_product": "One for All: Charge any of your devices with the 3-in-1 retractable charging cable, built-in Micro USB, USB-C, and iOS connectors.|No need to carry any other cables when you are in a car, office ,travelling or house guests,it was created exclusively for the purposes of convenient charging several devices simultaneously or individually.|Compatible iPhone 11 Pro i Phone 11 iPhone 11 Pro Max iPhone XR iPhone XS iPhone XS Max iPhone X iPhone 8 iPhone 8 Plus iPhone 7 iPhone 7 Plus iPhone SE iPhone 6s iPhone 6s Plus iPhone 6 iPhone 6 Plus iPhone 5s i-Pad Air (3rd generation) i-Pad mini (5th generation) i-Pad (6th generation) i-Pad Pro 12.9-inch (2nd generation) i-Pad Pro 10.5-inch (5th generation) i-Pad Pro 9.7-inch Pro 12.9-inch (1st generation) i-Pad Air 2 i-Pad mini 4 i-Pad mini 3 i-Pad Air mini 2 iPod touch (6th generation)|Flexible Cable Length: Easy to coil and organize Rope Streamer, without tangles. Keeping the cable organized when you don't want to use that length or shape storage you like sometimes.", - "img_link": "https://m.media-amazon.com/images/I/41ks-G58Q6L._SX342_SY445_QL70_FMwebp_.jpg", - "product_link": "https://www.amazon.in/Retractable-Multiple-Charging-Compatible-Smartphones/dp/B08RP2L2NL/ref=sr_1_131?qid=1672909130&s=electronics&sr=1-131" - }, { "product_id": "B0B4G2MWSB", "product_name": "Lapster 5 pin mini usb cable, usb b cable,camera cable usb2.0 for External HDDS/Card Readers/Camera etc.", @@ -1741,19 +1728,6 @@ "img_link": "https://m.media-amazon.com/images/I/51t70kvc0SL._SY300_SX300_QL70_FMwebp_.jpg", "product_link": "https://www.amazon.in/LG-inches-Ultra-43UQ7500PSF-Ceramic/dp/B0B3XY5YT4/ref=sr_1_154?qid=1672909131&s=electronics&sr=1-154" }, - { - "product_id": "B0B4HKH19N", - "product_name": "pTron Solero 331 3.4Amps Multifunction Fast Charging Cable, 3-in-1 USB Cable Micro USB/Type-C/iOS, Made in India, Durable & Strong & Tangle-free 118cm in Length (Black)", - "category": "Computers&Accessories|Accessories&Peripherals|Cables&Accessories|Cables|USBCables", - "discounted_price": 249.0, - "actual_price": 931.0, - "discount_percentage": 73.0, - "rating": 3.9, - "rating_count": 1075, - "about_product": "Fast Charging - All combined 3-in-1 USB cable supports fast charging with a speed of up to 3.4Amps to all your gadgets including smartphones, tablets, Bluetooth speakers, and much more.|Wide Compatibility - Solero 331 universal fast charging cable can Simultaneously Charge Android, iOs & Type-C devices. Proudly Made in India.|Ultra Durable USB Cable - The cable is crafted with a thick PVC jacket giving you an extra tough cable with 10000+ bends lifespan cycle. It can easily handle daily wear and tear.|Convenient Length - This multi-pin USB cable comes with an ideal length of 118cm which eliminates the struggle of finding nearby switchboards.|6 months manufacturer warranty from the date of purchase on manufacturing defects only. Please note this cable is only for charging and does not support data transfer.", - "img_link": "https://m.media-amazon.com/images/I/31Wfr-ISQxL._SY300_SX300_QL70_FMwebp_.jpg", - "product_link": "https://www.amazon.in/pTron-3-4Amps-Multifunction-Charging-Tangle-free/dp/B0B4HKH19N/ref=sr_1_155?qid=1672909131&s=electronics&sr=1-155" - }, { "product_id": "B08TGG316Z", "product_name": "10k 8k 4k HDMI Cable, Certified 48Gbps 1ms Ultra High Speed HDMI 2.1 Cable 4k 120Hz 144Hz 2k 165Hz 8k 60Hz Dynamic HDR ARC eARC DTS:X Compatible for Mac Gaming PC Soundbar TV Monitor Laptop PS5 4 Xbox", @@ -19225,5 +19199,31 @@ "about_product": "Should be saved", "img_link": "https://example.com/img.jpg", "product_link": "https://example.com/prod" + }, + { + "product_id": "TZDKJA0VR2", + "product_name": "Spagetti", + "category": "Spagetti", + "discounted_price": 500.0, + "actual_price": 1000.0, + "discount_percentage": 50.0, + "rating": 5.0, + "rating_count": 0, + "about_product": "this is some good spagetti", + "img_link": "https://spagetti", + "product_link": "https://spagettilink" + }, + { + "product_id": "1RHJWX6CHL", + "product_name": "Cheese Burger", + "category": "burger", + "discounted_price": 500.0, + "actual_price": 1000.0, + "discount_percentage": 50.0, + "rating": 5.0, + "rating_count": 10000, + "about_product": "super good burger, pls buy", + "img_link": "https://burger", + "product_link": "https://burgerlink" } ] \ No newline at end of file diff --git a/backend/data/refunds.json b/backend/data/refunds.json index 310ab59..82a5de7 100644 --- a/backend/data/refunds.json +++ b/backend/data/refunds.json @@ -52,5 +52,32 @@ "status": "pending", "created_at": "2025-12-04T20:46:11.739573", "updated_at": null + }, + { + "refund_id": "13a0b241-346a-4190-8afa-5e0c3b91b8a7", + "transaction_id": "0f782aad-2231-4e57-8e8a-372c549afa39", + "user_id": "79be980f-d83d-4c63-b3b6-77c13193e1a5", + "message": "too many remotes, not enough Tv's", + "status": "approved", + "created_at": "2025-12-04T21:33:17.094571", + "updated_at": "2025-12-04T21:34:32.033344" + }, + { + "refund_id": "404885a2-860f-4205-82eb-a302f64e244d", + "transaction_id": "a0ed719b-2c7e-4b33-923f-34678914c794", + "user_id": "0bffca91-1c49-47a5-87b7-b0248da35d16", + "message": "I dont like these items, too expensive", + "status": "approved", + "created_at": "2025-12-04T23:10:46.971177", + "updated_at": "2025-12-04T23:11:51.938404" + }, + { + "refund_id": "f6b3f3e4-f7f6-4aeb-b54c-055f5297d166", + "transaction_id": "57517be3-1662-4780-9e2f-bf6c22ceb909", + "user_id": "a7977848-4f94-4cb5-beea-6aa0604d3dda", + "message": "Not a fan of the charger", + "status": "approved", + "created_at": "2025-12-04T23:23:57.599942", + "updated_at": "2025-12-04T23:24:42.470210" } ] \ No newline at end of file diff --git a/backend/data/transactions.json b/backend/data/transactions.json index 813f632..0fc07f0 100644 --- a/backend/data/transactions.json +++ b/backend/data/transactions.json @@ -319,6 +319,90 @@ "timestamp": "2025-12-04T09:19:58.266513+00:00", "estimated_delivery": "2025-12-09", "status": "completed" + }, + { + "transaction_id": "0f782aad-2231-4e57-8e8a-372c549afa39", + "user_id": "79be980f-d83d-4c63-b3b6-77c13193e1a5", + "customer_name": "Fraser Muller", + "customer_email": "frasermuller2005@gmail.com", + "items": [ + { + "product_id": "B01N90RZ4M", + "product_name": "Tata Sky Universal Remote", + "img_link": "https://m.media-amazon.com/images/I/315GdnF+LcL._SY300_SX300_QL70_FMwebp_.jpg", + "product_link": "https://www.amazon.in/TATASKY-Universal-Remote/dp/B01N90RZ4M/ref=sr_1_60?qid=1672909126&s=electronics&sr=1-60", + "discounted_price": 230.0, + "quantity": 1 + }, + { + "product_id": "B07B275VN9", + "product_name": "Airtel DigitalTV DTH Television, Setup Box Remote Compatible for SD and HD Recording (Black)", + "img_link": "https://m.media-amazon.com/images/I/41v00lhhdbL._SY300_SX300_QL70_FMwebp_.jpg", + "product_link": "https://www.amazon.in/Airtel-Digital-Remote-Compatible-Recording/dp/B07B275VN9/ref=sr_1_66_mod_primary_new?qid=1672909126&s=electronics&sbo=RZvfv%2F%2FHxDF%2BO5021pAnSA%3D%3D&sr=1-66", + "discounted_price": 179.0, + "quantity": 1 + }, + { + "product_id": "B0BCZCQTJX", + "product_name": "Firestick Remote", + "img_link": "https://m.media-amazon.com/images/I/31BAOmjUAOL._SY300_SX300_QL70_FMwebp_.jpg", + "product_link": "https://www.amazon.in/Basesailor-2nd-generation-Firestick-Remote/dp/B0BCZCQTJX/ref=sr_1_88?qid=1672909128&s=electronics&sr=1-88", + "discounted_price": 1434.0, + "quantity": 1 + } + ], + "total_price": 1843.0, + "timestamp": "2025-12-04T21:23:45.083282+00:00", + "estimated_delivery": "2025-12-09", + "status": "refunded" + }, + { + "transaction_id": "5c1a24e9-ca40-4240-896f-90471d536858", + "user_id": "79be980f-d83d-4c63-b3b6-77c13193e1a5", + "customer_name": "Fraser Muller", + "customer_email": "frasermuller2005@gmail.com", + "items": [ + { + "product_id": "B08B42LWKN", + "product_name": "OnePlus 80 cm (32 inches) Y Series HD Ready LED Smart Android TV 32Y1 (Black)", + "img_link": "https://m.media-amazon.com/images/I/41WE9ZGEC4L._SY300_SX300_QL70_FMwebp_.jpg", + "product_link": "https://www.amazon.in/OnePlus-inches-Ready-Android-32Y1/dp/B08B42LWKN/ref=sr_1_29?qid=1672909125&s=electronics&sr=1-29", + "discounted_price": 14999.0, + "quantity": 1 + }, + { + "product_id": "B09L8DSSFH", + "product_name": "7SEVEN® Compatible for Samsung Smart 4K Ultra HD TV Monitor Remote Control Replacement of Original Samsung TV Remote for LED OLED UHD QLED and Suitable for 6 7 8 Series Samsung TV with Hot Keys BN59-01259E", + "img_link": "https://m.media-amazon.com/images/I/21bnr4EWt0L._SY300_SX300_QL70_FMwebp_.jpg", + "product_link": "https://www.amazon.in/7SEVENTM-Compatible-Replacement-Original-BN59-01259E/dp/B09L8DSSFH/ref=sr_1_52?qid=1672909126&s=electronics&sr=1-52", + "discounted_price": 399.0, + "quantity": 1 + } + ], + "total_price": 15398.0, + "timestamp": "2025-12-04T21:32:42.152434+00:00", + "estimated_delivery": "2025-12-09", + "status": "completed" + }, + { + "transaction_id": "490fe43e-4332-41dc-a7da-6832463bb6ad", + "user_id": "79be980f-d83d-4c63-b3b6-77c13193e1a5", + "customer_name": "Fraser Muller", + "customer_email": "frasermuller2005@gmail.com", + "items": [ + { + "product_id": "B08HDJ86NZ", + "product_name": "boAt Deuce USB 300 2 in 1 Type-C & Micro USB Stress Resistant, Tangle-Free, Sturdy Cable with 3A Fast Charging & 480mbps Data Transmission, 10000+ Bends Lifespan and Extended 1.5m Length(Martian Red)", + "img_link": "https://m.media-amazon.com/images/I/41V5FtEWPkL._SY300_SX300_QL70_FMwebp_.jpg", + "product_link": "https://www.amazon.in/Deuce-300-Resistant-Tangle-Free-Transmission/dp/B08HDJ86NZ/ref=sr_1_4?qid=1672909124&s=electronics&sr=1-4", + "discounted_price": 329.0, + "quantity": 1 + } + ], + "total_price": 329.0, + "timestamp": "2025-12-04T21:37:44.248536+00:00", + "estimated_delivery": "2025-12-09", + "status": "completed" } ], "ae993132-12a6-40c6-a91a-3fe889d95edd": [ @@ -604,5 +688,73 @@ "estimated_delivery": "2025-12-09", "status": "completed" } + ], + "0bffca91-1c49-47a5-87b7-b0248da35d16": [ + { + "transaction_id": "a0ed719b-2c7e-4b33-923f-34678914c794", + "user_id": "0bffca91-1c49-47a5-87b7-b0248da35d16", + "customer_name": "new user", + "customer_email": "newuser@gmail.com", + "items": [ + { + "product_id": "B098NS6PVG", + "product_name": "Ambrane Unbreakable 60W / 3A Fast Charging 1.5m Braided Type C Cable for Smartphones, Tablets, Laptops & other Type C devices, PD Technology, 480Mbps Data Sync, Quick Charge 3.0 (RCT15A, Black)", + "img_link": "https://m.media-amazon.com/images/I/41lJ8x1yeIL._SY300_SX300_QL70_FMwebp_.jpg", + "product_link": "https://www.amazon.in/Ambrane-Unbreakable-Charging-Braided-Cable/dp/B098NS6PVG/ref=sr_1_2?qid=1672909124&s=electronics&sr=1-2", + "discounted_price": 199.0, + "quantity": 1 + }, + { + "product_id": "B00MFPCY5C", + "product_name": "GIZGA essentials Universal Silicone Keyboard Protector Skin for 15.6-inches Laptop (5 x 6 x 3 inches)", + "img_link": "https://m.media-amazon.com/images/I/418Sf+2V1BL._SY300_SX300_QL70_FMwebp_.jpg", + "product_link": "https://www.amazon.in/Universal-Silicone-Keyboard-Protector-15-6-inch/dp/B00MFPCY5C/ref=sr_1_65?qid=1672902997&s=computers&sr=1-65", + "discounted_price": 39.0, + "quantity": 1 + }, + { + "product_id": "B008IFXQFU", + "product_name": "TP-Link USB WiFi Adapter for PC(TL-WN725N), N150 Wireless Network Adapter for Desktop - Nano Size WiFi Dongle Compatible with Windows 11/10/7/8/8.1/XP/ Mac OS 10.9-10.15 Linux Kernel 2.6.18-4.4.3", + "img_link": "https://m.media-amazon.com/images/I/31dDGr5uhaL._SY300_SX300_QL70_FMwebp_.jpg", + "product_link": "https://www.amazon.in/TP-Link-TL-WN725N-150Mbps-Wireless-Adapter/dp/B008IFXQFU/ref=sr_1_10?qid=1672909124&s=electronics&sr=1-10", + "discounted_price": 499.0, + "quantity": 1 + } + ], + "total_price": 737.0, + "timestamp": "2025-12-04T23:09:54.824595+00:00", + "estimated_delivery": "2025-12-09", + "status": "refunded" + } + ], + "a7977848-4f94-4cb5-beea-6aa0604d3dda": [ + { + "transaction_id": "57517be3-1662-4780-9e2f-bf6c22ceb909", + "user_id": "a7977848-4f94-4cb5-beea-6aa0604d3dda", + "customer_name": "newest user", + "customer_email": "newestuser@gmail.com", + "items": [ + { + "product_id": "B098NS6PVG", + "product_name": "Ambrane Unbreakable 60W / 3A Fast Charging 1.5m Braided Type C Cable for Smartphones, Tablets, Laptops & other Type C devices, PD Technology, 480Mbps Data Sync, Quick Charge 3.0 (RCT15A, Black)", + "img_link": "https://m.media-amazon.com/images/I/41lJ8x1yeIL._SY300_SX300_QL70_FMwebp_.jpg", + "product_link": "https://www.amazon.in/Ambrane-Unbreakable-Charging-Braided-Cable/dp/B098NS6PVG/ref=sr_1_2?qid=1672909124&s=electronics&sr=1-2", + "discounted_price": 199.0, + "quantity": 1 + }, + { + "product_id": "B008IFXQFU", + "product_name": "TP-Link USB WiFi Adapter for PC(TL-WN725N), N150 Wireless Network Adapter for Desktop - Nano Size WiFi Dongle Compatible with Windows 11/10/7/8/8.1/XP/ Mac OS 10.9-10.15 Linux Kernel 2.6.18-4.4.3", + "img_link": "https://m.media-amazon.com/images/I/31dDGr5uhaL._SY300_SX300_QL70_FMwebp_.jpg", + "product_link": "https://www.amazon.in/TP-Link-TL-WN725N-150Mbps-Wireless-Adapter/dp/B008IFXQFU/ref=sr_1_10?qid=1672909124&s=electronics&sr=1-10", + "discounted_price": 499.0, + "quantity": 3 + } + ], + "total_price": 1696.0, + "timestamp": "2025-12-04T23:22:50.898675+00:00", + "estimated_delivery": "2025-12-09", + "status": "refunded" + } ] } \ No newline at end of file diff --git a/backend/data/users.json b/backend/data/users.json index 2cec180..56537c1 100644 --- a/backend/data/users.json +++ b/backend/data/users.json @@ -28,7 +28,7 @@ "name": "Fraser Muller", "email": "frasermuller2005@gmail.com", "password_hash": "$2b$12$0WBVrzELlsKw6Vez3bEViO1pdYXNeeNGzYHu0ZiR8oLKW/EEpdPT.", - "role": "customer", + "role": "admin", "user_token": "7xf3lzPO8xV2D6UUfNquoWifPK1N" }, { @@ -38,5 +38,29 @@ "password_hash": "$2b$12$AeRCEl0GyH3aWZ0E8zDnZebtkk04jQIcr/hu/vqYp9E7IrGpYqlvO", "role": "customer", "user_token": "VoooH4Eb0DBF9BOJwQvfW2dM0heB" + }, + { + "user_id": "ed4a708f-0291-4005-a2a6-96f15cfbfe5d", + "name": "test user", + "email": "testuser@gmail.com", + "password_hash": "$2b$12$.9814GuuEkLjCj/hDtEPSuQLKWhFX4MGHyxsb5vFcsotFmK0lsH3.", + "role": "customer", + "user_token": "mP922vmmReeJHxuq7GMtKhM0nxbO" + }, + { + "user_id": "0bffca91-1c49-47a5-87b7-b0248da35d16", + "name": "new user", + "email": "newuser@gmail.com", + "password_hash": "$2b$12$FELV.wIPDPHWQnIVBXTTXu.Y531GcV9vB2Pt2wlH5x0TD0bF0sfo.", + "role": "customer", + "user_token": "EGe7sRYqgTcPxU8CdOYwh4ELp6TQ" + }, + { + "user_id": "a7977848-4f94-4cb5-beea-6aa0604d3dda", + "name": "newest user", + "email": "newestuser@gmail.com", + "password_hash": "$2b$12$h.R6xGCUgUmSsffyyOlib.HfXZMWFMqFEecJyGfOxgrripDWHK5Xe", + "role": "customer", + "user_token": "XjTiuSrT8xayr1n3iZNTUvbBLIBr" } ] \ No newline at end of file diff --git a/backend/data/wishlist.json b/backend/data/wishlist.json index 1c30bb1..09c2890 100644 --- a/backend/data/wishlist.json +++ b/backend/data/wishlist.json @@ -10,7 +10,9 @@ "B08HDJ86NZ" ], "79be980f-d83d-4c63-b3b6-77c13193e1a5": [ - "B08HDJ86NZ" + "B08B42LWKN" ], - "ae993132-12a6-40c6-a91a-3fe889d95edd": [] + "ae993132-12a6-40c6-a91a-3fe889d95edd": [], + "0bffca91-1c49-47a5-87b7-b0248da35d16": [], + "a7977848-4f94-4cb5-beea-6aa0604d3dda": [] } \ No newline at end of file diff --git a/scrum-documents/README.md b/scrum-documents/README.md index e69de29..e8cc485 100644 --- a/scrum-documents/README.md +++ b/scrum-documents/README.md @@ -0,0 +1,335 @@ +# Scrum Document Logbook +**Group: Netflix & Coding** +**Course: COSC 310 – Software Engineering** +**Term: 2025** + +--- + +## **Sep 15 — 2:30 PM–3:15 PM | Team Contract Formation** +**Meeting Type:** Planning & Team Formation +**Attendees:** Fraser, Kithe, Coran, Harrison + +### **Key Discussion Points** +- Began constructing the team contract. +- Emphasized the importance of communication — direct and constructive. +- Team core values established: + - Respect + - Accountability + - Dedication +- Meeting frequency decided to be 2× per week: one in-lab meeting and one additional online/in-person meeting. +- Set structure for meetings: + - First meeting of the week: sets goals and expectations. + - Second meeting: progress check and collaborative debugging. +- Covered accountability and repercussions for non-participation. +- Individual contributions and communication expectations clarified. +- Group pledged to advocate for balanced contributions and transparency. + +### **Action Items** +- Finalize and sign contract. +- Bring initial feature ideas to next meeting. + +--- + +## **Sep 22 — 2:00 PM–3:00 PM | GitHub Setup & Project Planning** +**Meeting Type:** Technical Setup +**Attendees:** Fraser, Kithe, Coran, Harrison + +### **Key Discussion Points** +- Created GitHub repository. +- Linked Visual Studio Code environments to GitHub. +- Discussed branching strategy (feature branches → PR → main). +- Began initial backlog brainstorming and early planning of core features. +- Started thinking about the long-term shape and direction of the project. +- Set preliminary commit message and coding conventions. + +### **Action Items** +- Add early backlog stories into GitHub Projects. +- Begin refining feature ideas during M1. + +--- + +## **Oct 03 — 10:00 AM–1:30 PM | M1 Finalization** +**Meeting Type:** Requirements Documentation +**Attendees:** Fraser, Kithe, Coran, Harrison + +### **Key Discussion Points** +- Continued working on M1 — Requirements Specifications. +- Discussed project scope, functionality, usability, and priorities. +- Created extended user stories. +- Drafted: + - Functional Requirements + - Non-Functional Requirements +- Created GitHub Backlog and imported user stories. +- Decided Coran would add prioritization labels at home. +- Delegated remainder of M1 writing tasks to individual team members. + +### **Action Items** +- Finalize Requirements Specification section. +- Complete individual M1 writing contributions. + +--- + +## **Oct 06 — 2:00 PM–4:00 PM | FastAPI Initialization** +**Meeting Type:** Backend Setup +**Attendees:** Fraser, Kithe, Coran, Harrison + +### **Key Discussion Points** +- Met in person to run and verify FastAPI demo functionality on all devices. +- Discussed the foundation for our dataset and how it will connect to our endpoint application. +- Ensured consistent backend development environment across the team. + +### **Action Items** +- Begin planning API structure diagrams for M2. + +--- + +## **Oct 08 — 11:00 AM–12:30 PM | M2 Finalization** +**Meeting Type:** Design & Diagramming +**Attendees:** Fraser, Kithe, Coran, Harrison + +### **Key Discussion Points** +- Met partly in person, partly online. +- Reviewed each other's diagrams (UML, component, sequence, etc.). +- Agreed to base most diagrams on Fraser’s UML, incorporating contributions from others. +- Began working on required M2 diagrams: + - Architecture Diagram + - Data Flow Diagram (Level 1) + - Component Diagram + - Class Diagram + - Sequence Diagrams (2+) + - Design Pattern Diagram +- Set up shared diagram accounts/spaces for collaboration. +- Discussed how each design component maps back to user stories in the backend. +- Documented these conclusions in M2. +- Reduced scope where necessary, focusing on core implications of user stories. +- Delegated remaining diagram work individually. + +### **Action Items** +- Complete diagramming tasks individually. + +--- + +## **Oct 19 — 10:00 AM–11:00 AM | Minor Class Delegation** +**Meeting Type:** Backend Class Design +**Attendees:** Fraser, Kithe, Coran, Harrison + +### **Key Discussion Points** +- Discussed structure for User, Customer, and Product classes. +- Mapped these to M2 UML diagrams. +- Discussed pre-lab submission for Oct 20. +- Prioritized user-related classes. +- Structured lines of communication for upcoming development workload. + +### **Action Items** +- Begin implementing assigned classes. + +--- + +## **Oct 20 — 2:00 PM–4:00 PM | Lab Testing** +**Meeting Type:** Testing Session +**Attendees:** Fraser, Kithe, Coran, Harrison + +### **Key Discussion Points** +- Added issues to main branch Kanban. +- Started writing and testing class-related issues. +- Addressed early errors and wrote initial test cases. + +### **Action Items** +- Continue implementing and refining tests. + +--- + +## **Oct 27 — 2:00 PM–3:30 PM | Code Comprehension** +**Meeting Type:** Collaborative Review +**Attendees:** Fraser, Kithe, Coran, Harrison + +### **Key Discussion Points** +- Explained code to each other to ensure all team members understand the system. +- Identified misunderstandings, unclear sections, and inconsistent patterns. +- Discussed improvements to code clarity and style. + +### **Action Items** +- Improve documentation + revise unclear sections. + +--- + +## **Oct 30 — 10:00 AM–11:00 AM | Workflows and API Code Review** +**Meeting Type:** QA + API Review +**Attendees:** Fraser, Kithe, Coran, Harrison + +### **Key Discussion Points** +- Held mid-project checkpoint to assess progress. +- Reviewed existing workflows and quality assurance practices. +- Studied another group's CI pipeline and planned our own. +- Performed thorough code review of new APIs and additions. +- Tested API outputs and identified internal errors. +- Resolved some errors during meeting; delegated remaining debugging to Fraser and Kithe. +- Reviewed user stories: + - Identified missing elements + - Added labels and sub-issues + - Assigned story labeling to Harrison +- Discussed missing or weak areas in testing and planned updates. + +### **Action Items** +- Improve CI and expand testing terminology/documentation. + +--- + +## **Nov 03 — 2:00 PM–4:00 PM | TA Progression Check** +**Meeting Type:** Consultation +**Attendees:** Fraser, Kithe, Coran, Harrison + +### **Key Discussion Points** +- Checked progress with TA. +- Discussed plan to restart backend due to structural issues and code bloat. +- TA provided insight into class organization, different moderator levels, and simplification strategies. +- Discussed API consistency and plans for restructuring. + +### **Action Items** +- Prepare for full restructuring session on Nov 5. + +--- + +## **Nov 05 — 5:00 PM–9:00 PM | File Restructuring and API Development** +**Meeting Type:** Major Backend Rebuild +**Attendees:** Fraser, Kithe, Coran, Harrison + +### **Key Discussion Points** +- Met to restructure Kanban board. +- Deleted components out of scope. +- Refined existing user stories into a more structured backlog. +- Created additional Kanban entries for the new system. +- Planned simplified development workflow: + - cleaner structure + - consistent merging + - stable API development +- **Restructured backend into full MVC architecture.** +- **Created CI pipeline with pytest.** + +### **Action Items** +- Continue implementing new backend according to MVC. + +--- + +## **Nov 17 — 2:00 PM–3:30 PM | Code Review & Check-in** +**Meeting Type:** Review +**Attendees:** Fraser, Kithe, Coran, Harrison + +### **Key Discussion Points** +- Met with TA for code review. +- Reviewed backend + frontend integration. +- Discussed improvements and confirmed progress. + +### **Action Items** +- Apply TA feedback. + +--- + +## **Nov 21 — 10:00 AM–11:00 PM | M3 Finalisation** +**Meeting Type:** Full-Day Work Session +**Attendees:** +- **10:00–12:00 & 2:00–3:30:** Fraser, Kithe, Coran, Harrison +- **5:00–11:00:** Fraser, Kithe, Coran + +### **Key Discussion Points** +- The bulk of M3 work finalized. +- Reviewed plans, delegated tasks for writing components and cleanup. +- From 10–12: + - Finalized writing portions for M3 + - Cleaned Kanban issues + - Planned backend containerization using Docker + - Planned external API integration + - Planned testing overhaul (unit, integration, and mocking) +- From 2–3:30: + - All members worked on remaining M3 features + - Finalized smaller debugging tasks +- From 5–11 PM: + - Implemented the remaining M3 backend features + - Containerized backend using Docker + - Integrated external API + - Refactored and expanded testing system (unit, integration, mocks) + - Cleaned structure and prepared final M3 submission + +### **Action Items** +- Ensure all documentation matches final system. +- Submit M3 package. + +--- + +## **Nov 30 — 12:30 PM–1:30 PM | M4 Finalisation** +**Meeting Type:** Planning +**Attendees:** Fraser, Kithe, Coran, Harrison + +### **Key Discussion Points** +- Coordinated new features for M4. +- Delegated tasks to each group member. +- Discussed Git changes to support frontend integration. +- External API conversation. +- Frontend implementation planning. +- Final backlog verification. +- Frequent references to the traceability matrix. + +### **Action Items** +- Begin implementing M4 features. + +--- + +## **Dec 1 — 2:00 PM–4:00 PM | Final Lab Session** +**Meeting Type:** TA Verification +**Attendees:** Fraser, Kithe, Coran, Harrison + +### **Key Discussion Points** +- Verified individual components with TA: + - WISHLIST (Coran) — Approved + - REFUNDS (Fraser) — Approved + - ADMIN ANALYTICS DASHBOARD (Kithe) — Approved, but, Must be a clearly new/advanced feature + - PENALTIES (Harrison) — Approved Must allow user dispute or response + - EXTERNAL API — Approved (implemented in M3 already) +- Discussed best practices for merging final features. +- Identified remaining M4 requirements and deliverables. + +### **Action Items** +- Implement Individual Features +- Begin frontend coding as group. +- Prepare for video demonstration. + +--- + +## **Dec 3 — 2:00 PM–3:30 PM | Final Development Push** +**Meeting Type:** Development +**Attendees:** Fraser, Kithe, Coran, Harrison + +### **Key Discussion Points** +- Continued working on frontend with all group members present. +- Created README. +- Dockerized system. +- Identified remainder of M4 components to finish: + - Scrum documents + - Traceability matrix + - Feature write-ups + +### **Action Items** +- Finish frontend. +- Prepare for video demo on Dec 4. + +--- + +## **Dec 4 — 2:00 PM–2:30 PM | Demo Recording & Final Submission Assembly** +**Meeting Type:** Recording & Documentation +**Attendees:** Fraser, Kithe, Coran, Harrison + +### **Key Discussion Points** +- Discussed recording strategies and presentation structure. +- Recorded video parts individually and edited into final video. +- Completed final deliverables: + - Scrum documents + - Traceability matrix + - M4 write-up + - README +- Confirmed system was fully Dockerized and frontend functional. + +### **Action Items** +- Submit M4 package. +- Upload demonstration video. + +---