A modern, privacy-focused web application that transforms CSV files into interactive dashboards with automatic data analysis, visualizations, and insights. Built with React, TypeScript, and Vite for fast, client-side processing.
Upload any CSV and get instant charts + summary stats. Great for quick insights without spreadsheets.
- Drag-and-drop CSV upload with instant parsing and validation
- Automatic field type detection (numeric, categorical, date/time)
- Interactive visualizations: Line charts, bar charts, pie charts, scatter plots
- Smart KPI cards: Sum, mean, median, min/max, standard deviation
- Column statistics with data quality insights
- Responsive design that works on desktop and mobile
- Privacy controls with configurable data retention and usage tracking
- Configurable limits for file size, row count, and processing time
- Dark/Light theme with system preference detection
- Data persistence using localStorage for datasets and user preferences
- Sample datasets for quick demos and testing
- Export capabilities for charts and processed data
- Real-time validation with helpful error messages
- Full TypeScript with strict type checking
- Comprehensive testing with Vitest and React Testing Library
- Modern tooling with Vite, ESLint, and Prettier
- Accessibility compliant (WCAG 2.1 AA)
- Modular architecture with custom hooks and contexts
- Optional backend integration (FastAPI/Python or Hono/Node)
- React 18 with functional components and hooks
- TypeScript for type safety and better DX
- Vite for fast development and optimized builds
- Tailwind CSS v4 for utility-first styling
- Chart.js with react-chartjs-2 for data visualization
- Papaparse for robust CSV parsing
- React Router for navigation (if needed)
- FastAPI (Python) for data processing API
- Hono (Node.js) for lightweight API
- Pandas for advanced data manipulation
- Vitest for unit and integration testing
- React Testing Library for component testing
- ESLint v9 with flat configuration
- Prettier for code formatting
- TypeScript strict mode enabled
# Clone the repository
git clone https://github.com/YOURUSER/csv-dashgen
cd csv-dashgen/web
# Install dependencies
npm install
# Start development server
npm run dev
# Open http://localhost:5173 in your browser# Frontend
cd csv-dashgen/web && npm install && npm run build
# Backend
cd ../api-py
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
uvicorn app:app --reload# Frontend
cd csv-dashgen/web
npm install && npm run build
# Backend (if implemented)
cd ../api-node
npm install
npm run devcsv-dashgen/
βββ web/ # Frontend React application
β βββ src/
β β βββ components/ # Reusable UI components
β β β βββ Charts.tsx # Chart rendering component
β β β βββ FieldPicker.tsx # Column selection interface
β β β βββ Stats.tsx # KPI and statistics display
β β β βββ Uploader.tsx # File upload component
β β β βββ Settings.tsx # Configuration panel
β β β βββ PrivacyNotice.tsx # Privacy consent modal
β β β βββ SampleLoader.tsx # Sample data loader
β β βββ contexts/ # React contexts for state management
β β β βββ ConfigContext.tsx # App configuration and limits
β β β βββ ThemeContext.tsx # Theme management
β β βββ hooks/ # Custom React hooks
β β β βββ useCSVParser.ts # CSV parsing logic
β β β βββ useLimits.ts # Configuration limits
β β β βββ useLocalStorage.ts # Persistence utilities
β β β βββ useChartGenerator.ts # Chart creation logic
β β βββ utils/ # Utility functions
β β β βββ csvParser.ts # CSV processing utilities
β β β βββ statistics.ts # Statistical calculations
β β β βββ typeInference.ts # Data type detection
β β β βββ chartUtils.ts # Chart configuration helpers
β β βββ App.tsx # Main application component
β β βββ main.tsx # Application entry point
β βββ public/ # Static assets
β βββ vite.config.ts # Vite configuration
β βββ package.json # Dependencies and scripts
β βββ tsconfig.json # TypeScript configuration
β βββ eslint.config.js # ESLint flat configuration
βββ api-py/ # Python FastAPI backend
β βββ app.py # FastAPI application
β βββ requirements.txt # Python dependencies
βββ samples/ # Sample CSV files
β βββ sales.csv # Sales data sample
β βββ expenses.csv # Expense tracking sample
β βββ fitness.csv # Fitness metrics sample
βββ docs/ # Documentation and screenshots
β βββ dashboard.png # Main dashboard screenshot
β βββ upload.png # Upload interface screenshot
β βββ architecture.md # Architecture documentation
βββ CHECKLIST.md # Development checklist
βββ PRD.md # Product requirements document
βββ README.md # This file
βββ package.json # Root package configuration
The project includes comprehensive testing with high coverage:
# Run all tests
npm test
# Run tests with coverage report
npm run test:coverage
# Run tests in watch mode
npm run test:watch
# Run linting
npm run lint
# Run linting with auto-fix
npm run lint:fix- Unit tests for utilities and hooks
- Component tests for React components
- Integration tests for user workflows
- Accessibility tests for WCAG compliance
- Coverage threshold: 80%+ across all files
Create a .env file in the web/ directory:
# API Configuration (optional)
VITE_API_URL=http://localhost:8000
VITE_API_ENABLED=false
# Application Limits
VITE_MAX_FILE_SIZE_MB=10
VITE_MAX_ROWS=10000
VITE_PROCESSING_TIMEOUT_MS=30000
# Privacy Settings
VITE_ENABLE_ANALYTICS=false
VITE_DATA_RETENTION_DAYS=30
VITE_REQUIRE_CONSENT=trueThe app includes a settings panel accessible from the main interface where users can configure:
- File size limits (1MB - 50MB)
- Row count limits (1K - 100K rows)
- Processing timeout (5s - 60s)
- Privacy preferences (analytics, data retention)
- Theme preferences (light/dark/auto)
- Chart defaults (colors, animations)
- Light theme for bright environments
- Dark theme for low-light conditions
- Auto theme that follows system preferences
- High contrast mode for accessibility
- WCAG 2.1 AA compliant with proper ARIA labels
- Keyboard navigation support for all interactive elements
- Screen reader compatibility with semantic HTML
- Focus management with visible focus indicators
- Color contrast ratios meeting accessibility standards
- Responsive design that works on all screen sizes
Try these sample datasets to explore the app's capabilities:
samples/sales.csv- Monthly sales data with revenue, costs, and categoriessamples/expenses.csv- Personal expense tracking with categories and amountssamples/fitness.csv- Fitness metrics including workouts, duration, and calories
- Upload a CSV - Drag and drop or click to select
samples/sales.csv - Explore data - View automatic field detection and statistics
- Create visualizations - Select columns for x/y axes and choose chart types
- Customize settings - Adjust limits, themes, and privacy preferences
- Export results - Download charts or processed data
- Node.js 18+ and npm
- Git for version control
- Python 3.8+ (for backend development)
# Development server with hot reload
npm run dev
# Production build
npm run build
# Preview production build
npm run preview
# Type checking
npm run type-check
# Code formatting
npm run format- ESLint v9 with flat configuration for modern linting
- Prettier for consistent code formatting
- TypeScript strict mode for type safety
- Pre-commit hooks for quality gates
Deploy to any static hosting service:
npm run build
# Deploy the 'dist' folder to Netlify, Vercel, or Cloudflare Pages- Frontend: Deploy static build to CDN
- Backend: Deploy API to Heroku, Railway, or AWS
- Database: Optional for saved dashboards
- Smart chart suggestions based on data patterns
- LLM-powered insights with natural language summaries
- Dashboard saving with cloud storage integration
- Advanced filtering and data transformation
- Collaborative features for team dashboards
- Mobile app companion
- WebAssembly for faster data processing
- Service workers for offline functionality
- Progressive Web App (PWA) capabilities
- Advanced chart types (heatmaps, treemaps)
- Real-time collaboration features
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Make your changes with tests
- Run the test suite:
npm test - Submit a pull request
- Follow the existing code style and conventions
- Add tests for new features
- Update documentation for API changes
- Ensure accessibility compliance
- Test on multiple browsers and devices
MIT License - see LICENSE file for details.
- Built with modern web technologies
- Inspired by the need for simple data exploration tools
- Thanks to the open-source community for amazing libraries
