Skip to main content

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/*.js once, 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 dev watcher — 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, $props support.

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 project
  • fymo dev — Dev server with file watcher and live reload
  • fymo serve — Alias for fymo dev; fymo serve --prod serves a built project via gunicorn
  • fymo build — Build for production (produces dist/)
  • 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

  • Built with Svelte 5
  • Bundled with esbuild
  • Inspired by modern web frameworks

Built with love by the Fymo Team

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)

Source distribution for fymo 0.20.0
File Size Uploaded Provenance
fymo-0.20.0.tar.gz 397.9 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for fymo 0.20.0
File Interpreter ABI Platform
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Release history Release notifications | RSS feed

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page