Build modern web applications with Python backend and Svelte 5 frontend
dist/client/*.js once, served as cacheable static assets.date-fns) are bundled once and shared.<link rel="modulepreload"> + <script type="module" src=...>.fymo dev watcher — incremental rebuilds on save with SSE-driven browser reload.fs, fetch, Buffer, streams).$state, $derived, $effect, $props support.pip install fymo
fymo new my-app
cd my-app
pip install -r requirements.txt
npm install
fymo build # produces dist/ with hashed JS/CSS bundles
fymo serve # production-style WSGI server
# or, for development:
fymo dev # incremental rebuild + browser auto-reload
Visit http://127.0.0.1:8000.
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
<!-- 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!'
}
fymo new <project> — Create a new projectfymo build — Build for production (produces dist/)fymo serve — Serve a built projectfymo dev — Dev server with file watcher and live reloadfymo generate <type> <name> — Generate components/controllersConfigure 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
Fymo combines:
Contributions are welcome! Please feel free to submit a Pull Request.
MIT License - see LICENSE file for details