diff --git a/Project.json b/Project.json new file mode 100644 index 0000000..aaf8aad --- /dev/null +++ b/Project.json @@ -0,0 +1,25 @@ +{ + "nextcloud-upload-tool": { + "id": "nextcloud-upload-tool", + "title": "Nextcloud Upload Tool", + "description": "Cross-platform CLI and desktop GUI for uploading files to Nextcloud and generating direct-download or public share links.", + "docId": "Nextcloud-Upload-Tool", + "image": { + "url": "PROMPT: Clean product screenshot-style illustration of a cross-platform Nextcloud file upload tool, showing a modern desktop upload queue with progress bars, a terminal window with a share URL, subtle Nextcloud-inspired blue accents, crisp technical portfolio asset, no readable text, wide landscape composition", + "alt": "Nextcloud Upload Tool desktop GUI and CLI", + "prompt": "Clean product screenshot-style illustration of a cross-platform Nextcloud file upload tool, showing a modern desktop upload queue with progress bars, a terminal window with a share URL, subtle Nextcloud-inspired blue accents, crisp technical portfolio asset, no readable text, wide landscape composition", + "width": 1600, + "height": 900, + "backgroundClassName": "bg-surface" + }, + "url": "/projects/nextcloud-upload-tool", + "tags": ["featured", "open-source"], + "source": { + "type": "github", + "url": "https://github.com/majinnaibu/nextcloud-upload-tool" + }, + "feedback": { + "url": "https://github.com/majinnaibu/nextcloud-upload-tool/issues" + } + } +} diff --git a/Project.md b/Project.md new file mode 100644 index 0000000..5a04519 --- /dev/null +++ b/Project.md @@ -0,0 +1,16 @@ +# Nextcloud Upload Tool + +Nextcloud Upload Tool (`nut`) is a fast, cross-platform command-line tool and desktop GUI for uploading files to Nextcloud and generating direct-download or public share links. + +- Built as a Rust workspace with a shared `nextcloud_client` library, CLI, and Tauri desktop GUI. +- Streams uploads over WebDAV with progress reporting, standard-input support, `pv` integration, and Unix pipeline support. +- Uses the Nextcloud OCS Sharing API to create public share links and direct-download URLs, including optional password protection. +- Stores credentials in native operating-system keychains, with an encrypted file fallback. +- Supports multiple Nextcloud accounts and self-hosted instances across the CLI and GUI. +- Provides drag-and-drop uploads, per-file and total progress, retry handling, and browser-based Login Flow v2 in the GUI. +- Includes JSON, TSV, URL-only, and direct-URL-only output modes for automation, plus headless SSH and CI authentication. +- Generates shell completions for Bash, Zsh, Fish, PowerShell, and Elvish. + +Repository: https://github.com/majinnaibu/nextcloud-upload-tool + +The project is released under the MIT License. diff --git a/README.md b/README.md index ee8f0c2..58d504c 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,65 @@ A fast, cross-platform CLI tool and desktop GUI application for uploading files --- +## Build and Install + +### Prerequisites + +- Rust toolchain +- Node.js 20+ and npm +- macOS Xcode Command Line Tools: `xcode-select --install` + +### Build the CLI + +Build the optimized release binary: + +```bash +cargo build --release -p nut +``` + +The binary is created at `target/release/nut`. To create a distributable archive, run: + +```bash +./scripts/build-cli.sh +``` + +The archive is written to `dist-packages/`. + +To install the CLI locally on macOS or Linux: + +```bash +mkdir -p ~/.local/bin +install -m 755 target/release/nut ~/.local/bin/nut +``` + +Make sure `~/.local/bin` is included in your `PATH`. + +### Build the GUI + +Build the frontend and package the native desktop application: + +```bash +cd gui +npm install +npm run tauri build +``` + +Alternatively, run the packaging helper from the repository root: + +```bash +./scripts/build-gui.sh +``` + +Installers and application bundles are created in `gui/src-tauri/target/release/bundle/`. On macOS, open the generated `.dmg` and drag **Nextcloud Upload Tool.app** into `/Applications`: + +```bash +open gui/src-tauri/target/release/bundle/dmg/*.dmg +``` + +See the [Installation Guide](docs/installation.md) for platform-specific prerequisites, installers, and source-build details. + +--- + ## Quick Start ### 1. CLI Usage