Project Description: A comprehensive full-stack platform that delivers personalized product recommendations by combining machine learning, uncertainty modeling, and user behavior analysis. This system enhances user experience through dynamic, intelligent suggestions based on real-world data.
Tech Stack:
Python,Django,PostgreSQL,React,scikit-learn,Docker
π Preview Version: project.dawidolko.pl
β οΈ Note: This is a static preview version hosted on GitHub Pages. Only the homepage and basic navigation work. Features requiring database connectivity (like shopping cart, user accounts, recommendations) are not functional in this demo version.
π‘ For Full Experience: Follow the installation guide below to run the complete application with all features enabled.
The easiest way to run the project is using Docker. This ensures consistent environment across all platforms.
- Docker Desktop installed on your system
- Hardware virtualization enabled (Intel VT-x or AMD-V)
-
Clone the repository:
git clone https://github.com/dawidolko/SmartRecommender-Project-Django-React cd SmartRecommender-Project-Django-React -
Create environment file:
# Create .env file in the root directory DB_NAME=product_recommendation DB_USER=postgres DB_PASSWORD=admin DB_HOST=db DB_PORT=5432 SECRET_KEY=django-insecure-default-key DEBUG=True ALLOWED_HOSTS=localhost,127.0.0.1 -
Build and run with Docker:
docker compose -f .tools/docker/docker-compose.yml up --build
-
Access the application:
- Frontend (React) β http://localhost:3000
- Backend (Django) β http://localhost:8000
- Database (PostgreSQL) β port
5432
# Run in background
docker compose -f .tools/docker/docker-compose.yml up -d --build
# Stop containers
docker compose -f .tools/docker/docker-compose.yml down
# View logs
docker compose -f .tools/docker/docker-compose.yml logs -f
# Enter backend container
docker exec -it SmartRecommender-Django bash
# Enter database
docker exec -it SmartRecommender-PostgreSQL psql -U postgres -d product_recommendationWe provide ready-to-use startup scripts for both Windows and Linux:
# Start backend
cd backend
start.bat
# Start frontend (in a new terminal)
cd frontend
start.bat# Start backend
cd backend
chmod +x start.sh
./start.sh
# Start frontend (in a new terminal)
cd frontend
chmod +x start.sh
./start.sh- Create and activate a virtual environment:
cd backend
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install backend dependencies:
pip install -r requirements.txt-
Configure your PostgreSQL database in
.env(see.env.examplefor template) -
Apply database migrations and seed data:
python manage.py migrate
python manage.py seed- Start the backend server:
python manage.py runserverBackend will be available at http://127.0.0.1:8000/.
- Navigate to the frontend directory:
cd frontend- Install frontend dependencies:
npm install- Start the frontend server:
npm startFrontend will be available at http://localhost:3000/.
-
Advanced Product Recommendations:
- Collaborative Filtering (User-Based & Item-Based)
- Content-Based Filtering
- Association Rules (Frequently Bought Together)
- Fuzzy Search Logic
- Sentiment Analysis
- Probabilistic Methods
-
Comprehensive Admin Dashboard:
- Sales forecasting
- Demand prediction
- Customer churn risk assessment
- Purchase pattern analysis
-
User Experience:
- Personalized product recommendations
- Smart search with typo tolerance
- Sentiment-based product discovery
SmartRecommender-Project-Django-React/
βββ .database/ # Database resources
β βββ entity-relationship-diagram/ # ERD diagrams
β βββ backup.sql # Database backup
β βββ clearAll.sql # Reset script
β βββ README.md # Database documentation
β βββ RELATIONSHIPS_IN_BASE.md # Relationship documentation
β βββ tree_database.png # Visual DB structure
β
βββ .docs/ # Documentation files
β
βββ .github/ # GitHub configuration
β
βββ .methods/ # Algorithm documentation
β βββ association_rules.md # Association rules implementation
β βββ collaborative_filtering.md # CF algorithm details
β βββ content_based_filtering.md # CBF algorithm details
β βββ fuzzy_search.md # Fuzzy search implementation
β βββ probabilistic_methods.md # Probabilistic methods
β βββ sentiment_analysis.md # Sentiment analysis details
β
βββ .tools/ # Development tools
β βββ docker/ # Docker configuration
β βββ docker-compose.yml # Docker Compose setup
β βββ Dockerfile.backend # Backend container
β βββ Dockerfile.frontend # Frontend container
β
βββ backend/ # Django backend
β βββ core/ # Core application
β βββ home/ # Main application
β βββ media/ # User uploaded files
β βββ static/ # Static files
β βββ venv/ # Python virtual environment
β βββ .env # Environment variables
β βββ .env.example # Environment template
β βββ check_media.py # Media verification
β βββ manage.py # Django management
β βββ package.json # Node.js dependencies
β βββ requirements.txt # Python dependencies
β βββ start.bat # Windows startup script
β βββ start.sh # Linux startup script
β
βββ frontend/ # React frontend
β βββ node_modules/ # Node.js packages
β βββ public/ # Public assets
β βββ src/ # Source code
β βββ .env # Environment variables
β βββ .env.example # Environment template
β βββ .htaccess # Apache configuration
β βββ package-lock.json # Dependency lock
β βββ package.json # Node.js dependencies
β βββ README.md # Frontend documentation
β βββ start.bat # Windows startup script
β βββ start.sh # Linux startup script
β
βββ images/ # Project images
β βββ team1.jpg # Dawid Olko
β βββ team2.jpg # Piotr SmoΕa
β βββ team3.png # Dr. Grochowalski
β
βββ .gitignore # Git ignored files
βββ CNAME # Custom domain
βββ CNAME.md # Domain documentation
βββ CONTRIBUTING.md # Contribution guidelines
βββ LICENSE # License information
βββ README.md # Main documentation
Our platform implements six distinct recommendation approaches:
- Collaborative Filtering: Recommends products based on what similar users have purchased
- Content-Based Filtering: Recommends products with similar attributes to those a user has liked
- Association Rules: Identifies products frequently bought together using Apriori algorithm
- Fuzzy Search: Intelligent search with typo tolerance and partial matching
- Sentiment Analysis: Analyzes customer reviews to recommend positively reviewed products
- Probabilistic Methods: Predicts user purchase probabilities and product demand
Detailed documentation for each algorithm can be found in the .methods/ directory.
The system uses PostgreSQL with a comprehensive schema of 24 interconnected tables, including:
- Core entities (Users, Products, Categories, Tags)
- E-Commerce functionality (Orders, Cart, Complaints)
- Recommendation tables (Similarities, Interactions, Associations)
- Analytics tables (Sentiment, Purchase Patterns, Risk Assessment)
See .database/ directory for complete database documentation and entity relationship diagrams.
![]() Dawid Olko Creator |
![]() Dr. Piotr Grochowalski Supervisor |
![]() Piotr SmoΕa Creator |
This project was developed as part of an engineering thesis at TBD University.
This project is licensed under the Apache License 2.0.


