Skip to content

Home

JsWeb Logo

The Blazing-Fast, Modern ASGI Python Web Framework

Build full-stack web apps and APIs with zero JavaScript. Pure Python, pure speed.

PyPI version Supported Python versions License Downloads

Discord Documentation GitHub


πŸ’ Sponsors πŸ’

As of now we don't have any sponsors

Love JsWeb? Help us keep the project alive and growing! We're looking for sponsors to support ongoing development.

πŸ’– Sponsor on GitHub πŸ’³ Donate on PayPal


✨ Why JsWeb?

Modern Architecture

Built on ASGI for blazing-fast performance and true async support. Handle thousands of concurrent connections effortlessly.

Zero Configuration

  • Automatic AJAX: Forms and navigation work like a Single Page Applicationβ€”without writing JavaScript
  • Built-in Admin Panel: Production-ready interface generated automatically from your models
  • Automatic API Docs: OpenAPI 3.0.3 documentation generated at /docs and /redoc

Developer First

  • Simple Routing: Elegant decorator-based route definition
  • Powerful CLI: Create projects, manage migrations, and run your server with simple commands
  • Modular Blueprints: Organize code into reusable, maintainable components
  • Full-Featured Forms: Validation, CSRF protection, and file uploads built-in

Production Ready

  • Security Built-in: CSRF protection, secure sessions, password hashing
  • Database Support: SQLAlchemy with Alembic migrations for any SQL database
  • Jinja2 Templates: Powerful templating for dynamic HTML rendering
  • Modular Design: Scale from single-file apps to enterprise applications

πŸš€ Quick Start (30 seconds)

1. Install

pip install jsweb

2. Create Project

jsweb new my_project
cd my_project

3. Run

jsweb run --reload

That's it! Visit http://127.0.0.1:8000 and your app is live! πŸŽ‰


πŸ’‘ See It In Action

views.py - Define your routes

from jsweb import Blueprint, render

views_bp = Blueprint('views')

@views_bp.route("/")
async def home(req):
    return render(req, "welcome.html", {"user_name": "Guest"})

@views_bp.route("/api/status")
async def status(req):
    return {"status": "online", "message": "Hello from JsWeb!"}

app.py - Wire it all together

from jsweb import JsWebApp
from views import views_bp
import config

app = JsWebApp(config=config)
app.register_blueprint(views_bp)

That's all you need for a working full-stack application!


πŸ“Š Key Features at a Glance

Feature Benefit
πŸš€ ASGI Framework Lightning-fast async I/O, handles thousands of requests
πŸ”„ Zero-Config AJAX Forms and navigation work like SPAs, no JavaScript needed
πŸ—„οΈ SQLAlchemy + Alembic Powerful ORM with seamless migrations
πŸ›‘οΈ Security Built-in CSRF, secure sessions, password hashing by default
βš™οΈ Auto Admin Panel Production-ready data management interface
🧩 Blueprints Organize code into modular, reusable components
🎨 Jinja2 Templates Powerful template engine with inheritance and macros
πŸ“š Auto API Docs OpenAPI documentation generated automatically
πŸ› οΈ Powerful CLI Project scaffolding, server, migrations all in one
πŸ“± Responsive Works beautifully on all devices

πŸ“– Next Steps

Ready to build your next amazing project?

πŸ“š Get Started Guide πŸ”§ View Source Code πŸ’¬ Join Community


πŸ“š Complete Documentation

Explore detailed guides and references:


🀝 Community & Support


πŸ“„ License

JsWeb is licensed under the MIT License - free for personal and commercial use.