LMLK-seal/Web-Development-Server
A lightweight, professional-grade development server with live file watching and hot reload notifications for modern web applications.
๐ Professional Web Development Server
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.
โจ Features
- ๐ 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
๐ Requirements
- Python 3.6+
- Required packages (install via
pip install -r requirements.txt):watchdog- File system monitoringwebsockets- WebSocket support for live reload
๐ Quick Start
-
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
๐๏ธ Usage
Basic Usage
# 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.0Command Line Options
| Option | Short | Default | Description |
|---|---|---|---|
directory |
- | Current directory | Directory to serve |
--port |
-p |
3000 |
HTTP server port |
--host |
-H |
localhost |
Server host address |
๐๏ธ Project Structure
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
โโโ ...
โ๏ธ How It Works
๐ Live Reload System
- 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
๐ซ Anti-Caching Headers
The server automatically adds these headers to prevent browser caching:
Cache-Control: no-store, no-cache, must-revalidate
Pragma: no-cache
Expires: 0๐ฏ SPA Routing Support
- Serves
index.htmlfor all non-existent routes - Perfect for React Router, Vue Router, Angular Router, etc.
- Maintains clean URLs without hash routing
๐ง Configuration
Default Ports
- HTTP Server:
3000 - WebSocket Server:
3001
Environment Detection
The server provides helpful warnings if:
index.htmlis not found in the target directory- You're not running from a
distorbuildfolder
๐ Server Output
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.
==================================================
๐ ๏ธ Development
Dependencies
Download the requirements.txt file.
Extending the Server
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
๐จ Troubleshooting
Common Issues
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 + F5
On Mac:Cmd + Shift + R
Browser Compatibility
The live reload feature requires WebSocket support:
- โ Chrome 16+
- โ Firefox 11+
- โ Safari 7+
- โ Edge 12+
๐ License
This project is open source and available under the MIT License.
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Made with โค๏ธ for modern web development