An extensive web framework adding every feature needed for Carbonlab
Project description
Vesta 🍒
V1 — Harpie · A batteries-included Python web framework.
Vesta is a strongly opinionated, minimalist framework for building full-stack web
applications. Routing, a PostgreSQL ORM, authentication, mailing, WebSockets, and a
companion JavaScript front-end library all ship in a single package — so you can go
from vesta init to a running app without wiring together a dozen dependencies.
✨ Features
- HTTP server — fast WSGI-based routing with a simple
@exposedecorator - WebSocket server — real-time messaging and notifications
- PostgreSQL ORM — lightweight, parameterized query helpers
- uniauth — built-in authentication: JWT sessions, email verification, password reset
- Mailing — SMTP delivery with DKIM signing and HTML templates
- Front-end library — reactive HTML templating, navigation, i18n, and a Markdown renderer
- Tooling — project scaffolding, DB management, and nginx/systemd setup via one CLI
📋 Requirements
- Python 3.8+
- PostgreSQL (used by the ORM and uniauth)
⏬ Installation
pip install vesta-web
Or install the latest from source control:
pip install git+https://gitlab.com/Louciole/vesta.git/
Minimal example
from vesta import Server
from os.path import abspath, dirname
PATH = dirname(abspath(__file__))
class App(Server):
features = {"errors": {404: "/static/404.html"}}
@Server.expose
def index(self):
return self.file(PATH + "/static/home/home.html")
@Server.expose
def hello(self, name="world"):
return f"Hello, {name}!"
App(path=PATH, configFile="/server.ini")
A method decorated with @Server.expose becomes a route: index is served at /,
and hello at /hello (query/JSON/form parameters are passed as arguments).
🛠️ CLI
| Command | Description |
|---|---|
vesta init |
Scaffold a new project (choose server type & features) |
vesta install |
Install front-end dependencies declared in the project |
vesta update |
Update the bundled front-end libraries |
vesta test |
Run the project's test suite |
vesta db create |
Create and initialize the database (+ uniauth) |
vesta db init |
Initialize the schema on an existing database |
vesta db reset |
Drop and re-initialize the database |
vesta nginx setup |
Install an nginx site config |
vesta service setup |
Install and enable a systemd service |
⚙️ Configuration
Settings live in server.ini (parsed with ConfigParser). A typical file:
[server]
IP = 0.0.0.0
PORT = 9876
DEBUG = true
DEFAULT_ENDPOINT = /
SERVICE_NAME = MyApp
[security]
SECRET_KEY = change-me # signs JWT sessions — use a long random value
[DB]
DB_USER = myapp
DB_PASSWORD = ...
DB_NAME = myapp
DB_HOST = localhost
DB_PORT = 5432
Keep secrets out of version control.
server.iniholds credentials and the JWT signing key — don't commit a real one. To stop tracking changes to a local copy:git update-index --assume-unchanged server.ini.
📚 Documentation
Full guides and the API reference: https://louciole.gitlab.io/vesta-docs/
📁 Build from source
python3 -m pip install --upgrade build
python3 -m build
pip install dist/vesta_web-*.whl
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 vesta_web-1.2.16.tar.gz.
File metadata
- Download URL: vesta_web-1.2.16.tar.gz
- Upload date:
- Size: 24.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
75f7dad5a6c12dae0491799a1f0b4d6785389427934a15bfd9f604ec48f2a7a0
|
|
| MD5 |
b675aebdc13d44ac19d4be845adb76af
|
|
| BLAKE2b-256 |
6e7dec0d5fa387b8e32924e571ad6a4d6eaf9e21d058212ab927f9abe9a3cdea
|
File details
Details for the file vesta_web-1.2.16-py3-none-any.whl.
File metadata
- Download URL: vesta_web-1.2.16-py3-none-any.whl
- Upload date:
- Size: 68.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
227f5b75654a3ca4a61833dd46bced282d3f10892a0604c2e6c865bd8ad4f4ed
|
|
| MD5 |
ebe4f78f204383f72ff121ef265c53b7
|
|
| BLAKE2b-256 |
7704a3cb40fc233f2e778723fc00b417cfca53379bb269f3689b1dbb60a651ef
|