Skip to main content

Python SSR framework for Svelte 5 — esbuild pipeline, Node sidecar, SvelteKit-style remote functions

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fymo-0.18.1.tar.gz (363.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fymo-0.18.1-py3-none-any.whl (235.9 kB view details)

Uploaded Python 3

File details

Details for the file fymo-0.18.1.tar.gz.

File metadata

  • Download URL: fymo-0.18.1.tar.gz
  • Upload date:
  • Size: 363.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fymo-0.18.1.tar.gz
Algorithm Hash digest
SHA256 e471c6af1f82a8dcc174c5dfc73ba5185b7be8f6ab6dc64e6dd863d726fe7c83
MD5 31fa597477209185413d46e178c352ed
BLAKE2b-256 bec607225729883e3db84ded16d8bfbfb3265e7a7e4ae596009a842d8417d0f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for fymo-0.18.1.tar.gz:

Publisher: release.yml on Bishwas-py/fymo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fymo-0.18.1-py3-none-any.whl.

File metadata

  • Download URL: fymo-0.18.1-py3-none-any.whl
  • Upload date:
  • Size: 235.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fymo-0.18.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e9700f6d86f23e64df9e9e37c5f5862cef2e8b3e9dfa8ec2a92f5d1102727d02
MD5 f80fafdbfbea2390bc9af91ab327b40c
BLAKE2b-256 689cfc83b6cafcd8fd46efc04adc7d48dcec88447ab92c69efe2157900b19530

See more details on using hashes here.

Provenance

The following attestation bundles were made for fymo-0.18.1-py3-none-any.whl:

Publisher: release.yml on Bishwas-py/fymo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page