DBDesign.xlsx | V2.0 Backend | Project Kick-off | Product Backlog | Sprint Backlog | V1.0 Frontend | V1.0 Backend |
---|
database:[Please found the Backend Code Here]
A microservices approach for enhanced scalability and feature-richness.
- productInfo: Detailed information about products.
- supplier: Stores supplier details and manage product database.
- user: Information on employees, managers, customers and testers.
- role: Implements the RBAC by defining user roles and permissions.
- order: Data on user orders.
- ProductInOrder: Details the products within each order.
- cart: Temporarily stores products users wish to purchase.
- ProductCategory: Classifies products.
- payment: Manages payment data and processes.
- coupon: Captures active coupon details and marketing service.
- Database Design: Construct a relational schema interconnecting all tables. Ensure efficient querying capabilities and data integrity.
- Service Implementation: Develop a centralized service ensuring: - CRUD operations for all tables. - Business logic such as cart-to-order transition, payment processing, etc.
- User Roles Management: Define clear roles for employees, managers, and customers. Implement relevant permissions.
- Integration & Testing: Thoroughly test all functionalities, particularly focusing on user journey—from product selection to order placement and payment.
- Optimization & Deployment: Refine the code, optimize for performance, and deploy to a production environment.
1 Preparation [return to outline]
- Project Vision: QuickMall V2.0
- Project Kick-off:
- Auth-service: create user and grant user role permissions (admin, supplier, customer, tester)
- Strictly establish product and supplier databases according to e-commerce website standards.
- Implement a seamless shopping workflow:
- Enabled users to effortlessly add items, review cart selections, create orders, finalize payments, and instantly receive purchase receipts.
- Implement coupon messaging system.
- Environment Setup:
- Development: springframework:2.7.13-SNAPSHOT; spring-cloud: 2021.0.7; Java 1.8;
- Staging:
dev
branch. - Production:
main
branch.
- Tool Selection: Tools like Git for version control, JIRA for task management, Jenkins for continuous integration and AWS for deployment.
2 Product Backlog [return to outline]
- List Features: Identify and list down features for each service.
- Prioritize: Arrange features based on their importance and dependencies.
- Estimation: Use story points to give an effort estimate to each feature.
User Stories:
- US201: As a customer, I want to browse through products, their brands, category, details, and attributes.
- Feature: Implement SKU, SPU, and their respective attributes in
product-service
.
- Feature: Implement SKU, SPU, and their respective attributes in
- US202: As a manager, I want to categorize products and link them with brands.
- Feature: Utilize
category
,categroy_brand
tables, and ensure brands are associated correctly with products.
- Feature: Utilize
- US203: As an employee, I want to view and manage the attributes and their groupings for products.
- Feature: Manage
attribute
,attribut_group
, andattribute_attribute_group
for detailed product information.
- Feature: Manage
User Stories:
- US204: As a manager, I want to onboard suppliers and have an overview of the products they supply.
- Feature: Establish the
supplier
,supplier_product
, andsupplier_brand
functionalities.
- Feature: Establish the
- US205: As a supplier, I want to manage my contact details and track audit logs.
- Feature: Develop the
supplier_contact
andsupplier_audit
functionalities.
- Feature: Develop the
User Stories:
- US206: As an admin, I want to allocate roles and permissions to users.
- Feature: RBAC implementation; specify roles such as admin, supplier, customer, and tester(user).
User Stories:
- US207: As a customer, I want to add products to my cart and view them before purchasing.
- Feature: Add to and view cart contents, ensuring integration with product-service for real-time product details.
User Stories:
- US208: As a customer, I want to convert my cart items into orders, verifying the details before making a payment.
- Feature: Create and manage order details, linking products selected from the cart.
User Stories:
- US209: As a customer, I want a seamless payment experience with confirmation notifications.
- Feature: Securely process payments and send success notifications back to order-service.
User Stories:
-
US210: As a customer, I want to use coupons during checkout to avail discounts.
- Feature: Handle coupon validations, applying appropriate discounts to orders.
-
US211: As a manager, I want to create and manage coupon promotions.
- Feature: Establish a system for creating, updating, and deactivating coupons.
- TD201: Implement centralized logging across microservices for better traceability.
- TD202: Improve inter-service communication resilience; consider circuit breakers.
- BUG201: Address any latency issues during cart to order transition.
- BUG202: Rectify any discrepancies in calculating discounts with coupons.
- IMP201: Research potential integrations with external payment gateways to expand payment options.
- IMP202: Explore options for a recommendation engine to suggest products to users based on their behavior.
3 Sprint Backlog [return to outline]
For each sprint, there will be a clear sprint goal.
- Goal: Establish foundational elements and set up basic user roles and authentication.
- Tasks:
- Initialize the user-service.
- Implement roles: admin, supplier, customer, user(tester).
- Create authentication mechanisms and CRUD operations.
- Goal: Complete the user-service and initiate the Product-service.
- Tasks:
- Complete the remaining tables and functionalities for the user-service
- Initialize the product-service.
- Setup tables: SKU, SPU, brand, category, and their junction tables.
- Develop CRUD operations for these tables.
- Goal: Enhance product details and introduce suppliers.
- Tasks:
- Extend product-service with tables: attribute, attribute_group, junction tables, etc.
- Start supplier-service with basic supplier details.
- Goal: Link suppliers with products.
- Tasks:
- Setup supplier_product, supplier_brand tables.
- Implement logic to connect suppliers with products.
- Sprint Goal: Establish user roles and permissions and initiate cart functionalities.
- Tasks:
- Implement customer and user (tester) roles in user-service.
- Develop basic functionalities for cart-service, including saving items.
- Goal: Allow users to add products to their cart.
- Tasks:
- Develop cart-service.
- Features: Add to cart, view cart contents, and select items for checkout.
- Sprint Goal: Finalize cart functionalities and set the stage for order processing.
- Tasks:
- Implement feature to select items and submit to order.
- Start the order-service, focusing on order creation based on cart contents.
- Goal: Convert** seletced cart items** into orders and initiate payments.
- Tasks:
- Start order-service: Setup order creation from cart.
- Kickoff payment-service for payment initiations.
- Goal: Complete payment processes and introduce coupon mechanisms.
- Tasks:
- Finalize payment processing in payment-service.
- Start coupon-service: Define coupon structures.
- Goal: Complete coupon functionalities and conduct thorough testing.
- Tasks:
- Finalize coupon usage and restrictions.
- realize the coupon messages sending mechanisms.
- Test all services and integrations.
- Daily Stand-up: think about questions below before working
- What was done yesterday?
- What will be done today?
- Are there any blockers?
- Backlog Refinement: Regularly prioritize, update, and refine the product backlog.
- Sprint Review: At the end of each sprint, demonstrate the completed features to stakeholders.
- Sprint Retro
- Sprint Review: Self proofreading as this is a personal project. Get feedback.
- Sprint Retrospective:
- What went well?
- What can be improved?
- Actions for improvements.
4 Wrap-up return to outline
- Deployment: Move the thoroughly tested backend to a production environment.
- Documentation: Ensure that all services, functionalities, and endpoints are meticulously documented.
- Feedback Loop: Regularly gather feedback and iterate on the product.
By the end of these sprints, the quickmall
backend API should be ready for deployment. It's essential to note that Scrum is iterative and adaptive, so while this plan provides a roadmap, flexibility is crucial to accommodate changes and feedback.