Skip to content

A simple cross-platform remote file management tool to upload and download files over HTTP/S - Alternative to Updog

License

Notifications You must be signed in to change notification settings

sexnine/downcat

Repository files navigation

Downcat

A simple cross-platform remote file management tool to upload and download files over HTTP/S

📜 License ✨ Features 🎉 Install 🎁 Releases

Built with Rust Built with Vue Built with Typescript Built with TailwindCSS

✨ Features

Fast - Quick startup, performant API

Easy to install - No dependencies*, just one command

🗂 Upload and download files easily - Using HTTP/S with a sexy web UI

🌈 Cross platform - Windows, Linux and macOS support

*Except for unzip to extract the executable from the archive

🎉 Install

Automated install (Linux only)

⚠ You should not run scripts off the internet without checking them first. You can view the install script here.

You can run an automated install of downcat using the command below. It is highly recommended you run it as root to avoid any permissions-related problems.

curl -sSL https://raw.githubusercontent.com/sexnine/downcat/main/install/downcat_linux.sh | sudo bash

Manual install

  1. Download the latest binary from the releases tab
  2. Unzip the file
  3. Place the executable into your path
  4. Make it executable
  5. Run with downcat

Build it yourself

See 🏗 Building and other info under ⚙ Development and follow steps 3-5 just above.

🤔 Usage

Run downcat to serve your current directory and then open the link in your browser

~$ downcat
🐈 Starting downcat...

✅ Downcat v0.3.2 running!
✨ Listening on http://192.168.0.23:3030/

See extra options by viewing the help with downcat -h or downcat --help

You can update downcat to the latest available version using downcat update

Downcat is not meant to be used as a web server. It is meant to be used as a quick and easy file management utility for when you quickly need to up/download a file from a server.

💎 All options

Argument Description Default Value
-h, --help Shows help message
-V, --version Shows version
--disable-update-check Disables update check on startup Check for updates
-p, --port <port> Port to listen on 3030
--ssl Enables SSL (Recommended) Off
-P, --password <password> Sets a password for accessing downcat and the APIs (Recommended).
Will need to reauthenticate when restarting downcat, even when using the same password.
None
-b, --bind <host> The IP to listen on Local IP (or 0.0.0.0 if couldn't get local IP)

🛠 Development

📜 Prerequisites NodeJS & NPM Rust & Cargo
  • Clone the repo git clone https://github.com/sexnine/downcat.git
  • Go into the project's directory cd downcat/

⚙ Installing Dependencies

  • Go into the frontend directory cd frontend/
  • Install NPM dependencies with npm i
  • Rust dependencies will automatically install when building or running the project with cargo build & cargo run respectively.

▶ Running

Frontend

  • Go into the frontend directory cd frontend/
  • Run the dev server with npm run dev. The dev server supports hot reloading.
  • Modify the API endpoint in .env.development if you need to.

Note: While developing, the frontend and backend should be run separately. When building a release version, the frontend's files will be embedded into the rust binary.

Backend

  • Simply run with cargo run in the project root.

🏗 Building

  1. Build the frontend
    1. Go into the frontend directory cd frontend/
    2. Install dependencies if you haven't already with npm i
    3. Build the frontend with npm run build
  2. Build using cargo build --release

🛣 Roadmap

  • Retrieve Files and Folders v0.1.0
    • Get metadata v0.1.0
    • Sort file list v0.1.0
    • Search file list v0.3.2
    • Enhanced File Icons
    • Download multiple files
    • Directory History v0.1.0
  • Uploading Files v0.3.0
    • Uploading multiple files v0.3.2
    • Uploading Folders
  • Managing Files/Folders
    • Renaming
    • Deleting
    • Moving
    • Copying
  • SSL v0.2.0
    • Optionally enable SSL using --ssl flag
  • Password Authentication v0.1.0
  • Updater v0.2.0
    • Checks for updates v0.2.0
    • downcat update to perform a self-update v0.2.0
  • Cross Platform support
    • Windows
    • Linux
    • MacOS v0.3.1
  • Allow downcat to access any directory
    • With the --any flag, downcat will be able to access any directory or files it has permissions to

❤ Acknowledgements

  • @sc0tfree for the original inspiration for this project (updog)
  • @jethr0-1 (jethro#1547 on Discord) for making a Linux install script for downcat

Made with 💖 by sexnine