A Rust-based GUI desktop application for data engineering tasks. Fast File Flow provides a visual interface for loading, filtering, processing, and analyzing CSV/JSON files with integrated machine learning capabilities.
- CSV Files: Load and process CSV files with automatic encoding detection
- JSON Files: Basic JSON file support via serde
- Custom Format:
.ffflowproject files for saving application state - Export: Export processed data to timestamped files in
./output/
- Interactive Table View: Scrollable data grid with resizable columns
- Column Statistics: Automatic data classification (Qualitative/Quantitative)
- Correlation Analysis: Analyze relationships between columns
- Real-time Preview: Preview filtered/processed data before exporting
Fast File Flow integrates the linfa ML library for data analysis:
| Algorithm | Description |
|---|---|
| K-Means Clustering | Unsupervised clustering with centroid visualization |
| PCA | Principal Component Analysis for dimensionality reduction |
| DBSCAN | Density-based spatial clustering for noise detection |
| Linear Regression | Predictive modeling with regression coefficients |
All ML models generate PNG visualization charts saved to ./output/.
- Filter Options: Filter data by column values with multiple conditions
- Process Options: Apply transformations to data columns
- Column Selection: Choose which columns to include/exclude
- Search: Full-text search within loaded data
- Save Project: Save current state as
.ffflowfiles - Load Project: Resume work from saved projects
- Configuration:
config.ffflowstores last loaded file and column settings
The application follows an Elm-style architecture using the Iced GUI framework:
Model β Update β View
| Module | Purpose |
|---|---|
fast_file_flow/ |
Main application state, message handling, view rendering |
stored_file/ |
File loading, column/row storage, data access |
ai/ |
ML analysis: K-Means, PCA, DBSCAN, Linear Regression |
dynamictable/ |
Table UI components (columns, rows, scrollable views) |
stadistics/ |
Statistical analysis and data classification |
save_options/ |
Filter and process options for data export |
correlation_analysis/ |
Correlation calculations between columns |
- File selected β
StoredFile::new()async loads columns and first 50 rows - Full columns loaded on-demand via
StoredFile::get_full_column()for ML/statistics - ML operations return results as images/text
- Export generates timestamped files in
./output/
- GUI Framework: Iced 0.12 - Elm-inspired Rust GUI framework
- Async Runtime: Tokio - For non-blocking file I/O
- CSV Parsing: csv-async - Async CSV reading/writing
- Machine Learning: Linfa - Rust ML toolkit
linfa-clustering- K-Means, DBSCANlinfa-linear- Linear Regressionlinfa-reduction- PCA
- Numerical Computing: ndarray + Rayon for parallelization
- Visualization: plotters - Chart/plot generation
- Image Processing: image - Image handling
- Rust (latest stable version)
- Windows, macOS, or Linux
# Clone the repository
git clone https://github.com/bymarcogr/fast_file_flow.git
cd fast_file_flow
# Build the project
cargo build --release
# Run in development mode
cargo run-
Launch the application:
cargo run
-
Load a file: Click the folder icon to open a CSV or JSON file
-
Explore data: View your data in the interactive table
-
Apply filters: Use the filter panel to narrow down data
-
Run ML analysis: Go to the AI panel and select an algorithm
-
Export results: Save processed data to
./output/
| Shortcut | Action |
|---|---|
| File operations | Via menu buttons |
| Navigation | Click panel icons |
Save your work as .ffflow files to preserve:
- Loaded file path
- Column selections
- Filter/processing settings
- Application state
fast_file_flow/
βββ src/
β βββ ai/ # ML algorithms
β β βββ dbscan/
β β βββ k_means/
β β βββ linear_regression/
β β βββ pca/
β β βββ shared/
β βββ constants/ # App constants (sizes, paths, text)
β βββ correlation_analysis/
β βββ dialog/ # File dialogs
β βββ dynamictable/ # Table UI components
β βββ export/ # File export logic
β βββ fast_file_flow/ # Main app (state, messages, view)
β βββ save_options/ # Filter/process options
β βββ stadistics/ # Statistical analysis
β βββ stored_file/ # File loading/storage
β βββ util/ # Utility functions
β βββ lib.rs
β βββ main.rs
βββ src/resources/
β βββ fonts/ # Custom icon font
β βββ images/ # App icons and logos
βββ Cargo.toml
βββ README.md
# Build the project
cargo build
# Run in development
cargo run
# Build release version
cargo build --release
# Check for compile errors without building
cargo check
# Clean build artifacts
cargo clean- Window size: Fixed at 1200x800 (APP_WIDTH x APP_HEIGHT in constants)
- Custom font:
src/resources/fonts/iced-fff.ttf - Output directory:
./output/ - Config file:
config.ffflow
- CSV/JSON file loading
- Interactive data table
- Column filtering and processing
- K-Means clustering
- PCA analysis
- DBSCAN clustering
- Linear Regression
- Project save/load
- Data export
- Additional ML algorithms (SVM, Decision Trees)
- Data transformation pipelines
- Plugin system for custom processors
- Cloud storage integration
- Real-time data streaming
- Advanced visualization options
- Support for CSV files using ';' as field separator to improve compatibility with regional data formats
- Performance optimizations for handling large datasets using Rust concurrency and parallel processing
- Enhanced correlation analysis with automatic handling of missing values
- Processing time indicator in the UI status bar to show execution time of data preparation operations
- Missing data counter per column to help identify data quality issues
- Sensitive data anonymization module for protecting personal or confidential information
- Automatic column generation based on user-defined rules, calculations, or transformations
- Automatic data type detection and schema inference for structured datasets (AI)
- Outlier detection using statistical and machine learning techniques to improve data quality analysis (AI)
- Automatic feature engineering suggestions based on dataset characteristics (AI)
- Smart data cleaning recommendations using pattern recognition and anomaly detection (AI)
- Natural language querying to allow users to explore datasets using plain language commands (AI)
- Dataset profiling with automatic statistical summaries and data quality scoring (AI)
- Intelligent missing value imputation using statistical models and machine learning techniques (AI)
- Automatic dataset classification to identify structured patterns and recommend analysis strategies (AI)
- Semantic column detection (e.g., dates, emails, geographic data, identifiers) for smarter preprocessing (AI)
- Automated data validation rules generation based on inferred dataset constraints (AI)
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Iced - The fantastic Rust GUI framework
- Linfa - Rust's machine learning toolkit
- Tokio - Asynchronous runtime for Rust
- Plotters - Rust visualization library
For issues, questions, or feature requests, please open an issue on GitHub.
Made with Rust π¦ and Iced
