Full Stack Development: Major Assignment
For the major assignment in the Full Stack Development course, students are required to demonstrate their proficiency in building a complete web application. You have two options to choose from for your project. Each option has specific requirements and deliverables, outlined below. Ensure your submission is well-documented, functional, and meets the specified criteria.
Option 1: Blog Application
Objective
Develop a fully functional Blog application that meets the requirements from the three prior assignments, with additional enhancements and a polished user interface.
Requirements
- Complete All Three Assignments:
- Ensure all code and functionality from Assignments 1, 2, and 3 are fully implemented.
- All associated tests must pass successfully (unit tests, integration tests, etc.).
- The application must be free of bugs and handle edge cases appropriately.
- User Interface (UI):
- The UI must closely resemble the example provided in class (e.g., layout, color scheme, typography, and responsiveness).
- Use modern CSS frameworks (e.g., Tailwind CSS, Bootstrap) or custom CSS to achieve a professional and visually appealing design.
- Ensure the application is responsive and works seamlessly on both desktop and mobile devices.
- New Functionalities:
- Add at least three of the following new features to the Blog application:
- Comment System: Allow users to comment on blog posts, with support for nested replies.
- Rich Text Editor: Integrate a rich text editor (e.g., Quill, TinyMCE) for creating and editing blog posts.
- Image Uploads: Allow users to upload images to their blog posts, stored in a cloud service (e.g., AWS S3, Cloudinary).
- Pagination or Infinite Scroll: Implement pagination or infinite scroll for blog post listings.
Deliverables
- Source code in a GitHub/GitLab repository (provide the link).
- All new functionality must be accompanied by E2E tests
- Your own CI pipeline executing the tests
- Deployed application URL.
- A short demo video (3-5 minutes) showcasing the application’s features and functionality.
Option 2: B2C Store Application
Objective
Design and develop a Business-to-Consumer (B2C) Store application as a continuation of the current assignment. The application will allow users to browse and purchase products, while administrators can manage products and view purchase records.
Requirements
- Continuation of Current Assignment:
- You can build upon the existing codebase from the current assignment, ensuring all existing functionality is preserved and fully operational.
- All tests from the current assignment must pass, and any existing bugs must be resolved.
- Integrate the new B2C store features seamlessly with the existing application structure.
- Core Functionality:
- Frontend:
- Display a list of products with details (e.g., name, description, price, image).
- Allow users to browse products, filter by categories (e.g., electronics, clothing), and search by product name.
- Enable users to add products to a cart and complete purchases (e.g., via a mock payment system).
- Backend:
- Implement a RESTful or tRPC API to manage products and purchases.
- Provide endpoints for administrators to add, delete, or modify products (e.g., name, price, description, category, stock quantity).
- Include endpoints to retrieve purchase history (e.g., user ID, product ID, date, total amount).
- Database:
- Store product details, user information, and purchase records in a relational (e.g., PostgreSQL, MySQL) or non-relational (e.g., MongoDB) database.
- Ensure proper schema design to handle relationships (e.g., users to purchases, products to categories).
- User Interface (UI):
- Design a clean, intuitive, and responsive UI for browsing products and managing the cart.
- Use a CSS framework (e.g., Tailwind CSS, Bootstrap) or custom styles for a professional look.
- Ensure accessibility (e.g., ARIA labels, keyboard navigation) and mobile responsiveness.
- Minimum Features:
- Include at least five distinct features, such as:
- User Authentication: Secure login/registration for users and admins (e.g., JWT, OAuth).
- Shopping Cart: Allow users to add/remove products and view the cart before checkout.
- Payment Integration: Integrate a mock or real payment gateway (e.g., Stripe, PayPal).
- Purchase History: Display a user’s past purchases with details (e.g., date, items, total).
- Product Filtering/Search: Enable filtering by category and searching by product name.
- Admin Dashboard: Provide a UI for admins to manage products and view purchase records.
- Technical Requirements:
- Frontend: Use a modern JavaScript framework (e.g., React, Vue.js, Angular).
- Backend: Use a server-side framework (e.g., Node.js, Django, Laravel).
- Database: Choose an appropriate database for the application.
- Deployment: Deploy the application to a public hosting platform (e.g., Heroku, Vercel, AWS).
- Version Control: Use Git, with a repository on GitHub or GitLab. Include a
README.md
with setup and deployment instructions.
Deliverables
- Source code in a GitHub/GitLab repository (provide the link).
- Deployed application URL.
- All new functionality must be accompanied by E2E tests
- Your own CI pipeline executing the tests
- API documentation.
- A short demo video (3-5 minutes) showcasing the application’s features and functionality, including how it extends the current assignment.
Grading Criteria
- Functionality (40%): Does the application work as intended? Are all required features implemented?
- Code Quality (20%): Is the code well-organized, modular, and documented? Are tests included and passing?
- UI/UX (20%): Is the interface polished, responsive, and user-friendly?
- Documentation (10%): Is the project report clear and comprehensive? Is the API documentation complete?
- Creativity and Effort (10%): Are the additional features innovative? Does the project demonstrate significant effort?
Resources
- Refer to class lectures, assignments, and provided examples for guidance.
- Use official documentation for your chosen frameworks and tools.
- Reach out to the instructor or teaching assistants during office hours for clarification or support.
Good luck, and happy coding!