How styliteag/fio-analyzer works
Storage Performance Visualizer is a full-stack FIO benchmark analysis application. Users upload FIO JSON with infrastructure metadata; the backend extracts metrics and stores test runs, which the web UI presents as histories, host analysis, comparisons, ramps, and saturation results. Authentication and role-protected administration govern access. The graph covers documented product capabilities, but several routes and analytics pages were not sampled; those links are documented at product level rather than inferred from unsampled calls.
Main entry points: App.tsx React application · main.py FastAPI service · imports.py FIO import · connection.py SQLite persistence
Components 28
Web application
- React application
frontend/src/App.tsx - Upload page
frontend/src/pages/Upload.tsx - Host analysis
frontend/src/pages/Host.tsx - History view
frontend/src/pages/History.tsx - Comparison view
frontend/src/pages/Compare.tsx - Saturation view
frontend/src/pages/Saturation.tsx - Ramp view
frontend/src/pages/Ramps.tsx - Upload handler
frontend/src/hooks/api/useUpload.ts - Vue run types
frontend-vue/src/types/testRun.ts
API and access
- FastAPI service
backend/main.py - Role authentication
backend/auth/middleware.py - User management
backend/routers/users.py
Import and persistence
- FIO import
backend/routers/imports.py - FIO metric extraction
backend/utils/fio_metrics.py - Client-mode parsing
backend/utils/fio_client_mode.py - Storage metadata
backend/utils/storage_info.py - SQLite persistence
backend/database/connection.py - Run and metric models
backend/database/models.py
Performance analysis
- Time-series queries
backend/routers/time_series.py - Comparison queries
backend/routers/compare.py - Dashboard summaries
backend/routers/dashboard.py - Saturation analysis
backend/routers/saturation.py - Ramp analysis
backend/routers/ramp.py
Shared internals
- Application settings
backend/config/settings.py - Run filtering
backend/utils/run_filters.py - Sync-mode utilities
backend/utils/sync_mode.py - Request logging
backend/utils/logging.py
Other components
- User
Connections 31
- User → React application: uses
- React application → Upload page: routes to
frontend/src/App.tsx - React application → Host analysis: routes to
frontend/src/App.tsx - React application → History view: routes to
frontend/src/App.tsx - React application → Comparison view: routes to
frontend/src/App.tsx - React application → Saturation view: routes to
frontend/src/App.tsx - React application → Ramp view: routes to
frontend/src/App.tsx - Upload page → Upload handler: submits through
- Upload handler → FastAPI service: uploads to
- FastAPI service → FIO import: routes requests
backend/main.py - FastAPI service → Time-series queries: routes requests
backend/main.py - FastAPI service → Comparison queries: routes requests
backend/main.py - FastAPI service → Dashboard summaries: routes requests
backend/main.py - FastAPI service → Role authentication: protects routes
- FastAPI service → Saturation analysis: routes requests
backend/main.py - FastAPI service → Ramp analysis: routes requests
backend/main.py - FIO import → FIO metric extraction: extracts metrics
backend/routers/imports.py - FIO import → Client-mode parsing: parses client runs
backend/routers/imports.py - FIO import → Storage metadata: validates metadata
backend/routers/imports.py - FIO import → SQLite persistence: stores runs
backend/routers/imports.py - Time-series queries → SQLite persistence: queries runs
backend/routers/time_series.py - Comparison queries → SQLite persistence: queries runs
backend/routers/compare.py - Dashboard summaries → SQLite persistence: queries summaries
backend/routers/dashboard.py - SQLite persistence → Run and metric models: uses schemas
- Role authentication → User management: protects administration
- Application settings → SQLite persistence: configures storage
backend/database/connection.py - FIO import → Application settings: checks upload limits
backend/routers/imports.py - Time-series queries → Run filtering: filters runs
backend/routers/time_series.py - Comparison queries → Run filtering: filters runs
backend/routers/compare.py - FIO import → Request logging: logs activity
backend/routers/imports.py - React application → Vue run types: uses run types