19 March 2024
Assignment Overview
Title: Shopping Cart System
Objective:
Design and implement a Shopping Cart System using C#, showcasing advanced C#
skills, understanding of web technologies, database interactions, and design patterns.
Core Requirements:
1. Data Model Design:
• Design a data model for products, shopping carts, users, and orders.
• Include relevant properties (e.g., ProductID, Name, Price, CartID, Quantity,
UserID).
2. Database Interaction:
• Implement data access using Entity Framework Core.
• Provide functionality to manage products and shopping cart items (add,
update, remove, etc.).
3. Business Logic:
• Implement business rules for adding items to the cart, updating quantities,
calculating totals, etc.
• Use design patterns such as Repository Pattern for data access and
Singleton for the cart instance (if session-based).
4. RESTful API Development:
• Develop a RESTful API to handle shopping cart operations like adding
items, removing items, viewing the cart, and checking out.
• Include endpoints for product management (add, update, delete, list).
5. User Authentication and Authorization:
• Implement user authentication and secure the API.
• Use JWT tokens or similar mechanisms for securing endpoints.
6. Unit and Integration Testing:
• Write unit and integration tests using a framework like NUnit or xUnit.
7. Error Handling and Validation:
• Implement error handling and input validation to ensure data integrity.
8. Front-end Integration (Optional):
• Create a basic front-end application using angular to interact with the API.
• Demonstrate CRUD operations on products and shopping cart items
through the UI.
9. Documentation:
19 March 2024
• Provide clear documentation for API endpoints and setup instructions.
10. Bonus Features (Optional):
• Implement a payment gateway simulation for the checkout process.
• Provide real-time updates in the cart using SignalR.
Evaluation Criteria:
• Code Quality: Clean, readable, and maintainable code adhering to best practices.
• Architecture: Effective use of design patterns and architecture (e.g., MVC, Clean
Architecture).
• Functionality: The system should work as expected without bugs.
• Testing: Thoroughness of tests and coverage.
• Security: Proper implementation of authentication, authorization, and data
validation.
• Documentation: Clarity and completeness of documentation.
Submission Guidelines:
• The project should be submitted as a GitHub repository link containing all source
code, database scripts, and documentation.
• The README file should include setup and running instructions, along with any
necessary configuration steps.