Adds project readme and mit license.

This commit is contained in:
2026-08-23 04:28:58 -07:00
parent a9c94adf0b
commit fd538b0406
3 changed files with 94 additions and 5 deletions

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Tom Hicks <headhunter3@gmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -0,0 +1,68 @@
# Nextcloud Upload Tool (`nut`)
A fast, cross-platform CLI tool and desktop GUI application for uploading files to Nextcloud and instantly generating direct download / public share links.
---
## Overview
**Nextcloud Upload Tool** is designed for quick terminal workflows and smooth desktop integration. It allows you to pipe or upload files directly to your Nextcloud instance, securely manage credentials via your OS keychain, and immediately copy shareable links.
### Key Features
- ⚡ **High-Performance Uploads**: WebDAV streaming uploads with real-time progress reporting and pipe support (`stdin`, `pv`).
- 🔗 **Instant Share Links**: Direct integration with Nextcloud's OCS Sharing API to generate public share URLs and direct-download links.
- 🔐 **Secure Credential Storage**: Native OS Keychain integration (macOS Keychain, Windows Credential Manager, Linux Secret Service) with encrypted file fallback.
- 👥 **Multi-Account Support**: Configure and switch between multiple Nextcloud accounts or self-hosted instances seamlessly.
- 🖥️ **CLI & GUI Frontends**: A lightweight terminal binary (`nut`) and a modern desktop application powered by Tauri.
---
## Project Structure
This repository is structured as a Cargo workspace:
```
.
├── nextcloud_client/ # Core Rust backend library (WebDAV, OCS API, Keyring, Config)
├── cli/ # Terminal CLI executable (`nut`)
├── gui/ # Desktop GUI application (Tauri + Web frontend)
├── Tasks.md # Canonical project roadmap and task tracking
└── README.md
```
---
## Getting Started
### Prerequisites
- [Rust](https://www.rust-lang.org/) (1.75+ recommended)
- A running [Nextcloud](https://nextcloud.com/) instance with WebDAV and sharing enabled
### Building the Workspace
Clone the repository and build the workspace crates:
```bash
# Build all workspace members
cargo build
# Run the CLI tool
cargo run -p nut -- --help
# Run tests
cargo test --workspace
```
---
## Roadmap & Tasks
Project tasks, feature specifications, and current progress are tracked in [Tasks.md](Tasks.md).
---
## License
This project is licensed under the [MIT License](LICENSE).

View File

@@ -105,12 +105,12 @@ This document defines the complete project roadmap and task tracking system for
Create the initial repository layout for the project, including the shared Rust backend library, CLI tool, and Tauri GUI application. This establishes the monorepo structure and build configuration.
**Requirements:**
- [ ] Create root-level Cargo workspace
- [ ] Create `nextcloud_client/` Rust crate
- [ ] Create `cli/` Rust crate
- [x] Create root-level Cargo workspace
- [x] Create `nextcloud_client/` Rust crate
- [x] Create `cli/` Rust crate
- [ ] Create `gui/` Tauri project
- [ ] Add `.editorconfig` and `.gitignore`
- [ ] Add README with project overview
- [x] Add `.editorconfig` and `.gitignore`
- [x] Add README with project overview
**Dependencies:**
None