fsbrowse
v0.2.19
Published
Minimal HTTP file server - standalone or embeddable Express middleware
Downloads
1,399
Maintainers
Readme
📂 fsbrowse — Minimal File Server
✨ Features
- Browse Files — List directories with file metadata
- Preview Files — Images, audio, video inline
- Drag-Drop Upload — Upload files with progress
- File Operations — Delete, rename, move, mkdir
- Responsive UI — Works on mobile
- Dark Mode — CSS prefers-color-scheme
- Path Security — All paths validated against directory traversal
🚀 Quick Start
bunx fsbrowseOpen http://localhost:3000
For development:
git clone https://github.com/AnEntrypoint/httpfs.git
cd httpfs
bun install # 5 seconds (2 dependencies only)
bun start # Instant - no build neededEnvironment Variables
PORT=3000 # Server port (default: 3000)
BASE_DIR=/files # Directory to serve (default: /files)
BASEPATH= # URL subpath prefix (default: empty, e.g., /files for http://example.com/files/...)📂 Architecture
Backend: server.js (378 LOC)
- Express server for file operations
- REST API:
/api/list,/api/upload,/api/download, etc. - Busboy for streaming multipart uploads
- Path injection prevention
Frontend: Vanilla JavaScript (784 LOC)
public/index.html— Pure HTML (no JSX)public/app.js— DOM manipulation + fetch APIpublic/style.css— Responsive CSS
Dependencies: 2 only
express— HTTP serverbusboy— Multipart form parsing
✅ Why Buildless Works
fsbrowse is a file browser + uploader. It needs:
- REST API endpoints (Express does this)
- HTML/CSS/JS frontend (browsers run this directly)
It does NOT need:
- Server-side rendering
- JSX compilation
- CSS frameworks
- Type checking at runtime
- Build optimization
Result: 99.4% smaller node_modules, 0 build time
📊 Metrics
| Metric | Before (Next.js) | After (Express) | Change | |--------|-----------------|-----------------|--------| | Dependencies | 47 packages | 2 packages | -95.7% | | node_modules | 746MB | 4.7MB | -99.4% | | Install time | 90s | 20s | -77% | | Build time | 39.5s | 0s | -100% | | Source code | 3105 LOC | 1161 LOC | -62.6% |
🛠 Development
npm start # Run serverEdit server.js, public/app.js, or public/style.css and refresh browser. No build step.
📜 License
MIT
