Fymo Framework
Production-ready Python SSR Framework for Svelte 5
Build modern web applications with Python backend and Svelte 5 frontend
Features
- Build-time esbuild pipeline — components compiled to hashed
dist/client/*.jsonce, served as cacheable static assets. - Cross-route shared chunks — packages imported by multiple pages (e.g.
date-fns) are bundled once and shared. - Persistent Node sidecar SSR — Python WSGI app talks to a long-lived Node process over stdio JSON; the sidecar imports prebuilt SSR modules and renders per request in microseconds.
- Minimal HTML response — typical page is < 10 KB; bundles loaded via
<link rel="modulepreload">+<script type="module" src=...>. fymo devwatcher — incremental rebuilds on save with SSE-driven browser reload.- Any npm library — Node SSR has full Node API surface (
fs,fetch,Buffer, streams). - Svelte 5 runes — full
$state,$derived,$effect,$propssupport.
Quick Start
Prerequisites
- Python 3.11+
- Node.js 20+ (Fymo's bundler shells out to esbuild)
Installation
pip install fymo
Create a New Project
fymo new my-app
cd my-app
npm install
Build and Serve
fymo dev # incremental rebuild + browser auto-reload (development)
# or, for production:
fymo build # produces dist/ with hashed JS/CSS bundles
fymo serve --prod # gunicorn
Visit http://127.0.0.1:8000.
Project Structure
my-app/
├── app/
│ ├── controllers/ # Python controllers
│ ├── templates/ # Svelte components
│ ├── models/ # Data models
│ └── static/ # Static assets
├── dist/ # Built output (generated by fymo build)
├── config/ # Configuration
├── fymo.yml # Project configuration
├── server.py # Entry point
└── requirements.txt # Python dependencies
Example Component
<!-- app/templates/home/index.svelte -->
<script>
let { title, message } = $props();
let count = $state(0);
function increment() {
count++;
}
</script>
<div>
<h1>{title}</h1>
<p>{message}</p>
<button onclick={increment}>
Count: {count}
</button>
</div>
# app/controllers/home.py
def getContext():
return {
'title': 'Welcome to Fymo',
'message': 'Build amazing apps with Python and Svelte 5!'
}
CLI Commands
fymo new <project>— Create a new projectfymo dev— Dev server with file watcher and live reloadfymo serve— Alias forfymo dev;fymo serve --prodserves a built project via gunicornfymo build— Build for production (producesdist/)fymo generate <type> <name>— Generate components/controllers
Configuration
Configure your project in fymo.yml:
name: my-app
version: 1.0.0
routes:
root: home.index
resources:
- posts
- users
server:
host: 127.0.0.1
port: 8000
reload: true
Architecture
Fymo combines:
- Python for server-side logic and routing (WSGI)
- Svelte 5 for reactive UI components
- esbuild for fast, incremental JS/CSS bundling at build time
- Node.js sidecar for server-side rendering via stdio JSON protocol
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - see LICENSE file for details
Acknowledgments
Metadata
Release files for fymo 0.20.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| fymo-0.20.0.tar.gz | 397.9 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fymo-0.20.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 668.2 kB
Release files / fymo-0.20.0.tar.gz
| Download URL | fymo-0.20.0.tar.gz |
|---|---|
| Size | 397.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8e8e07f95a35434b3627d30df76015de247b766ea280aee4a7facb22bf83ebd5
|
|
BLAKE2b-256 checksum How to use checksums |
34a6749bcd99f32f71a6df557565555dd9de3ede2a13d618998ed0a15b345c9e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 22, 2026.
Transparency logRelease files / fymo-0.20.0-py3-none-any.whl
| Download URL | fymo-0.20.0-py3-none-any.whl |
|---|---|
| Size | 270.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a7f1fab702145c69994eea9324963146e250728827f55fe436f3c47148ef58ac
|
|
BLAKE2b-256 checksum How to use checksums |
8b126e0367152a1d52e45afa3d46a20e044069742d8f386d8e9ccb353ece2264
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 22, 2026.
Transparency logSecurity for fymo 0.20.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for fymo-0.20.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 22, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.