-
Indexes
SQL indexing has been applied to relevant attributes (e.g., make, price, year) to optimize search performance and query execution times. -
Trending Cars Page
Displays trending vehicles based on a combination of date added and the number of likes. Helps users discover popular cars among the community. -
Admin Features
- Admin vs. Regular User Authorization
Admin accounts have elevated privileges such as managing car data, while regular users have limited functionality. - Bulk Car Deletion
Admins can delete multiple cars at once from the database. - Transaction-Based Deletes
Deleting cars or related records is done within safe SQL transactions to ensure atomicity.
- Admin vs. Regular User Authorization
-
Auto-Generated Production Dataset
Production-ready car data is auto-loaded and cleaned using Python scripts and integrated into MySQL on Docker container startup. -
Likes and Default Folder
When a user likes a car, it is automatically saved into a special default “Liked” folder, improving UX. -
Advanced Analytics / Stats by Folder
Aggregated and in-depth statistics (e.g., average price, horsepower, etc.) are computed and displayed for each user folder. -
Recommender System via SQL Views A "For You" recommendation page suggests cars based on:
- Same Make as previously liked cars
- Similar Price Range to past likes
- Same or Similar Year
- Overall Best Match, prioritizing cars that meet multiple criteria
Users can filter recommendations by: All, Make, Price, or Year.
The system is powered by MySQL Views that compute relevance based on user folder data.
-
Car Reviews & Comments
Users can leave reviews and comments on individual cars, and update them at any time. Enables community-driven discussion and sharing of feedback.
1. User Authentication
Users can sign in to personalize their experience. Once logged in, they can save specific cars to folders for easy access later.
To test the login functionality, please use one of the emails and passwords provided in the Sample Dataset.
2. Search & Filter
While browsing cars, users can easily navigate cars by searching by the make and model or by filtering results by: Price, Year, Engine size, Horsepower, Torque, and Acceleration.
3. Folders
This feature requires the user to be logged in. After logging in, navigate to the Car Explore page, click on a specific car, and add it to your Liked folder or any custom folder you’ve created.
4. Full Production Dataset
To update the entire production dataset in the database (this has already been done for our project):
-
Download the Sports Car CSV file from Kaggle: https://www.kaggle.com/datasets/rkiattisak/sports-car-prices-dataset/data
-
Upload the Sports Car CSV file from Kaggle to the
mysql-initfolder in the project root directory.
Rename the file tofullsports.csv. -
To perform a one-time data clean, we use Pandas and python to normalize the data and put the cleaned CSV into the project root folder by running the following commands:
pip install -r requirements.txt cd mysql-init python ./clean_data.py -
Finally, the docker-compose.yml file loads the data into the MySQL database by running loaddata.js upon a new Docker container. The loaddata.js file connects to our MySQL database then runs the INSERT INTO Cars command for every row of the dataset.
Our application aims to provide users with an intuitive platform to discover and explore luxury cars for purchase or general interest. The primary users of the application are individuals interested in purchasing, browsing, or learning more about luxury cars. Developers will serve as administrators of the database system.
The core data for our application is derived from a sports car dataset on Kaggle (link: https://www.kaggle.com/datasets/rkiattisak/sports-car-prices-dataset/data). This dataset includes vital information about cars such as:
- Make: The brand or company that produced the car.
- Model: The specific version or variant of the car.
- Year: The year of production.
- Engine Size (in L): The displacement of the engine.
- Horsepower: Engine power output.
- Torque (lb-ft): Rotational force produced by the engine.
- Acceleration (0-60 MPH time in seconds): How quickly the car reaches 60 MPH.
- Price (in USD): The cost of the car.
- Search: Users can search for cars by make or model.
The application is planned to support a range of functionalities:
- Personalization: Users can save liked cars, create custom folders, and save cars into these folders.
- User Accounts: Account creation, sign-in, and the ability to leave reviews/comments on cars.
- Recommender System: Potential recommendation features based on user likes and preferences.
- Authorization: Exploration of different access roles and privileges for regular users and administrators.
Our project is built using the following technologies:
- Database: MySQL, hosted with Docker.
- Frontend: React + Next.js web application.
- Backend: Node.js.
Follow these steps to get the project up and running on your local machine:
1. Clone the Repository:
git clone https://github.com/Laav7575/CS348Project.git
cd CS348Project
2. Install Frontend Dependencies
npm install
3. Add the .env.local file into the root of your project
The file contains the credentials required to login to the MySQL database.
3. Prepare Database (Initial Setup / Reset)
Download Docker, open Docker, login and run:
docker-compose down -v
docker-compose up -d mysql
4. Start Frontend
npm run dev
5. Access the Application
Main Page: http://localhost:3000
Search Cars Page: http://localhost:3000/explore