https://github.com/fimo-org/fimo
FileMongo CLI Tools: Import, Export, Sync, and Archive Utilities
https://github.com/fimo-org/fimo
archive csv csv-export csv-import file mongo mongodb mongodb-atlas mongodb-database sync synchronization
Last synced: 8 months ago
JSON representation
FileMongo CLI Tools: Import, Export, Sync, and Archive Utilities
- Host: GitHub
- URL: https://github.com/fimo-org/fimo
- Owner: fimo-org
- Created: 2025-04-21T04:28:25.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-05-23T06:13:57.000Z (9 months ago)
- Last Synced: 2025-06-29T14:41:54.732Z (8 months ago)
- Topics: archive, csv, csv-export, csv-import, file, mongo, mongodb, mongodb-atlas, mongodb-database, sync, synchronization
- Language: Rust
- Homepage: https://fimo.org
- Size: 105 KB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# fimo (File-Mongo) CLI Toolkit
**fimo** is a modular, high-performance command-line toolkit written in Rust for importing, transforming, and synchronizing structured data with MongoDB. Built for developers, data engineers, and migration tasks, it enables robust data pipelines directly from the terminal.
---
## โจ What is fimo?
At its core, `fimo` is a collection of CLI utilities for MongoDB workflows. Each binary targets a specific use case, but they all share a fast, extensible foundation with strong type safety, async performance, and developer-friendly configuration.
---
## ๐ Available Tools
| Binary | Description |
|--------------|-----------------------------------------------------------------------------|
| `fimo-csv` | Import CSV files into MongoDB using YAML-based field mappings and templates |
| `fimo-sync` | Sync MongoDB documents across collections or environments incrementally |
---
## ๐งฐ Use Cases
- ๐ Keep environments in sync using `fimo-sync` (e.g., staging โ production)
- ๐ฅ Load flat files using `fimo-csv` for initial imports or ongoing feeds
- โ๏ธ Define repeatable transformations using Jinja2-style templates
- ๐งช Perform safe, resumable batch operations using resume tokens or values
---
## ๐ฆ Installation
Install from crates.io:
```bash
cargo install fimo
```
Or build from source:
```bash
git clone https://github.com/fimo-org/fimo.git
cd fimo
cargo build --release
```
---
## ๐ Project Layout
```text
fimo/
โโโ src/
โ โโโ bin/
โ โโโ fimo-csv/ # fimo-csv binary: CSV to MongoDB importer
โ โโโ fimo-sync/ # fimo-sync binary: document sync engine
โโโ examples/ # Example input data and config
โโโ tests/ # Test harnesses
โโโ Cargo.toml # Multi-binary manifest
```
---
## ๐ Tool Docs
### [`fimo-csv`](./src/bin/fimo-csv)
- High-throughput CSV importer
- YAML mapping with full BSON type support
- Supports transformations via MiniJinja
- Ideal for ETL and data warehousing
๐ [View `fimo-csv` documentation โ](https://github.com/fimo-org/fimo/tree/main/src/bin/fimo-csv/README.md)
---
### [`fimo-sync`](./src/bin/fimo-sync)
- Real-time or batch sync across MongoDB collections
- Change stream and field-based sync modes
- Resume-safe with `_id` disambiguation
- Optional health file support for watchdogs
๐ [View `fimo-sync` documentation โ](https://github.com/fimo-org/fimo/tree/main/src/bin/fimo-sync/README.md)
---
## ๐งฉ Coming Soon
### `fimo-archive`
A new utility designed to move large volumes of archived MongoDB documents to external storage such as S3, Azure Blob, or GCS. It will support:
- BSON/Extended JSON export
- Filtered and range-based archival (e.g., by date)
- Compatibility with cold storage solutions
- Future support for rehydration into live collections
---
## ๐ Why fimo?
- ๐ **Rust-powered performance**
- ๐ **Typed BSON support**
- ๐ง **Intelligent resume logic**
- ๐ ๏ธ **Modular CLI design**
- ๐งช **Tested on large-scale datasets**
Whether you're importing 10,000 rows or syncing millions of documents, `fimo` helps you do it cleanly, reliably, and efficiently.
---
## ๐ License
MIT ยฉ fimo.org โ Built with โค๏ธ in Rust