Major Assignment
by Tomas Trescak· CI/CD and DevOps

0 / 1330 XP
The external project has not been reviewed yet
Please follow instructions below to submit your project

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

  1. 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.
  2. 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.
  3. 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

  1. 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.
  2. 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).
  3. 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.
  4. 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.
  5. 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!

Discuss with Others
Ask questions, share your thoughts, and discuss with other learners

Join the discussion to ask questions, share your thoughts, and discuss with other learners
Setup
React Fundamentals
10 points
Next.js
10 points
Advanced React
Databases
10 points
React Hooks
Authentication and Authorisation
10 points
APIs
CI/CD and DevOps
Testing React
Advanced Topics