A Streamlit-based data analytics application that lets users upload CSV/XLSX files and get instant exploratory analysis, visualizations, and automated data-quality insights.
This repository includes everything needed to run the app locally, package it with Docker, and deploy it to Minikube with Kubernetes.
- Upload
CSVandXLSXdatasets from the browser - Automatic overview metrics (rows, columns, missing values, numeric columns)
- Descriptive statistics for numeric columns
- Correlation heatmap for multi-numeric datasets
- Auto-generated insights (missing data, correlations, skewness, cardinality hints)
- Interactive line, bar, and scatter charts
- Kubernetes-ready deployment with health probes and resource limits
data_analytics_app/
|-- app.py
|-- requirements.txt
|-- Dockerfile
|-- deployment.yaml
|-- service.yaml
`-- README.md
- Python 3.11
- Streamlit
- Pandas
- NumPy
- Matplotlib
- Docker
- Kubernetes (Minikube)
Install the following tools before you begin:
From the data_analytics_app directory:
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
streamlit run app.pyApp URL: http://localhost:8501
docker build -t data-analyzer:latest .
docker run --rm -p 8501:8501 data-analyzer:latestApp URL: http://localhost:8501
minikube startUse the command that matches your shell:
- PowerShell (Windows):
minikube -p minikube docker-env --shell powershell | Invoke-Expression- bash/zsh (Linux/macOS):
eval $(minikube docker-env)docker build -t data-analyzer:latest .kubectl apply -f deployment.yaml
kubectl apply -f service.yamlkubectl get pods -w
kubectl get deploy,svcWait until pod status is Running and readiness is 1/1.
minikube service data-analyzer-serviceThis command opens the app URL in your browser.
-
deployment.yaml- Deployment name:
data-analyzer - Replicas:
1 - Container image:
data-analyzer:latest imagePullPolicy: Never(expects image built in Minikube Docker daemon)- Readiness and liveness probes on
/_stcore/health
- Deployment name:
-
service.yaml- Service name:
data-analyzer-service - Type:
NodePort - Service port:
80 - Target port:
8501
- Service name:
# Check resources
kubectl get all
# Inspect pod details
kubectl describe pod -l app=data-analyzer
# View application logs
kubectl logs -l app=data-analyzer --tail=200
# Clean up Kubernetes resources
kubectl delete -f service.yaml
kubectl delete -f deployment.yaml
# Reset Docker env to your default daemon (PowerShell)
minikube docker-env --unset | Invoke-Expression-
evalnot recognized on Windows PowerShell- Use:
minikube -p minikube docker-env --shell powershell | Invoke-Expression
- Use:
-
Image pull errors (
ErrImagePull/ImagePullBackOff)- Ensure image was built after switching Docker to Minikube daemon.
- Confirm deployment uses
image: data-analyzer:latestandimagePullPolicy: Never.
-
Service not reachable
- Run
minikube statusand verify cluster is running. - Run
kubectl get pods,svcand confirm resources are healthy. - Use
minikube service data-analyzer-serviceinstead of manually guessing NodePort.
- Run
-
App crashes on startup
- Check logs:
kubectl logs -l app=data-analyzer - Verify dependencies from
requirements.txtinstalled successfully during image build.
- Check logs:
- Keep dependency versions explicit in
requirements.txtfor reproducibility. - If you change ports, update
Dockerfile, probes indeployment.yaml, andservice.yamlconsistently. - Test both local and Minikube workflows before submitting changes.