ETLHub is a sophisticated web application that combines data processing capabilities with AI-powered analysis. It allows users to upload, analyze, and visualize data using Google Gemini AI integration, providing intelligent insights and recommendations for data processing workflows.
- AI-Powered Chat Interface: Interactive chat with Google Gemini AI for data analysis
- File Upload & Processing: Support for CSV, Excel, and JSON file formats
- Data Visualization: Advanced charting and dashboard capabilities
- ETL Functions: Comprehensive suite of data transformation tools
- Theme System: Multiple beautiful themes with dark/light mode support
- API Key Management: Secure management of AI service API keys
- Performance Monitoring: Built-in performance tracking and optimization
- Responsive Design: Modern, mobile-first interface
βββ public/
β βββ favicon.ico
β βββ placeholder.svg
β βββ robots.txt
βββ src/
β βββ components/
β β βββ ui/ # shadcn/ui components
β β β βββ accordion.tsx
β β β βββ alert-dialog.tsx
β β β βββ alert.tsx
β β β βββ avatar.tsx
β β β βββ badge.tsx
β β β βββ button.tsx
β β β βββ card.tsx
β β β βββ chart.tsx
β β β βββ dialog.tsx
β β β βββ input.tsx
β β β βββ loading.tsx
β β β βββ scroll-area.tsx
β β β βββ select.tsx
β β β βββ sidebar.tsx
β β β βββ table.tsx
β β β βββ tabs.tsx
β β β βββ textarea.tsx
β β β βββ toast.tsx
β β β βββ toaster.tsx
β β β βββ [other ui components]
β β βββ functions/ # Function-specific components
β β β βββ DocumentationTab.tsx # API documentation viewer
β β β βββ FunctionCard.tsx # Individual function display
β β β βββ PreviewPanel.tsx # Function preview interface
β β β βββ betaData.ts # Beta feature definitions
β β β βββ data.ts # Core function data
β β β βββ types.ts # Function type definitions
β β β βββ utils.ts # Function utilities
β β βββ AnalysisFunctions.tsx # AI analysis functions
β β βββ ApiKeyManager.tsx # API key management
β β βββ CSVUpload.tsx # CSV file upload handler
β β βββ ChatInterface.tsx # Main chat interface
β β βββ ChartVisualization.tsx # Data visualization
β β βββ DashboardPreview.tsx # Dashboard builder
β β βββ DatasourceUtilities.tsx # Data source tools
β β βββ FileUpload.tsx # File upload component
β β βββ Footer.tsx # Application footer
β β βββ Functions.tsx # ETL functions panel
β β βββ MessageBubble.tsx # Chat message display
β β βββ Navigation.tsx # Main navigation
β β βββ OnlineDatasource.tsx # Online data sources
β β βββ ProjectDocumentation.tsx # Project docs
β β βββ ResponseFormatter.tsx # AI response formatting
β β βββ SettingsPanel.tsx # Application settings
β β βββ VerticalNavigation.tsx # Vertical nav component
β βββ contexts/
β β βββ FileContext.tsx # File management state
β β βββ ThemeContext.tsx # Theme management state
β βββ hooks/
β β βββ use-mobile.tsx # Mobile detection hook
β β βββ use-toast.ts # Toast notification hook
β β βββ useGemini.ts # Gemini AI integration
β β βββ useTheme.ts # Theme management hook
β βββ lib/
β β βββ utils.ts # Utility functions
β βββ pages/
β β βββ Home.tsx # Landing page
β β βββ Index.tsx # Main application page
β β βββ NotFound.tsx # 404 error page
β βββ services/
β β βββ apiService.ts # API service layer
β βββ styles/
β β βββ themes/ # Theme definitions
β β β βββ brown.css
β β β βββ classic.css
β β β βββ nature.css
β β β βββ neon.css
β β βββ animations.css # Animation utilities
β β βββ base.css # Base styles
β β βββ theme-animations.css # Theme animations
β β βββ theme-base.css # Theme base styles
β β βββ theme-buttons.css # Theme button styles
β β βββ theme-cards.css # Theme card styles
β β βββ theme-components.css # Theme component styles
β β βββ theme-overrides.css # Theme overrides
β β βββ theme-text.css # Theme typography
β β βββ index.css # Main CSS entry
β βββ types/
β β βββ theme.ts # Theme type definitions
β βββ utils/
β β βββ advancedExportUtils.ts # Advanced export utilities
β β βββ dataProcessing.ts # Data processing utilities
β β βββ errorHandling.ts # Error handling utilities
β β βββ exportUtils.ts # Export utilities
β β βββ performance.ts # Performance monitoring
β β βββ searchUtils.ts # Search and filter utilities
β β βββ settingsConfig.ts # Settings management
β β βββ themeUtils.ts # Theme utilities
β β βββ visualizationUtils.ts # Visualization utilities
β βββ constants/
β β βββ themes.ts # Theme constants
β βββ App.css # Application styles
β βββ App.tsx # Main App component
β βββ index.css # Global styles
β βββ main.tsx # Application entry point
β βββ vite-env.d.ts # Vite type definitions
βββ .gitignore # Git ignore rules
βββ README.md # Project documentation
βββ components.json # shadcn/ui configuration
βββ eslint.config.js # ESLint configuration
βββ index.html # HTML entry point
βββ package.json # Project dependencies
βββ postcss.config.js # PostCSS configuration
βββ tailwind.config.ts # Tailwind configuration
βββ tsconfig.json # TypeScript configuration
βββ vite.config.ts # Vite configuration
The application follows a modular, component-based architecture with clear separation of concerns:
- FileContext: Manages uploaded files and their processing state
- ThemeContext: Handles theme selection and application-wide styling
- Local Storage: Persists API keys, theme preferences, and user settings
File Upload β Validation β Parsing β Analysis β Visualization
β β β β β
FileUpload β DataProcessor β AI Chat β Charts β Export
User Input β Context Building β API Call β Response Processing β UI Update
β β β β β
ChatInterface β buildContext β Gemini API β ResponseFormatter β Display
File Processing Workflow:
- User uploads file via FileUpload component
- File validation using validateFileData utility
- Data parsing and structure analysis
- Context building for AI analysis
- Integration with chat interface for AI insights
AI Chat Workflow:
- User submits query through ChatInterface
- System builds contextual prompt with file data
- API call to Gemini AI with retry logic
- Response processing and formatting
- Display with export options
Theme System Workflow:
- Theme selection in SettingsPanel
- Theme variables applied via themeUtils
- CSS custom properties updated
- Component re-rendering with new styles
- API Errors: Handled by ErrorHandler utility with retry logic
- File Errors: Validation and user feedback via toast notifications
- Performance: Monitored by performanceMonitor utility
- User Feedback: Toast notifications for all user actions
- API keys masked in UI with option to edit (blank field for security)
- Local storage for sensitive data with encryption considerations
- Input validation and sanitization
- Secure file upload handling
- React.memo for expensive components
- Lazy loading for large datasets
- Debounced search and filter operations
- Efficient state updates and minimal re-renders
- Performance monitoring and metrics collection
App
βββ Navigation (global navigation)
βββ ThemeProvider (theme management)
βββ FileProvider (file state management)
βββ QueryClient (API state management)
βββ Router
βββ Home (landing page)
βββ Index (main app)
βββ ChatInterface (AI interaction)
βββ FileUpload (data input)
βββ Functions (ETL tools)
βββ SettingsPanel (configuration)
βββ Visualizations (charts/dashboards)
- Frontend Framework: React 18 with TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS with custom design system
- UI Components: shadcn/ui component library
- State Management: React Context + Local Storage
- AI Integration: Google Gemini API
- Data Processing: Custom utilities for CSV/Excel/JSON
- Charts: Recharts library
- Routing: React Router Dom
- HTTP Client: Native fetch with retry logic
- Node.js (v16 or higher)
- npm or yarn package manager
# Clone the repository
git clone <YOUR_GIT_URL>
# Navigate to project directory
cd <YOUR_PROJECT_NAME>
# Install dependencies
npm install
# Start development server
npm run dev- Configure your Google Gemini API key in the application settings
- Select your preferred theme
- Upload data files to start analysis
- Upload Data: Use the file upload feature to import CSV, Excel, or JSON files
- Configure AI: Set up your Gemini API key in the settings panel
- Analyze Data: Chat with the AI to get insights about your data
- Visualize: Create charts and dashboards from your analysis
- Export: Export results in various formats (Excel, PNG, etc.)
- ETL Functions: Use built-in functions for data transformation
- Online Data Sources: Connect to external data sources
- Custom Themes: Switch between different visual themes
- Performance Monitoring: Track application performance metrics
The application uses a comprehensive design system with:
- Semantic color tokens defined in index.css
- Theme-responsive components that adapt to different color schemes
- Consistent spacing and typography across all components
- Accessible design patterns following WCAG guidelines
- File Format Support: CSV, Excel (.xlsx), JSON
- Data Validation: Automatic structure analysis and validation
- Data Cleaning: Remove duplicates, handle null values, trim strings
- Data Aggregation: Sum, average, count, min/max operations
- Export Options: Excel, CSV, JSON, PNG charts
The application integrates with Google Gemini AI for:
- Data Analysis: Intelligent insights from uploaded datasets
- Query Processing: Natural language queries about data
- Recommendations: Suggestions for data processing and visualization
- Error Handling: Robust retry logic and user feedback
- Mobile-first approach with responsive breakpoints
- Touch-friendly interfaces for mobile devices
- Adaptive layouts that work across all screen sizes
- Progressive enhancement for modern browsers
- Local Data Storage: Files processed locally for privacy
- API Key Security: Keys masked in UI, stored securely
- Input Validation: Comprehensive validation for all user inputs
- Error Boundaries: Graceful error handling to prevent crashes
This project can be deployed using:
- Lovable Platform: Direct deployment from the Lovable interface
- Vercel/Netlify: Static site deployment
- Custom Domain: Connect your own domain via project settings
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and ensure code quality
- Submit a pull request
This project is developed with Lovable and follows standard web development practices.
Project URL: https://etlhub.netlify.app/