A hybrid Web + Desktop application for uploading, analyzing, and visualizing chemical equipment data from CSV files.
- CSV Upload: Upload equipment data via Web or Desktop interface
- Data Analysis: Automatic calculation of averages and distributions using Pandas
- Visualizations: Interactive charts with Chart.js (Web) and Matplotlib (Desktop)
- PDF Reports: Generate downloadable PDF reports with ReportLab
- History Management: Stores last 5 uploaded datasets
- Authentication: Token-based user authentication
- Responsive UI: Modern dark-themed interfaces on both platforms
chemical-equipment-visualizer/
βββ backend/ # Django REST API
β βββ equipment_visualizer/ # Django project settings
β βββ equipment_api/ # Main API app
β βββ manage.py
β βββ requirements.txt
βββ frontend-web/ # React.js application
β βββ src/
β β βββ components/ # React components
β β βββ App.jsx
β β βββ api.js
β β βββ index.css
β βββ package.json
β βββ vite.config.js
βββ frontend-desktop/ # PyQt5 application
β βββ main.py # Desktop app entry point
β βββ api_client.py # API client
β βββ requirements.txt
βββ sample_equipment_data.csv # Sample test data
βββ README.md
| Layer | Technology | Purpose |
|---|---|---|
| Backend | Django + DRF | REST API |
| Web Frontend | React + Chart.js | Web visualization |
| Desktop Frontend | PyQt5 + Matplotlib | Desktop visualization |
| Data Processing | Pandas | CSV parsing & analytics |
| PDF Generation | ReportLab | PDF reports |
| Database | SQLite | Data storage |
- Python 3.9+
- Node.js 18+
- pip (Python package manager)
- npm (Node package manager)
git clone https://github.com/yourusername/chemical-equipment-visualizer.git
cd chemical-equipment-visualizer# Navigate to backend directory
cd backend
# Create virtual environment
python -m venv venv
# Activate virtual environment
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run migrations
python manage.py migrate
# Create superuser (optional)
python manage.py createsuperuser
# Start server
python manage.py runserverThe API will be available at http://localhost:8000/api/
# Open new terminal, navigate to frontend-web
cd frontend-web
# Install dependencies
npm install
# Start development server
npm run devThe web app will be available at http://localhost:5173/
# Open new terminal, navigate to frontend-desktop
cd frontend-desktop
# Create virtual environment (optional but recommended)
python -m venv venv
venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
# Run the desktop application
python main.pyA sample CSV file (sample_equipment_data.csv) is provided with the following format:
| Equipment Name | Type | Flowrate | Pressure | Temperature |
|---|---|---|---|---|
| Reactor R-101 | Reactor | 150.5 | 25.0 | 180.0 |
| Heat Exchanger HX-201 | Heat Exchanger | 320.0 | 15.5 | 95.0 |
| ... | ... | ... | ... | ... |
| Endpoint | Method | Description |
|---|---|---|
/api/upload/ |
POST | Upload CSV file |
/api/datasets/ |
GET | List last 5 datasets |
/api/datasets/<id>/ |
GET | Dataset details |
/api/datasets/<id>/summary/ |
GET | Statistics summary |
/api/datasets/<id>/report/ |
GET | Download PDF report |
/api/auth/register/ |
POST | User registration |
/api/auth/login/ |
POST | User login |
/api/auth/logout/ |
POST | User logout |
- Dashboard with CSV upload
- Interactive data tables
- Chart.js visualizations (Bar, Pie, Line charts)
- Upload history view
- PyQt5 dark-themed interface
- Matplotlib charts
- PDF report generation
- Dataset history management
cd backend
python manage.py test- Start the Django backend
- Launch either web or desktop frontend
- Upload the
sample_equipment_data.csvfile - Verify data table and charts display correctly
- Test PDF report download
- Start the Backend: Run Django server on port 8000
- Launch Frontend: Open web app or desktop app
- Upload CSV: Drag-drop or browse for CSV file
- View Analysis: See statistics and visualizations
- Download Report: Generate PDF summary
- View History: Access last 5 uploaded datasets
- Register a new account via web or desktop
- Login to track your uploads
- Guest mode available (uploads not linked to user)
MIT License - feel free to use and modify.
Created as an intern screening task for demonstrating full-stack development skills.
Happy Visualizing! π¬π