A modern, interactive banking dashboard built with Streamlit that combines traditional KPIs and charts with an innovative 3D data visualization experience. Perfect for financial analysts, data scientists, and anyone interested in banking analytics.
- π Interactive KPIs: Real-time customer metrics, balance tracking, and delinquency rates
- π Dynamic Charts: Time series analysis, segment breakdowns, and portfolio heatmaps
- π§ 3D Data Storytelling: Immersive 3D scene with customizable metrics and color schemes
- ποΈ Smart Filtering: Date ranges, customer segments, and product filtering
- π± Responsive Design: Works seamlessly on desktop and mobile devices
- π Multi-page Navigation: Organized sections for Overview, Portfolio, Risks, and 3D exploration
Live Application: https://classic-dashboard-with-kpis-and-graphs-3d.streamlit.app/
Experience the full dashboard with synthetic banking data that demonstrates real-world scenarios.
- Frontend: Streamlit 1.48+
- Visualization: Plotly (2D charts + 3D scenes)
- Data Processing: Pandas, NumPy
- Styling: Custom CSS + Streamlit themes
- Deployment: Streamlit Community Cloud
- Python 3.10+
- Windows PowerShell (or any shell)
- Git
git clone https://github.com/michaelgermini/classic-dashboard-with-kpis-and-graphs.git
cd classic-dashboard-with-kpis-and-graphs
python -m venv venv
.\venv\Scripts\python -m pip install --upgrade pip
.\venv\Scripts\python -m pip install -r requirements.txt
.\venv\Scripts\python -m streamlit run app.py
Visit http://localhost:8501
to see the dashboard in action!
classic-dashboard-with-kpis-and-graphs/
βββ app.py # Main application entry point
βββ pages/ # Multi-page navigation
β βββ 1_Overview.py # Dashboard overview with KPIs
β βββ 2_Portfolio.py # Portfolio analysis
β βββ 3_Risks.py # Risk metrics and analysis
β βββ 4_3D_Storytelling.py # Interactive 3D scene
βββ components/ # Reusable UI components
β βββ kpi_cards.py # KPI display components
β βββ filters.py # Data filtering interface
β βββ layout.py # Navigation and layout
β βββ menu.py # Sidebar navigation
βββ viz/ # Visualization modules
β βββ charts.py # 2D Plotly charts
β βββ plotly_3d.py # 3D scene builder
βββ services/ # Data and business logic
β βββ data_loader.py # Data generation and caching
βββ .streamlit/ # Streamlit configuration
βββ config.toml # Theme and settings
- Multi-metric Support: Switch between balance sums, averages, account counts, and delinquency rates
- Customizable Colors: Choose from 6 different color schemes (Blues, Viridis, Plasma, etc.)
- Dynamic Sizing: Adjust bar thickness for optimal visualization
- Hover Information: Detailed tooltips with segment, product, and metric values
- Auto-generation: Synthetic banking data created on first run
- Caching: Optimized performance with Streamlit's caching system
- Real-time Filtering: Instant updates based on date ranges and segment selections
- Sticky Navigation: Always-accessible top navigation bar
- Sidebar Menu: Quick page switching with icons
- Responsive Layout: Adapts to different screen sizes
- Modern Theme: Clean, professional banking aesthetic
The dashboard uses synthetic banking data with the following structure:
- Customer Segments: Retail, Affluent, SME, Corporate
- Product Types: Current Accounts, Savings, Loans, Investments
- Metrics: Balance amounts, delinquency flags, transaction dates
- Time Range: 180 days of historical data
Overall Grade: B+ (85/100)
Category | Score | Grade | Status |
---|---|---|---|
Code Quality | 7/10 | B | |
Security | 9/10 | A | β No vulnerabilities |
Performance | 8/10 | B+ | β Optimized |
Documentation | 9/10 | A | β Comprehensive |
Structure | 9/10 | A | β Well-organized |
Testing | 3/10 | C |
- No Critical Errors: Clean codebase with proper type hints
- Modular Architecture: Well-organized component-based structure
- Security: No known vulnerabilities in dependencies
- Performance: Efficient caching and data processing
- Documentation: Comprehensive README and inline comments
- Code Formatting: 13 files need Black formatting
- Import Organization: Import sorting issues in 5 files
- Testing: Limited test coverage (only smoke tests)
- Error Handling: Basic exception handling
- High Priority: Fix code formatting and import sorting
- Medium Priority: Add comprehensive test suite
- Low Priority: Enhance error handling and monitoring
- Fork this repository
- Go to Streamlit Cloud
- Connect your GitHub account
- Select this repository
- Set main file to
app.py
- Deploy!
# Install development dependencies
.\venv\Scripts\python -m pip install -r requirements.txt
# Run with auto-reload
.\venv\Scripts\python -m streamlit run app.py --server.runOnSave true
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
This project is open source and available under the MIT License.
Michael Germini
- π Website: upframe.com
- π§ Email: michael@germini.info
- π GitHub: @michaelgermini
β Star this repository if you find it useful!
π Share the demo with your network: https://classic-dashboard-with-kpis-and-graphs-3d.streamlit.app/