Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

A lightweight and modern Python web framework designed for speed, simplicity, and a great developer experience.

License

Notifications You must be signed in to change notification settings

Jsweb-Tech/jsweb

Repository files navigation

JsWeb Logo

The Blazing-Fast ASGI Lightweight Python Web Framework

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

PyPI version License Downloads

Discord Documentation Sponsor GitHub PayPal Sponsor


πŸ† Contributors

Contributors

About JsWeb

JsWeb is a modern, high-performance Python web framework built from the ground up on the ASGI standard. It's designed for developers who want the speed of asynchronous programming with the simplicity of a classic framework. With built-in, zero-configuration AJAX and a focus on developer experience, JsWeb makes it easy to build fast, dynamic web applications without writing a single line of JavaScript.

Why Choose JsWeb?

  • ⚑ Lightning Fast - ASGI-based async framework handles thousands of concurrent connections
  • 🎯 Developer Experience - Simple, intuitive API inspired by Flask with modern features
  • πŸš€ Full-Stack Ready - Everything you need: routing, forms, templates, database, admin panel
  • πŸ”„ Zero-Config AJAX - Automatic SPA-like experience without JavaScript
  • πŸ›‘οΈ Security First - CSRF protection, secure sessions, password hashing built-in
  • πŸ“¦ Production Ready - Auto-generated admin panel, API docs, and more

✨ Core Features

  • πŸš€ Blazing-Fast ASGI Core - Built for speed and concurrency, compatible with servers like Uvicorn
  • πŸ”„ Zero-Config AJAX - Forms and navigation automatically handled for a smooth SPA feel
  • πŸ›£οΈ Elegant Routing - Simple decorator-based route definition
  • 🎨 Jinja2 Templating - Powerful templating engine with inheritance and macros
  • πŸ›‘οΈ Built-in Security - CSRF protection, password hashing, and secure session management
  • πŸ“ Full-Featured Forms - Form validation, file uploads, and field types
  • πŸ—„οΈ SQLAlchemy Integration - ORM with Alembic migrations included
  • βš™οΈ Automatic Admin Panel - Production-ready data management interface generated automatically
  • 🧩 Modular Blueprints - Organize code into clean, reusable components
  • πŸ› οΈ Powerful CLI - Create projects, run server, and manage database from command line
  • πŸ“š Auto API Documentation - OpenAPI 3.0.3 docs at /docs, /redoc, and /openapi.json
  • πŸ” Hybrid DTO System - Uses Pydantic v2 internally with clean JsWeb API

πŸš€ Quick Start (30 seconds)

1. Install JsWeb

pip install jsweb

2. Create a Project

jsweb new my_project
cd my_project

3. Run the Server

jsweb run --reload

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


πŸ“ Basic Example

Here's a simple but complete JsWeb application:

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", {"name": "World"})
@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)
# Run with: jsweb run --reload

That's all you need for a working application!


πŸ“– Installation & Setup

Get up and running in under a minute.

Prerequisites

  • Python 3.8+ (Python 3.10+ recommended)
  • pip (Python package manager)
  • A text editor or IDE

Step 1: Create Virtual Environment

# Create and activate virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate

Step 2: Install JsWeb

pip install jsweb

Step 3: Create New Project

jsweb new my_awesome_app
cd my_awesome_app

Step 4: Setup Database (Optional)

jsweb db prepare -m "Initial migration"
jsweb db upgrade

Step 5: Run Development Server

jsweb run --reload

Visit http://127.0.0.1:8000 - your app is running! πŸŽ‰


πŸ› οΈ Command-Line Interface (CLI)

JsWeb includes powerful CLI tools to streamline development:

jsweb run - Start Server

jsweb run --reload # Auto-reload on changes
jsweb run --host 0.0.0.0 # Accessible from network
jsweb run --port 5000 # Custom port
jsweb run --reload --qr # QR code for mobile access

jsweb new - Create Project

jsweb new my_project # Create new project with boilerplate
cd my_project

jsweb db - Database Management

jsweb db prepare -m "Message" # Generate migration
jsweb db upgrade # Apply migrations
jsweb db downgrade # Revert last migration

jsweb create-admin - Admin User

jsweb create-admin # Interactive admin user creation

πŸ“š Documentation

Complete documentation available at https://jsweb-framework.site

Core Guides


🌟 Key Concepts

Blueprints - Modular Organization

Organize your application into logical modules:

from jsweb import Blueprint
# Create a blueprint
auth_bp = Blueprint('auth', url_prefix='/auth')
@auth_bp.route('/login', methods=['GET', 'POST'])
async def login(req):
 return render(req, 'login.html')
@auth_bp.route('/logout')
async def logout(req):
 return redirect('/')
# Register in app.py
app.register_blueprint(auth_bp)

Forms with Validation

Built-in form handling with validation:

from jsweb.forms import Form, StringField
from jsweb.validators import DataRequired, Email
class LoginForm(Form):
 email = StringField("Email", validators=[DataRequired(), Email()])
 password = StringField("Password", validators=[DataRequired()])
@app.route("/login", methods=["GET", "POST"])
async def login(req):
 form = LoginForm(await req.form())
 if form.validate():
 # Handle login
 pass
 return render(req, "login.html", {"form": form})

Database Models

Define models with SQLAlchemy:

from jsweb.database import ModelBase, Column, Integer, String
class User(ModelBase):
 __tablename__ = 'users'
 id = Column(Integer, primary_key=True)
 username = Column(String(80), unique=True, nullable=False)
 email = Column(String(120), unique=True, nullable=False)
# Query the database
user = User.query.get(1)
users = User.query.all()
new_user = User.create(username="john", email="john@example.com")

Admin Panel

Auto-generated admin interface:

from jsweb.admin import Admin
admin = Admin(app)
admin.register(User)
admin.register(Post)
admin.register(Category)
# Access at http://localhost:8000/admin

🀝 Community & Support


πŸ‘₯ Contributing

We welcome contributions from the community! Whether you want to fix a bug, add a feature, or improve documentation:

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Submit a pull request

See Contributing Guide for details.


πŸ“Š Project Status

  • Status: Active Development
  • Python: 3.8+
  • License: MIT
  • Latest Version: Check PyPI

πŸ“„ License

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


Made and Maintained by the JsWeb team
Join our Discord community β€’ Sponsor us

About

A lightweight and modern Python web framework designed for speed, simplicity, and a great developer experience.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 5

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /