A full-stack marketing analytics dashboard using real campaign data with machine learning insights including K-Means clustering, classification models, and association rule mining.
- Python 3.8+
- Flask (REST API)
- Pandas (Data processing)
- Scikit-learn (ML models)
- MLxtend (Association rules)
- React 18
- Recharts (Data visualization)
- Tailwind CSS (Styling)
- Axios (HTTP client)
- Lucide React (Icons)
analytics-dashboard/
βββ backend/
β βββ app.py
β βββ requirements.txt
β βββ data/
β β βββ DWDM_dataset_cleaned_full_columns.csv
β βββ models/
β β βββ __init__.py
β β βββ clustering.py
β β βββ classification.py
β β βββ association.py
β βββ utils/
β βββ __init__.py
β βββ data_processor.py
β
βββ frontend/
βββ package.json
βββ public/
β βββ index.html
βββ src/
βββ index.js
βββ App.js
βββ index.css
βββ components/
β βββ Sidebar.js
β βββ KPICard.js
β βββ MetricItem.js
βββ pages/
βββ OverviewPage.js
βββ PerformancePage.js
βββ AnalyticsPage.js
βββ ROIPage.js
βββ StrategyPage.js
- Python 3.8 or higher
- Node.js 16 or higher
- npm or yarn
- Navigate to backend directory:
cd backend- Create virtual environment:
python -m venv venv
# Windows
venv\Scripts\activate
# Mac/Linux
source venv/bin/activate- Install Python dependencies:
pip install -r requirements.txt-
Add your CSV data:
- Place
DWDM_dataset_cleaned_full_columns.csvin thebackend/data/folder - OR convert your PDF to CSV and place it there
- Place
-
Run the Flask server:
python app.pyThe backend will start on http://localhost:5000
- Navigate to frontend directory:
cd frontend- Install npm dependencies:
npm install- Start the React development server:
npm startThe frontend will start on http://localhost:3000
- Total customers, ad spend, conversion rate, CTR metrics
- Campaign performance by channel (Bar chart)
- Platform distribution (Pie chart)
- Key metrics summary
- K-Means Clustering: Customer segmentation by income and ad spend
- Cluster summary with engagement levels
- CTR vs Conversion rate trends
- Top performing platforms
- Random Forest Classifier for conversion prediction
- Confusion matrix visualization
- Feature importance analysis
- Channel-wise prediction accuracy
- ROI trend over time
- ROI by campaign type
- Platform effectiveness comparison
- Ad spend vs conversion analysis
- Apriori Algorithm: Association rule mining
- Marketing insights and recommendations
- Frequent itemsets (platform + tool combinations)
- Data-driven action items
| Endpoint | Method | Description |
|---|---|---|
/api/overview |
GET | Dashboard KPIs and charts |
/api/performance |
GET | Clustering and performance metrics |
/api/analytics |
GET | Classification model results |
/api/roi |
GET | ROI analysis data |
/api/strategy |
GET | Association rules and insights |
-
K-Means Clustering
- Features: Income, AdSpend, WebsiteVisits, PagesPerVisit, TimeOnSite, etc.
- 3 Clusters: Low, Medium, High engagement
-
Random Forest Classification
- Predicts conversion (0/1)
- Features: Age, Income, AdSpend, CTR, Loyalty Points, etc.
- Metrics: Accuracy, Precision, Recall, F1-Score
-
Apriori Association Rules
- Discovers patterns in Platform + Tool + Campaign combinations
- Metrics: Support, Confidence, Lift
In frontend/src/App.js, update the API base URL:
const API_BASE = 'http://your-backend-url:5000/api';- Tailwind CSS is used via CDN in
public/index.html - Custom styles in
src/index.css - Component-level styles using Tailwind utility classes
Ensure Flask-CORS is installed and configured in backend/app.py:
from flask_cors import CORS
CORS(app)Backend:
# Change port in app.py
app.run(debug=True, port=5001)Frontend:
# Set PORT environment variable
PORT=3001 npm start- Verify CSV file path in
backend/app.py - Check CSV file format matches expected columns
- Ensure no missing required columns
Required columns:
- CustomerID, Age, Gender, Income
- CampaignChannel, CampaignType, AdSpend
- ClickThroughRate, ConversionRate
- WebsiteVisits, PagesPerVisit, TimeOnSite
- SocialShares, EmailOpens, EmailClicks
- PreviousPurchases, LoyaltyPoints
- AdvertisingPlatform, AdvertisingTool
- Conversion (0 or 1)
# Add Procfile
web: python app.py
# Deploy to Heroku
heroku create your-app-name
git push heroku main# Build production bundle
npm run build
# Deploy to Vercel
vercel --prodMIT License - Feel free to use this project for your own purposes.
Created with β€οΈ using real marketing campaign data
- Dataset: DWDM Marketing Campaign Data
- Libraries: React, Flask, Scikit-learn, Recharts
- Icons: Lucide React