Installation manuelle (développement)
Utile pour contribuer au code source ou pour débuguer.
Prérequis
- Rust 1.75+ (
rustup install stable) - Node.js 24+ — la version est figée dans
frontend/.node-version - PostgreSQL 14+
- rclone installé localement (
brew install rclone/apt install rclone) - apprise-go (optionnel, pour les notifications)
Backend
cd backend
export DATABASE_URL="postgresql://user:password@localhost:5432/rclone_ui"
cargo run
Le serveur démarre sur http://localhost:3000. Les migrations sont appliquées au démarrage.
Pour lancer en mode optimisé :
cargo build --release
./target/release/rclone-replication-ui
Lint et formatage
cargo fmt # formatage
cargo clippy # lint
cargo build # vérifie la compilation
Healthcheck CLI
Le binaire accepte un flag --health qui se connecte à la BDD, exécute SELECT 1 et quitte. Pratique pour les healthchecks Docker.
./target/release/rclone-replication-ui --health
# OK
Frontend
Avec nvm :
cd frontend
nvm use # lit .node-version → Node 24
npm install
npm run dev
Le serveur Vite démarre sur http://localhost:5173 et proxifie automatiquement /api/* vers le backend (configuré dans vite.config.ts).
Commandes utiles
npm run build # build production dans dist/
npm run lint # ESLint
npm run preview # serveur statique pour tester le build
Base de données locale
Option 1 : avec Docker
docker run -d --name postgres-rclone \
-e POSTGRES_USER=rclone \
-e POSTGRES_PASSWORD=rclone \
-e POSTGRES_DB=rclone_ui \
-p 5432:5432 \
postgres:18-alpine
Option 2 : avec Postgres.app (macOS) ou un service système.
Structure du repo
rclone-replication-ui/
├── backend/ # Crate Rust
│ ├── src/
│ │ ├── entities/ # Entités SeaORM
│ │ ├── migration/ # Migrations BDD
│ │ ├── models/ # DTO requête/réponse
│ │ ├── routes/ # Handlers API
│ │ ├── services/ # Logique métier
│ │ │ ├── secrets/ # SecretStore (7 providers)
│ │ │ └── oauth/ # Flow OAuth (Dropbox, Drive, OneDrive)
│ │ └── sse/ # Server-Sent Events
│ └── Cargo.toml
├── frontend/ # App React/TS
│ └── src/
│ ├── pages/
│ ├── components/
│ ├── hooks/
│ └── api/
├── docs/ # Cette documentation (Jekyll)
├── docker-compose.yml # PostgreSQL externe
└── docker-compose.postgres.yml # PostgreSQL inclus