nlfmt-serve 0.5.3

quickly serve files from a directory in your local network
Documentation

serve

Quickly serve and receive files to/from anyone on your local network, using an easy web ui

serve ui example

Features

  • Easy and quick Uploads
  • Zip Folder downloads
  • Rename/Delete Files and Folders
  • QR Code to connect
  • Password Protection
  • Sane Defaults
  • Fast, thanks to rust backend
  • Goodlooking UI

Installation

Using cargo:

cargo install nlfmt-serve

serve --help

From source:

git clone https://github.com/nlfmt/serve

cd serve

# build frontend

cd app && pnpm i && pnpm build

cd .. && cargo install --path .

serve --help

Using the pre-built binaries: Go to the latest release and download the file for your operating system. Move it to any folder you want and add it to your PATH.

Usage

serve [args] [path]

When running the serve command without any arguments, it will serve the current directory on port 3000, with all extra features like upload, file operations turned off.

Here is a list of flags available, or just run serve --help

serve -p 4001      # run on port 4001

serve -i 127.0.0.1 # only run on localhost (default is all interfaces - 0.0.0.0)


serve -u           # enable uploads

serve -q           # print QR Code when starting

serve -s           # resolve symbolic links when serving files/folders

serve -r           # allow renaming files

serve -d           # allow deleting files

serve -o           # allow overwriting files during upload


# you can combine these options

serve -uqs  # enable upload & symlinks, print QR Code


# add username & password

serve -a user:pass

# file of logins formatted as user:pass separated by newlines

serve --auth-file ./mylogins.txt

Feature Plan

  • add download folder as zip or tar.gz
  • Uploads
    • upload button in breadcrumbs, popup with drop zon
    • drop zone anywhere in the window -> upload to current folder
    • drop zone on folders => upload to that folder
  • folder uploads (locked behind flag)
  • dont download symlinks, unless specified with flag
  • allow setting a password & username
    • --auth, -a, or --auth-file (maybe hashed?)
  • show error message when path was not found with a button "back to root"
  • add logging to file
  • add progress bar popup
  • add support for multiple interfaces via -i, --interface
  • support for custom headers
  • tls support via --tls-cert and --tls-key
  • context menu
    • allow creating directories
    • file/folder info popup
    • delete/rename ? (secured behind flag)
  • add right click action api & args
    • rename
    • delete
    • create folder
  • add qr code button on mobile
  • lock zip generation behind flag, add tar/tar.gz
  • show symlink symbol in UI
  • add good error logging in cli
  • automated compile pipeline with releases
  • recursive file search (streamed)
  • custom download ui & progress
  • chunked uploads & download
    • resumable uploads & downloads
  • insert prev name in rename dialog and select the text
  • allow moving files/folders using drag and drop
  • add update command
    • check install source, either use cargo or github release
    • show update notice when running