A lightweight, feature-rich development server designed for modern web applications with automatic live reload, anti-caching headers, and SPA (Single Page Application) routing support.
- π Live Reload - Automatic browser refresh when files change
- π« Anti-Caching - Prevents browser caching during development
- π― SPA Support - Handles client-side routing for single-page applications
- β‘ Fast & Lightweight - Minimal overhead with efficient file watching
- ποΈ Configurable - Customizable host, port, and directory settings
- π Smart Directory Detection - Automatically detects
distandbuildfolders - π§ Professional Logging - Clean, informative console output
- Python 3.6+
- Required packages (install via
pip install -r requirements.txt):watchdog- File system monitoringwebsockets- WebSocket support for live reload
-
Install dependencies:
pip install -r requirements.txt
-
Run the server:
python Server.py
-
Or specify a custom directory:
python Server.py /path/to/your/project/dist
# Serve current directory on default port (3000) python Server.py # Serve specific directory python Server.py ./dist # Custom port python Server.py --port 8080 # Custom host python Server.py --host 0.0.0.0 # Combined options python Server.py ./build --port 8080 --host 0.0.0.0| Option | Short | Default | Description |
|---|---|---|---|
directory | - | Current directory | Directory to serve |
--port | -p | 3000 | HTTP server port |
--host | -H | localhost | Server host address |
This server is designed to work with modern web application builds:
your-project/ βββ dist/ # Built application files β βββ index.html # Main HTML file β βββ assets/ # Static assets β β βββ main.js # JavaScript bundles β β βββ style.css # Stylesheets β β βββ ... β βββ ... βββ Server.py # This development server βββ requirements.txt # Python dependencies βββ ... - File Watcher: Monitors your project directory for changes
- WebSocket Connection: Establishes real-time communication with the browser
- Debounced Updates: Prevents excessive reloads with 300ms delay
- Smart Filtering: Ignores Python files and directories
The server automatically adds these headers to prevent browser caching:
Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Expires: 0- Serves
index.htmlfor all non-existent routes - Perfect for React Router, Vue Router, Angular Router, etc.
- Maintains clean URLs without hash routing
- HTTP Server:
3000 - WebSocket Server:
3001
The server provides helpful warnings if:
index.htmlis not found in the target directory- You're not running from a
distorbuildfolder
When running, you'll see a professional dashboard:
================================================== π Professional Development Server is Running π - HTTP Server: http://localhost:3000 - Live Reload: Enabled - Caching: Disabled Watching for file changes... Press Ctrl+C to stop. ================================================== Download the requirements.txt file.
The server is built with modularity in mind:
DebouncedReloadHandler: Custom file system event handlerSPAEnabledHandler: HTTP request handler with SPA support- WebSocket server for live reload communication
Port already in use:
python Server.py --port 8080Permission denied:
# Use a port > 1024 for non-root users python Server.py --port 3000Live reload not working:
- Check that WebSocket port (3001) is not blocked
- Ensure your browser supports WebSocket connections
- Verify that the
index.htmlfile contains the</body>tag for script injection - When still having cache issues try browser-Side Manual Fix: Forcing your browser to ignore its cache for a single request. On Windows/Linux:
Ctrl + Shift + RorCtrl + F5On Mac:Cmd + Shift + R
The live reload feature requires WebSocket support:
- β Chrome 16+
- β Firefox 11+
- β Safari 7+
- β Edge 12+
This project is open source and available under the MIT License.
Contributions are welcome! Please feel free to submit a Pull Request.
Made with β€οΈ for modern web development