Skip to main content

Nebula is a lightweight Python backend framework with middleware and routing, built on top of the standard http.server module. It allows you to create web applications quickly with simple, decorator-based routing.

Project description

Nebula

Nebula is a lightweight Python backend framework with middleware and routing, built on top of the standard http.server module. It allows you to create web applications quickly with simple, decorator-based routing.

Features

  • Lightweight: Built on Python's standard library with no external dependencies.
  • Decorator-based Routing: Define your routes with simple and intuitive decorators.
  • Template Loading: Easily load and serve HTML templates from a designated directory.
  • Easy to Use: Get a server up and running in just a few lines of code.

Installation

Since Nebula is self-contained and has no external dependencies, you can clone this repository to get started:

git clone https://github.com/your-username/nebula.git
cd nebula

pip install .

Usage

Here's a basic example of how to create a simple web server with Nebula.

First, create your main application file (e.g., main.py):

from nebula import Nebula , Response , jsonify
from pathlib import Path 

app = Nebula("localhost", 8000, True)
app.templates_dir = Path(__file__).resolve().parent / "templates"

@app.before_request
def func(request):
    print(f"received request on {request.route.path} with method {request.method}...")

@app.after_request
def func(request):
    print(f"successfully handled request on {request.route.path} with method {request.method}...")

@app.internal_error_handler
def internal_error():
    return Response('<h1 style="font-size: 100px;">something doesnt work.</h1>', 500)

@app.route("/" , methods=["GET" , "POST"])
def main():
    if app.request.method == "POST":    
        data = app.request.data.get_json()

        return jsonify({"greet": f"Hi, {data.get('name', 'default')}!"})

    return Response(app.load_template("test.html"), 200)

@app.route("/fruits")
def jsonTest():
    return jsonify({
        "fruits": {
            "apples": 6,
            "pears": 10,
            "mangos": 9
        } 
    })

app.run()

Next, create a templates directory and add an index.html file inside it:

templates/index.html:

<!DOCTYPE html>
<html>
<head>
    <title>Hello from Nebula!</title>
</head>
<body>
    <h1>Welcome to Nebula</h1>
    <p>This is a page served by the Nebula web server.</p>
</body>
</html>

Now, you can run your application:

python main.py

Open your browser and navigate to http://localhost:8000 to see your page.

License

This project is licensed under the terms of the LICENSE file.

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

nebula_core-0.2.0.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

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

nebula_core-0.2.0-py3-none-any.whl (5.8 kB view details)

Uploaded Python 3

File details

Details for the file nebula_core-0.2.0.tar.gz.

File metadata

  • Download URL: nebula_core-0.2.0.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for nebula_core-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e4ac55b500a72ed86f365ccfbe8d3c906a11aaebd90b4dcd5ad0f2b0b6ecd962
MD5 09ca76b515284d9746240458c076fa41
BLAKE2b-256 9e74b5467d8c38047bb2e520e80ecc1b7a2fdccbee770c5c81cf578cb29bba5e

See more details on using hashes here.

File details

Details for the file nebula_core-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: nebula_core-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 5.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for nebula_core-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5aee4963d0de04f371b3d6c1f76482acf9cc54caae212aceb91e615e547c5db0
MD5 99405239ec56d7eb5e4f972844051c5e
BLAKE2b-256 7b1b348dc15698f0d66fbec17d9e1ef0c8768a82d3209f129a0c85288b4dbffc

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