Overview
The GeoFlow App is the main user interface for the platform, built with modern React technologies. It provides a comprehensive environment for designing workflows, uploading data, monitoring executions, and visualizing results.Technology Stack
- Frontend Framework: React 19 with TypeScript
- Routing: TanStack Router for file-based routing
- Styling: Tailwind CSS with shadcn/ui components
- State Management: Zustand for global state
- Data Fetching: TanStack Query for server state
- Build Tool: Vite for fast development and optimized builds
- UI Components: Radix UI primitives with custom styling
Key Features
Workflow Designer
- Visual Workflow Builder: Drag-and-drop interface for creating processing pipelines
- Node-Based Editor: Connect processing steps with a node graph interface
- Real-time Validation: Immediate feedback on workflow configuration errors
- Template Library: Pre-built workflow templates for common use cases
Data Management
- File Upload: Support for multiple geospatial formats (LAS, LAZ, GeoTIFF, SHP, etc.)
- Data Browser: Browse and preview uploaded datasets
- Metadata Viewer: Display dataset properties and statistics
- Download Manager: Export processed results in various formats
Execution Monitoring
- Live Execution Tracking: Real-time progress updates during workflow runs
- Log Viewer: Detailed execution logs with error highlighting
- Performance Metrics: Execution time, resource usage, and throughput statistics
- Execution History: Browse past workflow runs and their results
User Interface
- Responsive Design: Works on desktop and tablet devices
- Dark/Light Mode: Theme switching with system preference detection
- Keyboard Shortcuts: Productivity shortcuts for common actions
- Contextual Help: Inline documentation and tooltips
Architecture
Component Structure
State Management
The app uses multiple state management strategies:- Server State: TanStack Query for API data (workflows, executions, files)
- Global State: Zustand stores for UI state (theme, user preferences)
- Local State: React state for component-specific data
- Form State: React Hook Form for complex form management
Routing Structure
/_authed/- Authenticated routes (main app)/api/- API routes for external integrations- Public routes for authentication and landing pages
Development
Local Development
Environment Variables
API Integration
The app communicates with backend services through:- Convex Client: Real-time data synchronization and mutations
- REST APIs: Direct service communication for file operations
- WebSockets: Real-time execution updates
- File Upload: Direct uploads to storage services
Performance Optimizations
- Code Splitting: Route-based and component-based splitting
- Lazy Loading: Components and routes loaded on demand
- Memoization: React.memo and useMemo for expensive operations
- Virtual Scrolling: For large lists and data tables
- Image Optimization: Automatic image compression and WebP conversion
Browser Support
- Modern Browsers: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+
- Mobile: Responsive design works on tablets (iPad, Android tablets)
- Progressive Enhancement: Core functionality works without JavaScript
Accessibility
- WCAG 2.1 AA Compliance: Screen reader support, keyboard navigation
- High Contrast: Support for high contrast mode
- Focus Management: Proper focus indicators and tab order
- Semantic HTML: Proper ARIA labels and landmarks