Shoozy uses a content-based filtering that recommends shoes to users based on product similarity and customer preferences. It uses a content-based filtering approach and leverages machine learning and natural language processing to provide tailored recommendations.
Built with a React frontend, Flask backend, and deployed using Docker on Render.com, Shoozy delivers a clean, responsive, and smart user experience.
π Visit Shoozy
- ποΈ Personalized shoe recommendations
- π Filter by brand, gender, and price range
- π Sort by popularity or ratings
- π§ Content-based filtering using product metadata and review text
- π¨ Responsive UI built with React
- π³ Containerized with Docker
- βοΈ Deployed on Render.com
Layer | Technology |
---|---|
Frontend | React.js |
Backend | Flask (Python) |
ML/NLP | TfidfVectorizer, Cosine Similarity, Scikit-learn |
Deployment | Render.com |
Data format | CSV Dataset with 1000+ products |
Footwear/
βββ app/
β βββ app.py # Flask app with API endpoints
β βββ requirements.txt
β βββ Dockerfile # Backend docker
β βββ render.yaml
β βββ data
β β βββ shoe_dataset.csv # original dataset
β β βββ cleaned_shoe_dataset.csv # cleaned dataset
βββ ui/
β βββ src/
β β βββ App.js # Main React component
β β βββ index.js # React entry point
β β βββ Dockerfile # Frontend docker
β β βββ components/
β β βββ ProductCard.js
β β βββ FilterPanel.js
βββ model/
β βββ similarity.pkl # Precomputed similarity matrix
β βββ vectorizer.pkl # TF-IDF vectorizer
βββ notebooks/
β βββ data_preprocessing.ipynb
β βββ Feature_engineering.ipynb
β βββ shoe_image_urls_adding.ipynb
βββ model_build.py # Model training + vectorization
βββ docker-compose.yml
βββ .env
- Dataset: Contains 1000+ shoe products with metadata like brand, type, gender, price, and reviews.
- Preprocessing: Text reviews and titles are vectorized using
TfidfVectorizer
. - Similarity Matrix: Cosine similarity is calculated between all products.
- User Selection: When a product is selected, the top N similar products are recommended.
- API: Flask serves recommendations via REST endpoints.
- Frontend: React fetches and displays results with filtering and sorting options.
git clone https://github.com/fasinfasi/FootWear-recommender.git
cd shoozy
docker build -t shoozy .
docker run -p 5000:5000 shoozy
By default, Flask runs on http://localhost:5000
cd ui
npm install
npm start
React will run on http://localhost:3000
and fetch data from Flask
Follow these steps to deploy both backend (Flask) and frontend (React) using Docker on Render.com.
- A Render account (sign up if you don't have one)
- Your project pushed to a public or private GitHub repository
- A working
Dockerfile
in the appropriate directories
Assuming your backend is located inside the app/
folder and served via app.py
.
-
Go to Render Dashboard
-
Click "New Web Service"
-
Connect your GitHub repository
-
Fill in the following details:
Name: shoozy-backend Environment: Docker Region: (Choose closest to you) Branch: main (or your working branch) Root Directory: . Docker Command: (Leave it empty if using a valid Dockerfile)
-
Click "Create Web Service"
Once deployed, Render will give you a URL like: https://shoozy-backend.onrender.com
Assuming your frontend is located inside the ui/
folder.
-
Create another "New Web Service" on Render
-
Connect the same GitHub repository
-
Set the following details:
Name: shoozy-frontend Environment: Docker Branch: main (or your working branch) Root Directory: ui Dockerfile Path: ui/Dockerfile
Make sure your React app calls the correct backend API URL. Update it like this:
// Example: ui/src/App.js
const API_BASE_URL = "https://shoozy-backend.onrender.com";
- Rows: 1000+
- Columns: Product ID, Brand, Type, Gender, Size, Number Sold, Price, Review Title, Review Text, Review Rating
- Used for training the recommender and powering the filtering system.
This project is licensed under the MIT License - see the License file for details.
π₯°π Thanks bro, spending your valuable time to read my ReadMe....π Remember my name Fasin ππ»ββοΈ