edit readme

This commit is contained in:
loki5512344 2026-07-11 00:14:14 +03:00
parent e7c02c7feb
commit 545dd4ed0b

View file

@ -1,43 +1,74 @@
# Wherry # Wherry
![Rust](https://img.shields.io/badge/Rust-000000?style=flat-square&logo=rust&logoColor=white) ![Rust](https://img.shields.io/badge/Rust-000000?style=flat-square&logo=rust&logoColor=white)
![egui](https://img.shields.io/badge/egui-FF5733?style=flat-square&logo=egui&logoColor=white) ![Tauri](https://img.shields.io/badge/Tauri_2-FFC131?style=flat-square&logo=tauri&logoColor=white)
![FTP](https://img.shields.io/badge/FTP/SFTP-0078D4?style=flat-square&logo=files&logoColor=white) ![FTP](https://img.shields.io/badge/FTP/SFTP-0078D4?style=flat-square&logo=files&logoColor=white)
![status](https://img.shields.io/badge/status-development-yellow?style=flat-square) ![status](https://img.shields.io/badge/status-development-yellow?style=flat-square)
![license](https://img.shields.io/badge/license-GPLv3-blue?style=flat-square) ![license](https://img.shields.io/badge/license-GPLv3-blue?style=flat-square)
FTP/SFTP клиент написанный на Rust с UI на egui/eframe. FTP/SFTP клиент на Tauri 2: бэкенд на Rust, фронтенд — vanilla HTML/CSS/JS.
## Стек ## Стек
- **egui/eframe** — нативный GUI (чистый Rust, без веба) - **Tauri 2** — нативная оболочка (Rust-бэкенд + WebView-фронтенд)
- **Rust** — протоколы, файловая система, очередь передач
- **tokio** — async runtime - **tokio** — async runtime
- **ssh2** / **suppaftp** — протоколы SFTP / FTP(S)
- **rusqlite** — локальное хранилище (сайты, история, закладки, настройки)
- **системный keychain** — хранение паролей (UI их не читает)
- фронтенд — чистые HTML/CSS/JS без сборщика, i18n на 12 языков
## Протоколы ## Протоколы
| Версия | Протоколы | | Протокол | Статус |
|--------|-------------------| |----------|--------------|
| v1 | SFTP, FTP, FTPS | | SFTP | реализован |
| v2 | S3, WebDAV | | FTP | реализован |
| v3 | Google Drive, Dropbox | | FTPS | заглушка |
## Возможности
- Chunked upload/download с событиями прогресса
- Pause/cancel в очереди передач
- Операции над удалёнными файлами: новая папка / удалить / переименовать
- Drag & drop, горячие клавиши (Cmd/Ctrl в зависимости от платформы)
- Welcome-экран: сохранённые сайты, недавние подключения, шорткаты
- Settings: General / Appearance / Connections / History / Security / Transfers / About
В разработке: полноценная реализация FTPS, Site Manager UI (создание/редактирование сайтов).
## Разработка ## Разработка
```bash ```bash
cargo run # запуск в dev-режиме (нужен tauri-cli: cargo install tauri-cli)
cargo tauri dev
# обычная сборка Rust-крейта
cargo build
``` ```
## Архитектура ## Архитектура
``` ```
src/ src/ -- Rust-бэкенд (Tauri)
├── domain/ -- модели данных (Connection, FileEntry, TransferTask, Site) ├── domain/ -- модели данных (Connection, FileEntry, TransferTask, Site)
├── protocols/ -- RemoteFs trait + sftp.rs, ftp.rs ├── protocols/ -- RemoteFs trait + sftp/, ftp/
├── transfer/ -- очередь, воркеры, прогресс ├── transfer/ -- очередь, воркер, прогресс
├── storage/ -- SQLite (сайты), keychain (пароли) ├── storage/ -- SQLite (sites, history, bookmarks, settings) + keychain (пароли)
├── fs/ -- локальная ФС + реестр удалённых соединений ├── fs/ -- локальная ФС + реестр удалённых соединений
├── ui/ -- egui панели (в разработке) ├── i18n/ -- строки для бэкенда
└── main.rs -- точка входа eframe ├── commands.rs -- Tauri-команды (IPC для фронтенда)
├── lib.rs / main.rs -- точки входа
└── tauri.conf.json -- конфигурация приложения
frontend/ -- фронтенд (vanilla JS, без сборщика)
├── js/
│ ├── components/ -- UI-компоненты
│ ├── i18n/ -- локали (en, ru, de, fr, es, it, pt, pl, tr, ja, ko, zh)
│ ├── ipc.js -- обёртка над Tauri IPC
│ └── main.js -- точка входа
└── css/ -- theme, layout, components
``` ```
## Лицензия
GPL-3.0-only, см. [LICENSE](LICENSE).