fymo/ package, its CLI, and its build pipeline. If you’re building an application with fymo instead, head over to the quickstart.
Prerequisites
- Python 3.11 or newer, since
pyproject.tomlsetsrequires-python = ">=3.11" - Node.js 20 or newer. The bundler shells out to esbuild, and the SSR sidecar runs on Node
- uv, which the project’s own CI uses, though a plain
pipandvenvworkflow works fine too
1
Clone the repo
2
Install Python dependencies
With uv:This installs fymo itself in editable mode, plus the dev dependencies from
pyproject.toml: pytest, pytest-asyncio, and pydantic.Prefer a plain virtualenv? This covers the same ground:3
Install root npm dependencies
package.json declares svelte and devalue as runtime dependencies, and esbuild, esbuild-svelte, jsdom, svelte-preprocess, and typescript as dev dependencies. These are what the framework’s own build and test code, under fymo/build/js, shells out to.4
Run the test suite
tests/. Each file follows the test_*.py naming pattern, set in pyproject.toml.Running an example app
The repo ships two example apps underexamples/. One is blog_app, which covers remote functions and auth; the other is todo_app, a plain CRUD-style UI. Each has its own package.json and requirements.txt, since it’s meant to work as a standalone fymo project you could copy out of the repo.
1
Install the example's npm dependencies
Pick
blog_app or todo_app, whichever you’d like to explore, then install its dependencies:2
Build and serve
fymo dev instead for incremental rebuilds.Visit http://127.0.0.1:8000 to see it running.Both example apps list
fymo>=0.1.0 in their requirements.txt, which normally means pulling fymo from PyPI. Neither the example apps nor the CI workflows spell out a step for pointing that dependency at your local checkout instead.In practice this tends to work out on its own. If you run an example from the same environment where you ran uv sync at the repo root, that environment already holds your editable install of fymo. So running python or fymo there picks up your working copy, not the published release, simply because that’s how an editable install behaves.If you set up an example in its own fresh virtual environment instead, you’ll need to repeat that editable install yourself. Something like pip install -e /path/to/fymo will do it, so your local changes show up too.Commit messages
CI checks that every non-merge commit message follows Conventional Commits:type(scope): description. The type must be one of feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert. A lint job in .github/workflows/ci.yml enforces this on every push to main.
The app/ directory
A map of where everything lives in a Fymo project.
Quickstart
The application-builder path: install fymo and scaffold a new project.
