AniCricKet / gear-gurus2.0

Apache License 2.0
0 stars 0 forks source link

Ideation and Design Team Live Review #1

Open AniCricKet opened 10 months ago

AniCricKet commented 10 months ago

Overview

For this mini-project, our team has decided to build a project focused on cars, specifically the electric cars offered by known brands such as BMW, Chevrolet, Tesla, and Lucid as we move into a more alternative fuel source for our automobiles.

Build a virtual car website where users can explore different types of cars, view details, and “customize” their virtual cars. The application will have both frontend and backend components.

Backend

  1. Deployment of Backend and rebuilding whenever changes are made to spring
  2. Image Database: Using an image database in order to display images as APIs don't include information about each car's look Reference
  3. Car Classes: Implement classes for different types of cars with inheritance. For instance, you can have classes for sedans, SUVs, sports cars, etc., each inheriting from a common Car class.
  4. Database: Use a simple database to store information about available cars, their specifications, and customization options.
  5. Sorting Algorithm: Implement a sorting algorithm to sort cars based on various criteria, such as type, brand, or price.

Frontend

  1. Car Display: Create an attractive frontend where users can see the available cars, their images, and specifications.
  2. Maximize use of Layouts and Includes in order to provide blogs and use of timebox image
  3. Building the Tables for Each Company: Being able to display different information about each vehicle image

Integration

  1. API Endpoints: Develop API endpoints on the backend to handle fetching the list of available cars, details of a specific car, and customization options.
  2. Communication: Use AJAX or Fetch API to communicate between the frontend and backend, ensuring real-time updates when users customize their virtual cars.
  3. Random Car Generator: Implement a feature that generates random cars with varying specifications, making the showroom dynamic and interesting.

Vehicles

BMW: i4, i5, i7, and iX Chevrolet: Bolt EV, Bolt EUV, Blazer EV, Equinox EV, Silverado EV Tesla: Cybertruck, , Model S, Model 3, Model X, Model Y, and Roadster Lucid: Air, Air Sapphire, and Gravity

Frontend Wireframe This will be updated throughout the duration of the project to assist our frontend developer complete the task accurately

rohinsood commented 10 months ago

Things Done Well:

Areas for Improvement:

Score: 0.93/1

jm1021 commented 10 months ago

There needs to be more focus on sorting and abstraction in the project

AniCricKet commented 10 months ago

Sorting and Abstraction Revisions (Input from Mort and ChatGPT):

Backend:

  1. Car Classes:

    • Enhance the abstraction by introducing an abstract class or interface for Car and then derive specific car types (sedans, SUVs, sports cars) from it. This can promote code reusability and maintainability.
  2. Sorting Algorithm:

    • Implement a flexible sorting service that allows dynamic sorting based on user preferences. Allow users to choose and combine sorting criteria such as brand, type, and price.
    public interface CarSortService {
       List<Car> sortCars(List<Car> cars, SortCriteria criteria);
    }
    • Create an enum for SortCriteria to represent various sorting options.

Frontend:

  1. Tables for Each Company:

    • Abstract the rendering of car details by creating a reusable component that takes a Car object as input. This way, you can easily extend it for different car types.
    // CarDetailsComponent.jsx
    const CarDetailsComponent = ({ car }) => {
       // Render car details based on the car object
    }

Integration:

  1. Communication:

    • Abstract the communication with the backend by creating a service or utility for handling API requests. This can encapsulate the details of API calls and responses.
    // ApiClient.js
    class ApiClient {
       static async fetchCars() {
           // Handle the API call to retrieve cars
       }
    
       // Other API methods...
    }

Additional Considerations:

These modifications should enhance the focus on sorting and abstraction in your project, making the codebase more modular and adaptable to changes.

Krishiv111 commented 10 months ago

Success Points

Feedback