This is a web-based dashboard created during my internship at CVOTER, designed to display, sort, and visualize large-scale survey data using modern web technologies. The project connects an Excel-based dataset to a Microsoft SQL Server backend and uses Flask to serve dynamic content including tables and interactive charts powered by Highcharts.
- π₯ Automated Data Ingestion from Excel to MS SQL Server
- ποΈ Dynamic Database Schema Creation using SQLAlchemy
- π Paginated Data Table View with sorting options
- π Interactive Satisfaction Trend Chart using Highcharts
- π Custom Views:
- Most satisfied respondents
- Least satisfied respondents
- Latest and oldest survey entries
- π Responsive and Clean UI using HTML, CSS, and JS
- π Real-time data visualization over time across 8500+ entries
During this project, I worked with and gained hands-on experience in:
- Python (Flask) β Web development and backend routing
- MS SQL Server β Handling and querying large structured datasets
- SQLAlchemy β ORM for seamless interaction between Python and SQL
- Pandas β Data preprocessing and manipulation from Excel files
- Highcharts β Building real-time, interactive graphs
- HTML/CSS/JavaScript β Frontend templating and interactivity
- Jinja2 β Dynamically rendering HTML with Flask backend
π project-root/
βββ main.py # Flask backend logic
βββ data.xlsx # Raw survey data source
βββ templates/
β βββ index.html # Main UI template
βββ static/
β βββ style.css # Custom CSS styles
βββ README.md # This file
-
Data Ingestion:
- Loads data from
data.xlsxusingpandas. - Dynamically creates a SQLAlchemy model based on the Excel columns and data types.
- Initializes a MS SQL Server database and stores the entire dataset.
- Loads data from
-
Web Interface:
- A home route (
/) displays a paginated table of all responses. - Sorting routes (
/msatisfied,/lsatisfied,/latest,/oldest) display sorted subsets of data.
- A home route (
-
Data Visualization:
- The
/route also renders a Highcharts line graph to track satisfaction levels over time. - The chart includes four series:
- Very much satisfied
- Satisfied to some extent
- Not at all satisfied
- Don't Know/Canβt say
- The
-
Install Dependencies
pip install flask flask_sqlalchemy pandas openpyxl pyodbc
-
Ensure MS SQL Server is Running
-
Update the database URI in
main.pyif needed:app.config["SQLALCHEMY_DATABASE_URI"] = "mssql+pyodbc://<username>:<password>@<server>/<db_name>?driver=ODBC+Driver+17+for+SQL+Server"
-
-
Run the App
python main.py
-
Open your browser at
http://127.0.0.1:5000/




