Skip to content

Hour Share Documentation

Introduction

Hour Share is a local web tool for sharing files and text across devices on the same Wi-Fi network. It consists of a quick Node.js CLI runner and a Python Flask server that serves a web dashboard. By scanning a QR code, any device can instantly access the dashboard to upload, download, and share content β€” no internet connection or account required.

Features

  • QR Connect β€” Scan a QR code from the dashboard to open it on any device in the same Wi-Fi.
  • File Upload & Download β€” Upload files up to 100 MB each. Download with one click β€” password-gated.
  • Text Sharing β€” Paste text, snippets, or links and share them instantly via the receive panel.
  • Password Protection β€” bcrypt password per bundle and per group β€” secure even on shared networks.
  • Auto-Expire β€” All bundles, groups, and their items auto-expire after 60 minutes β€” no disk clutter.
  • Group Chat β€” Create or join a group with a name and password β€” share files and text in real-time.

Installation

Install globally via npm and run:

# Install globally
npm install -g hourshare

# Start Hour Share
hourshare

Build from Source

# Clone the repository
git clone https://github.com/Curzyori/hour-share.git
cd hour-share

# Set up Python environment
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

# Run the server directly
python3 server.py

Tech Stack

  • CLI: Node.js (vanilla, no deps)
  • Server: Python 3.10+, Flask 3
  • Frontend: Vanilla HTML/CSS/JS (no build step)
  • Auth: bcrypt password per bundle
  • Storage: File-based JSON (no DB)
  • License: MIT

How It Works

Hour Share runs a Python Flask server on your local machine, serving a web dashboard over HTTP. The Node.js CLI (`hourshare`) launches the server in the background, opens the dashboard URL in your browser, and displays a QR code. Any device on the same Wi-Fi can scan the QR code to open the dashboard. Files and text are stored in JSON files on the server and expire after 60 minutes. Optional password protection uses bcrypt to keep your transfers secure.