Skip to content

myownipgit/dynamic-procurement-dashboard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

9 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ Dynamic Procurement Charts for Dashboard

React JavaScript Recharts TailwindCSS

A powerful React-based dashboard system that generates charts dynamically using parameterized configurations stored in a database. Unlike traditional dashboards with hardcoded queries, this system builds SQL queries on-demand based on user parameters, providing ultimate flexibility for procurement spend analysis.

โœจ Key Features

๐ŸŽฏ Dynamic Chart System

  • Parameterized Configurations: Chart settings stored as JSON in database
  • Dynamic SQL Generation: Queries built on-demand based on user parameters
  • No Hardcoded Queries: Maximum flexibility for data exploration
  • Real-time Parameter Controls: Users can adjust limits, filters, and date ranges

๐Ÿ“Š Supported Chart Types

  • ๐Ÿ”„ Horizontal Bar Charts - Perfect for commodity/category analysis
  • ๐Ÿฅง Pie Charts - Standard circular charts for proportions
  • ๐Ÿฉ Donut Charts - Pie charts with center hole for geographic/vendor data

๐Ÿ”ง Interactive Features

  • Live Parameter Controls - Modify chart parameters in real-time
  • Chart Selector - Add/remove charts dynamically
  • Responsive Design - Works perfectly on desktop and mobile
  • Loading States - Smooth user experience with proper feedback
  • Error Handling - Graceful failure with user-friendly messages

๐ŸŽฌ Demo

Dashboard Preview

Dynamic charts with real-time parameter controls for procurement spend analysis

๐Ÿ—๏ธ Architecture

Database-Driven Configuration

graph TD
    A[User Interface] --> B[Parameter Controls]
    B --> C[Chart API Service]
    C --> D[Dynamic SQL Builder]
    D --> E[Database Query]
    E --> F[Chart Renderer]
    F --> A
    
    G[Chart Configs Table] --> D
    H[Spend Data Tables] --> E
Loading

Component Structure

src/
โ”œโ”€โ”€ components/
โ”‚   โ”œโ”€โ”€ Dashboard.jsx           # Main container component
โ”‚   โ”œโ”€โ”€ DynamicChart.jsx        # Generic chart renderer
โ”‚   โ”œโ”€โ”€ ChartControls.jsx       # Parameter input controls
โ”‚   โ””โ”€โ”€ ChartAPIService.js      # Data fetching service
โ”œโ”€โ”€ data/
โ”‚   โ””โ”€โ”€ database-schema.sql     # Database setup
โ””โ”€โ”€ docs/
    โ”œโ”€โ”€ API.md                  # API documentation
    โ””โ”€โ”€ DEPLOYMENT.md           # Deployment guide

๐Ÿš€ Quick Start

Prerequisites

  • Node.js 16+
  • React 18+
  • Database (SQLite/PostgreSQL/MySQL)

Installation

  1. Clone the repository
git clone https://github.com/myownipgit/dynamic-procurement-dashboard.git
cd dynamic-procurement-dashboard
  1. Install dependencies
npm install
  1. Set up the database
# Run the database schema
sqlite3 procurement.db < data/database-schema.sql
  1. Start the development server
npm start
  1. Open your browser
http://localhost:3000

๐Ÿ“‹ Current Chart Configurations

1. ๐Ÿ“Š Top Commodities (horizontal_bar)

  • Purpose: Analyze spending by commodity categories
  • Parameters:
    • limit (1-50) - Number of results
    • date_range - Time period filter
    • min_amount - Minimum spending threshold
  • Data Source: spend_transactions + commodities tables

2. ๐Ÿฅง Vendor Spend Analysis (pie)

  • Purpose: Vendor spending distribution
  • Parameters:
    • limit (default 5) - Number of vendors
    • state_filter - Filter by vendor state
  • Data Source: spend_transactions + vendors tables

3. ๐Ÿฉ Geographic Distribution (donut)

  • Purpose: Spending by state/location
  • Parameters:
    • limit (default 5) - Number of states
    • exclude_states - States to exclude
  • Data Source: spend_transactions + vendors tables

๐Ÿ”„ Dynamic SQL Generation

The system automatically builds optimized SQL queries from configuration:

Configuration Input:

{
  "base_table": "spend_transactions",
  "join_tables": ["commodities ON spend_transactions.commodity_id = commodities.commodity_id"],
  "group_by_field": "commodities.commodity_description",
  "value_field": "SUM(spend_transactions.total_amount)",
  "parameters": {"limit": 10, "min_amount": 1000000}
}

Generated SQL Output:

SELECT commodities.commodity_description as label, 
       SUM(spend_transactions.total_amount) as value,
       ROUND(SUM(spend_transactions.total_amount) * 100.0 / 
         (SELECT SUM(total_amount) FROM spend_transactions), 1) as percentage
FROM spend_transactions 
JOIN commodities ON spend_transactions.commodity_id = commodities.commodity_id
WHERE SUM(spend_transactions.total_amount) >= 1000000
GROUP BY commodities.commodity_description 
ORDER BY value DESC 
LIMIT 10

๐Ÿ› ๏ธ Adding New Charts

Create a new chart by adding a configuration to the dynamic_chart_configs table:

INSERT INTO dynamic_chart_configs (
  chart_id, chart_name, chart_type, base_table, 
  join_tables, group_by_field, value_field, chart_options, parameters
) VALUES (
  'monthly_trends',
  'Monthly Spending Trends',
  'line',
  'spend_transactions',
  '[]',
  'strftime("%Y-%m", transaction_date)',
  'SUM(total_amount)',
  '{"colors": ["#3498DB"], "showPoints": true}',
  '{"months": {"type": "number", "default": 12}}'
);

The chart automatically appears in the dashboard with parameter controls!

๐ŸŽจ Styling & Customization

Color Schemes

Charts use predefined color palettes:

  • Standard: ["#3498DB", "#E74C3C", "#2ECC71", "#F39C12", "#9B59B6"]
  • Vendor Analysis: ["#D2524F", "#5B9BD5", "#70AD47", "#E59C39", "#9B59B6"]
  • Geographic: ["#70AD47", "#5B9BD5", "#E59C39", "#9B59B6", "#D2524F"]

Responsive Design

  • Desktop: Full-width charts with side-by-side parameter controls
  • Tablet: Stacked layout with condensed controls
  • Mobile: Single-column layout with collapsible parameters

๐Ÿ”’ Security Features

  • ๐Ÿ›ก๏ธ Parameterized Queries: Prevents SQL injection attacks
  • โœ… Input Validation: Type checking on all parameters
  • ๐Ÿšซ Query Limits: Maximum result limits to prevent performance issues
  • ๐Ÿ“ Audit Logging: Track chart access and parameter usage

๐Ÿ“ˆ Performance Optimizations

  • โšก Query Caching: Frequently accessed data cached in memory
  • ๐Ÿ“Š Pagination: Large result sets automatically paginated
  • ๐Ÿ” Indexed Joins: Optimized database indexes on join columns
  • ๐ŸŽฏ Lazy Loading: Charts loaded on-demand as users select them

๐Ÿš€ Production Deployment

Environment Setup

# Build for production
npm run build

# Set environment variables
export DATABASE_URL="postgresql://user:pass@host:5432/procurement"
export REDIS_URL="redis://localhost:6379"
export NODE_ENV="production"

Docker Deployment

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
EXPOSE 3000
CMD ["npm", "start"]

Database Migration

# PostgreSQL setup
psql $DATABASE_URL < data/postgresql-schema.sql

# Add indexes for performance
psql $DATABASE_URL < data/production-indexes.sql

๐Ÿ“Š Sample Data

The repository includes sample procurement data:

  • 10,000+ transactions across multiple categories
  • 1,650+ vendors from various states
  • 50+ commodity types with realistic spending patterns
  • Geographic distribution weighted toward Texas (81.9%)

๐Ÿ”ฎ Future Enhancements

Planned Features

  • ๐Ÿ“ˆ Line Charts - Time series analysis for spending trends
  • ๐Ÿ“‹ Stacked Bar Charts - Multi-dimensional category analysis
  • ๐Ÿ“ค Export Functionality - PDF and Excel export options
  • ๐Ÿ”„ Real-time Updates - WebSocket integration for live data
  • ๐ŸŽจ Custom Themes - User-selectable color schemes
  • ๐Ÿ‘ฅ User Preferences - Personalized dashboard layouts
  • ๐Ÿ“ฑ Mobile App - React Native companion app

Advanced Analytics

  • ๐Ÿค– AI-Powered Insights - Automated spending anomaly detection
  • ๐Ÿ“Š Predictive Analytics - Forecast future spending patterns
  • ๐ŸŽฏ Smart Recommendations - Suggest cost optimization opportunities
  • ๐Ÿ“ˆ Benchmark Analysis - Compare against industry standards

๐Ÿค Contributing

We welcome contributions! Please see our Contributing Guide for details.

Development Workflow

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Recharts - Excellent React charting library
  • Tailwind CSS - Utility-first CSS framework
  • React - Amazing UI library
  • SQLite - Reliable embedded database

๐Ÿ“ž Support


โญ Star this repository if you find it helpful!

Built with โค๏ธ for modern procurement analytics

About

A powerful React-based dashboard system that generates charts dynamically using parameterized configurations. Features dynamic SQL generation, interactive parameter controls, and multiple chart types for procurement spend analysis.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors