No description
- Rust 61.4%
- Shell 20.5%
- TypeScript 9.7%
- CSS 4.2%
- JavaScript 3%
- Other 1.2%
| .forgejo/workflows | ||
| crates | ||
| docs/schemas | ||
| schemas/filemanager | ||
| scripts | ||
| tests/e2e | ||
| .gitignore | ||
| buildenv.sh | ||
| Cargo.lock | ||
| Cargo.toml | ||
| Makefile | ||
| README.md | ||
Hero File Manager
Web-based file manager built on the Hero ecosystem. Embeds a WebDAV server (hero_fossil) and serves a Dioxus WASM frontend.
Quick Start
git clone https://forge.ourworld.tf/lhumina_code/hero_filemanager.git
cd hero_filemanager
make run # Builds and starts backend (3394) + UI (8887)
Open http://localhost:8887 in your browser.
Architecture
Dioxus WASM UI (8887) ─── JSON-RPC ──> OServer Backend (3394) ─── WebDAV ──> hero_fossil (3387, embedded)
| Crate | Purpose |
|---|---|
hero_filemanager |
Main binary — starts OServer + embedded WebDAV server |
hero_filemanager_server |
RPC handlers, WebDAV client, OSIS types |
hero_filemanager_ui |
Dioxus 0.7 web frontend (WASM) |
hero_filemanager_sdk |
JSON-RPC client library (native + WASM) |
hero_filemanager_rhai |
Rhai scripting bindings (10 functions) |
Features
- Browse, search, upload, download, rename, copy, move, delete files
- Trash and restore with path-encoded
.trash/directory - Grid and list views with sortable columns and pagination
- Markdown editor with edit/split/preview modes, autosave, image embed
- Image viewer with zoom, rotate, gallery navigation
- PDF viewer, text viewer with syntax highlighting
- Drag-drop upload and drag-drop move (onto folders)
- Keyboard shortcuts (Ctrl+C/X/V/A, Delete, F2, Backspace)
- File info panel with metadata and copy-path
- Activity/audit log panel
- Context menus, inline rename, multi-select (shift+click)
- MCP endpoint for AI tool integration
Development
make help # Show all targets
make run # Build and run backend + UI
make dev # Same with RUST_LOG=debug
make check # Fast cargo check
make fmt # Format code
make lint # Clippy
Testing
make test # Rust unit tests (13)
make smoke-test # Curl-based HTTP/RPC tests (29)
make e2e-test # Playwright API tests (24)
make e2e-browser # Playwright browser tests (36, needs WEBDAV_AVAILABLE=1)
make test-all # Full CI suite (fmt, lint, check, test, build, smoke, e2e)
102 tests total covering all 10 RPC methods, serde compatibility, MCP endpoint, and all UI features.
Ports
| Service | Port |
|---|---|
| OServer backend | 3394 |
| Dioxus UI | 8887 |
| WebDAV (hero_fossil, embedded) | 3387 |
RPC API
All via POST /api/root/filemanager/rpc (JSON-RPC 2.0):
| Method | Params | Returns |
|---|---|---|
fileservice.list_directory |
path, sort_by, sort_order | Vec<FileEntry> |
fileservice.get_file_info |
path | FileEntry |
fileservice.create_folder |
path, name | FileEntry |
fileservice.rename_item |
old_path, new_name | FileEntry |
fileservice.move_items |
paths, destination, on_conflict | Vec<FileEntry> |
fileservice.copy_items |
paths, destination, on_conflict | Vec<FileEntry> |
fileservice.delete_items |
paths | bool |
fileservice.trash_items |
paths | bool |
fileservice.restore_items |
paths | bool |
fileservice.search |
query, path | Vec<FileEntry> |
File upload/download via WebDAV: GET/PUT http://localhost:3387/webdav/default/{path}
License
See repository for license information.