FOSSEE Web-Hybrid Application | Internship Submission
A hybrid application featuring independent Web (React) and Desktop (PyQt5) frontends integrated with a Django REST API backend for visualization and analysis of chemical equipment operational data.
- Overview
- Screenshots
- Features
- Technology Stack
- Installation
- Project Structure
- API Endpoints
- Database Configuration
- Troubleshooting
- Author
- License
ChemLabWizard is a data analysis platform for chemical equipment parameter visualization and reporting. Users upload CSV files containing equipment operational data (flowrate, pressure, temperature) and receive:
- Real-time visualization via interactive charts (Bar & Pie)
- Statistical analysis with automated calculations
- Historical data management with per-user isolation (last 5 datasets)
- PDF reports with embedded visualizations
- Multi-platform access (Web and Desktop)
- Secure token-based authentication
| Platform | Screenshot |
|---|---|
| Web Application | ![]() |
| Web Login | ![]() |
| Desktop Application | ![]() |
| Desktop Login | ![]() |
- β CSV file upload with drag-and-drop (Web)
- β Bar and Pie chart visualizations
- β Statistical analysis (count, average flowrate, average pressure, type distribution)
- β User registration and token-based authentication
- β Per-user data isolation
- β Upload history (last 5 datasets per user with auto-delete)
- β PDF report generation with embedded charts
- β Cross-platform (Web React + Desktop PyQt5)
- β
Sample data included (
sample_equipment_data.csv)
| Technology | Version | Description | Official Link |
|---|---|---|---|
| 19.2.0 | UI framework for web application | React Docs β | |
| 7.2.4 | Fast build tool and dev server | Vite Docs β | |
| 4.5.1 | Data visualization library | Chart.js Docs β | |
| 4.1.18 | Utility-first CSS framework | Tailwind Docs β | |
| 1.13.2 | Promise-based HTTP client | Axios Docs β | |
| 5.15.11 | Cross-platform GUI framework (Desktop) | PyQt5 Docs β |
| Technology | Version | Description | Official Link |
|---|---|---|---|
| 6.0.1 | High-level Python web framework | Django Docs β | |
| 3.16.1 | Powerful REST API toolkit | DRF Docs β | |
| 3.0.0 | Data manipulation and analysis | Pandas Docs β | |
| 2.4.1 | Numerical computing library | NumPy Docs β | |
| 3.10.8 | Plotting and visualization | Matplotlib Docs β | |
| 4.4.9 | PDF generation toolkit | ReportLab Docs β | |
| 4.9.0 | Cross-Origin Resource Sharing | CORS Docs β |
| Technology | Version | Description | Official Link |
|---|---|---|---|
| 3.0+ | Embedded SQL database (default) | SQLite Docs β | |
| 12+ | Advanced relational database (optional) | PostgreSQL Docs β | |
| 3.10+ | Core programming language | Python Docs β | |
| 2.32.3 | HTTP library for Python | Requests Docs β | |
| 12.1.0 | Python Imaging Library | Pillow Docs β |
- Python 3.10 or higher
- Node.js 18+ and npm/pnpm (for web frontend)
- Git (for cloning repository)
# Install Python 3.10+ from https://www.python.org/downloads/
# Install Node.js 18+ from https://nodejs.org/
# Verify installations
python --version
node --version
npm --versiongit clone https://github.com/smitpatil06/FOSSEE-Hybrid_Web_Application.git
cd FOSSEE-Hybrid_Web_Applicationcd chemical_project
# Create and activate virtual environment
python -m venv venv
.\venv\Scripts\Activate.ps1
# Install dependencies
pip install django==6.0.1 djangorestframework==3.16.1 django-cors-headers==4.9.0 pandas==3.0.0 matplotlib==3.10.8 reportlab==4.4.9 pillow==12.1.0 requests==2.32.3
# Setup database (SQLite by default)
$env:USE_SQLITE = 'True'
# Run migrations
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
# Start backend server
python manage.py runserverBackend runs at: http://localhost:8000
Open a new PowerShell terminal
cd frontend-web
# Install dependencies (using npm or pnpm)
npm install
# OR
pnpm install
# Start development server
npm run dev
# OR
pnpm run devWeb app runs at: http://localhost:5173
Open a new PowerShell terminal
cd frontend-desktop
# Activate backend virtual environment
..\chemical_project\venv\Scripts\Activate.ps1
# Install dependencies
pip install PyQt5==5.15.11 matplotlib==3.10.8 requests==2.32.3
# Run desktop application
python desktop_app.py# Update package list
sudo apt update
# Install Python 3.10+
sudo apt install python3 python3-pip python3-venv
# Install Node.js 18+ (via NodeSource)
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
sudo apt install -y nodejs
# Install Git
sudo apt install git
# Verify installations
python3 --version
node --version
npm --versiongit clone https://github.com/smitpatil06/FOSSEE-Hybrid_Web_Application.git
cd FOSSEE-Hybrid_Web_Applicationcd chemical_project
# Create and activate virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install django==6.0.1 djangorestframework==3.16.1 django-cors-headers==4.9.0 pandas==3.0.0 matplotlib==3.10.8 reportlab==4.4.9 pillow==12.1.0 requests==2.32.3
# Setup database (SQLite by default)
export USE_SQLITE=True
# Run migrations
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
# Start backend server
python manage.py runserverBackend runs at: http://localhost:8000
Open a new terminal
cd frontend-web
# Install dependencies (using npm or pnpm)
npm install
# OR
pnpm install
# Start development server
npm run dev
# OR
pnpm run devWeb app runs at: http://localhost:5173
Open a new terminal
cd frontend-desktop
# Activate backend virtual environment
source ../chemical_project/venv/bin/activate
# Install dependencies
pip install PyQt5==5.15.11 matplotlib==3.10.8 requests==2.32.3
# Run desktop application
python desktop_app.pyIf you prefer PostgreSQL over SQLite:
Ubuntu/Linux:
# Install PostgreSQL
sudo apt-get install postgresql postgresql-contrib
# Install Python adapter
pip install psycopg2-binary
# Run setup script
cd chemical_project
chmod +x setup_postgres.sh
./setup_postgres.sh
# Configure and migrate
export USE_POSTGRESQL=True
python manage.py migrateWindows:
# Download and install PostgreSQL from https://www.postgresql.org/download/windows/
# Install Python adapter
pip install psycopg2-binary
# Configure and migrate
$env:USE_POSTGRESQL = 'True'
python manage.py migrateChemLabWizard/
βββ chemical_project/ # Django REST Backend
β βββ api/
β β βββ models.py # Database models (UploadBatch, EquipmentData)
β β βββ serializers.py # DRF serializers
β β βββ views.py # REST API views (upload, stats, PDF)
β β βββ auth_views.py # Authentication endpoints
β β βββ urls.py # API routing
β βββ chemical_project/
β β βββ settings.py # Django configuration
β β βββ urls.py # Main URL routing
β βββ manage.py
β βββ db.sqlite3 # SQLite database
β
βββ frontend-web/ # React Web Client
β βββ src/
β β βββ pages/
β β β βββ Login.jsx # Authentication page
β β β βββ Upload.jsx # Data upload & visualization
β β βββ components/
β β β βββ Charts.jsx # Bar & Pie charts
β β β βββ History.jsx # Upload history
β β βββ api.js # Axios HTTP client
β β βββ App.jsx # Main component
β βββ package.json
β βββ vite.config.js
β
βββ frontend-desktop/ # PyQt5 Desktop Client
β βββ desktop_app.py # Entry point
β βββ core/
β β βββ api_client.py # HTTP client
β βββ ui/
β βββ views/
β β βββ login_window.py
β β βββ upload_window.py
β βββ components/
β βββ history_widget.py
β
βββ sample_equipment_data.csv # Test dataset
POST /api/auth/register/- Register new userPOST /api/auth/login/- Login and receive tokenPOST /api/auth/logout/- LogoutGET /api/auth/profile/- Get user profile
POST /api/upload/- Upload CSV fileGET /api/history/- Get user's upload historyGET /api/summary/<batch_id>/- Get statistics for a datasetGET /api/report/<batch_id>/- Download PDF report
Zero configuration required. Database file created at chemical_project/db.sqlite3.
export USE_SQLITE=True
python manage.py migrateFor production or multi-user scenarios:
# Install PostgreSQL
sudo apt-get install postgresql postgresql-contrib # Linux
# Install Python adapter
pip install psycopg2-binary
# Run setup script
cd chemical_project
chmod +x setup_postgres.sh
./setup_postgres.sh
# Configure and migrate
export USE_POSTGRESQL=True
python manage.py migrateModule not found errors:
pip install django djangorestframework django-cors-headers pandas matplotlib reportlab pillowDatabase errors:
export USE_SQLITE=True
python manage.py migrateCORS errors:
- Ensure backend runs at
http://localhost:8000 - Verify CORS settings in
chemical_project/chemical_project/settings.py
Desktop app not starting:
pip install PyQt5 matplotlib requestsPort already in use:
# Backend (port 8000)
python manage.py runserver 8001
# Web frontend (port 5173)
npm run dev -- --port 5174Smit Patil
- π GitHub: @smitpatil06
- πΌ LinkedIn: 04-smit-patil
- π¦ Twitter/X: @smit_patil06
Submitted as part of FOSSEE internship application.
Built for FOSSEE (Free/Libre and Open Source Software for Education)



