Just Light Development (JLD) is a custom asynchronous Python web framework built on ASGI, designed to be lightweight and efficient. It leverages the power of Jinja2 for templating and Uvicorn for high-performance ASGI server execution. With support for both function-based and class-based views, JLD provides a simple yet robust platform for developing modern web applications.
- Asynchronous Request Handling: Built on the ASGI standard for scalable, high-performance web applications.
- Routing: Dynamic routing with support for GET and POST methods.
- Template Rendering: Built-in integration with Jinja2 for dynamic HTML rendering.
- Function-Based and Class-Based Views: Flexibility to define views in the style you prefer.
- Lightweight and Fast: Designed to be minimal yet powerful, running on Uvicorn.
⚠️ EXPERIMENTAL PROJECT – NOT FOR PRODUCTION USE
This repository is an experimental / research project created for learning, testing ideas, and proof-of-concept work.
- This project is NOT production-ready
- Security, stability, performance, and backward compatibility are NOT guaranteed
- There may be critical bugs, incomplete features, or unsafe defaults
- In production environments
- In systems requiring high availability or security guarantees
- Learning and experimentation
- Prototyping
- Personal or educational projects
- Research and exploration
Status: Experimental
Maintenance: Best-effort
Stability: Unstable
You can install the framework directly from GitHub using pip:
pip3 install git+https://github.com/Subhodip1307/Just_Light_DevelopmentDefine your routes using the @app.route() decorator. Specify the HTTP methods you want to support:
from jld import Template
from jld import app as APP
render = Template()
app=APP()
@app.route("/submit", methods=["POST"])
async def submit(request):
name = request.POST.get("name", "Anonymous")
return render.render("result.html", {"name": name})Use Jinja2 to render dynamic HTML templates:
from jld import Template
from jld import app as APP
render = Template()
app=APP()
@app.route("/submit", methods=["POST"])
async def submit(request):
name = request.POST.get("name", "Anonymous")
return render.render("result.html", {"name": name})-
Dynamic Routing:
- Easily map URLs to Python functions or methods.
- Supports multiple HTTP methods (GET, POST, etc.).
-
Request Handling:
- Access GET and POST data through the
Requestobject. - Parse headers, query strings, and request bodies effortlessly.
- Access GET and POST data through the
-
Template Rendering with Jinja2:
- Use the
Templateclass to render HTML with dynamic data. - Example:
render.render("template.html", {"key": "value"})
- Use the
-
ASGI Compatibility:
- Fully compatible with ASGI servers like Uvicorn, ensuring high performance and scalability.
-
Class-Based Views:
- Define reusable, modular views using classes (future scope).
We welcome contributions! If you'd like to improve this framework, feel free to:
- Fork the repository.
- Create a new branch:
git checkout -b feature/your-feature-name
- Commit your changes:
git commit -m "Add your message here" - Push to the branch:
git push origin feature/your-feature-name
- Open a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.
- Jinja2: For its powerful templating capabilities.
- Uvicorn: For providing a lightning-fast ASGI server.
- Python: The language that makes it all possible.
Thank you for using Just Light Development! 🌟