Skip to main content

NetJin is a lightweight web server implemented in Python using sockets. It provides a simple implementation of the HTTP protocol, allowing users to build and run web applications with ease.

Reason this release was yanked:

This project support python version >=3.10 but >=3.13 is enlisted.

Project description

NetJin - Simple Python Web Server Implementation

Overview

NetJin is a lightweight web server implemented in Python using sockets. It provides a simple implementation of the HTTP protocol, allowing users to build and run web applications with ease.

Features

  • Routing: Easily define routes for different URLs and HTTP methods.
  • Request Handling: Handle incoming HTTP requests and process them accordingly.
  • Response Rendering: Render HTML templates for generating dynamic content and return other responses as well.
  • Error Handling: Customizable error handling for managing HTTP errors.

Installation

You can install NetJin using pip:

pip install WebServer

Alternatively, you can clone or download the repository and include the NetJin file in your project directory.

Usage

  1. Import the necessary classes:

    from WebServer import WebServer, Request, Response
    
  2. Create an instance of the WebServer class:

    app = WebServer(debug=True)
    
  3. Define routes using the @app.route() decorator, specifying the URL path and supported HTTP methods. For example:

    @app.route("/", methods=["GET"])
    def home(request: Request, response: response) -> None:
        return response.render("index") # This corresponse to index.html
    
  4. Implement functions to handle each route, receiving Response and Request objects as parameters.

  5. Run the server:

    if __name__ == "__main__":
        app.run()
    

Settings

To configure your project, create a file named Settings.py in a directory named Configurations at the root of your project. Define the required variables as needed. For example:

from pathlib import Path
from typing import List

__all__ = [
    "BASE_DIR",

    "HOST",
    "PORT",
    "DEBUG",
    "ALLOWED_HOST",

    "TEMPLATE_DIRS",
    "STATIC_DIRS",
    "PUBLIC_DIR",
    "MEDIA_DIR",
]

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent.parent.parent

# Turn off (False) for production.
DEBUG: bool = True

# Server Configuration
HOST: str = "127.0.0.1"
PORT: int = 8000
ALLOWED_HOST: List[str] = []

# Path to HTML files
TEMPLATE_DIRS: str | List[str] = "templates"  # BASE_DIR / "templates"
# Path to static folders (Directory for CSS, JS, Image, etc.)
STATIC_DIRS: List[str] = ["statics"]  # BASE_DIR / "statics"
# Path for public directory (where non-static files are located.)
PUBLIC_DIR: str = "public"
# Path where media files are stored.
MEDIA_DIR: str = "media"

Examples

Check out the example directory for sample usage and demonstrations.

Dependencies

  • No external dependencies. Uses only Python's built-in socket module.

Contribution

Contributions are welcome! Feel free to fork the repository, make improvements, and submit pull requests.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Contact

For any inquiries or support, please contact acharyaraj.webserver@gmail.com or visit the GitHub profile.

.
├── config/
│   ├── settings.py
│   ├── __init__.py
│   └── other_app_configurations.py
├── static/
│   ├── csses
│   └── javascripts
├── media/
│   ├── images
│   └── videos
├── public/
│   ├── logo
│   ├── robot.txt
│   └── manifest.json
├── views/
│   ├── index.html
│   └── Other HTMLs
└── main.py

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

netjin-1.0.0.tar.gz (465.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

netjin-1.0.0-py3-none-any.whl (18.6 kB view details)

Uploaded Python 3

File details

Details for the file netjin-1.0.0.tar.gz.

File metadata

  • Download URL: netjin-1.0.0.tar.gz
  • Upload date:
  • Size: 465.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.13.0

File hashes

Hashes for netjin-1.0.0.tar.gz
Algorithm Hash digest
SHA256 34b914c86937700fdeffc8624011fca033df6134850b7e7d37eeb55cace33d59
MD5 90762c6c61153e90b038f7885a2dc259
BLAKE2b-256 03658a05e65ddb1b9a090177f8996c0a3e97eb3e5c7e9da3d52e35fde3880272

See more details on using hashes here.

File details

Details for the file netjin-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: netjin-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 18.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.13.0

File hashes

Hashes for netjin-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9394a27e16bd25a410ca498c7829672e00a2841d294195bbd60b29491a3a818e
MD5 2e80147e9feff00cf16b13be43164081
BLAKE2b-256 ae42f2a8dfb9dcbf8f554bdc0f907b1902e3d56bb9f19e884d912723cc671289

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page