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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e4ac55b500a72ed86f365ccfbe8d3c906a11aaebd90b4dcd5ad0f2b0b6ecd962
|
|
| MD5 |
09ca76b515284d9746240458c076fa41
|
|
| BLAKE2b-256 |
9e74b5467d8c38047bb2e520e80ecc1b7a2fdccbee770c5c81cf578cb29bba5e
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5aee4963d0de04f371b3d6c1f76482acf9cc54caae212aceb91e615e547c5db0
|
|
| MD5 |
99405239ec56d7eb5e4f972844051c5e
|
|
| BLAKE2b-256 |
7b1b348dc15698f0d66fbec17d9e1ef0c8768a82d3209f129a0c85288b4dbffc
|