Starfyre is a library that allows you to build reactive frontends using only Python. It is built using pyodide and wasm, which enables it to run natively in the browser. With Starfyre, you can create interactive, real-time applications with minimal effort. Simply define your frontend as a collection of observables and reactive functions, and let Starfyre handle the rest.
Please note that Starfyre is still very naive and may be buggy, as it was developed in just five days. However, it is under active development and we welcome contributions to improve it. Whether you are a seasoned web developer or new to frontend development, we hope that you will find Starfyre to be a useful tool. Its intuitive API and simple, declarative style make it easy to get started, and its powerful features allow you to build sophisticated applications.
pip install starfyre
A sample project is hosted on GitHub.
src/init.fyre
from .parent import parent
from .store import store
def mocked_request():
return "fetched on the server"
async def handle_on_click(e):
alert("click rendered on client")
if 1==1:
print("Hello world")
current_value = get_parent_signal()
set_parent_signal(current_value + 1)
a = await fetch('https://jsonplaceholder.typicode.com/todos/1')
print(await a.text())
print("handles on click")
<style>
body {
background-color: red;
}
</style>
<pyml>
<store>
<parent hello='world'>
<span onclick={handle_on_click}>
{[ mocked_request() for i in range(4)]}
</span>
</parent>
</store>
</pyml>
<script>
// this is the optional section
// for third party scripts and custom js
</script>
Usage: python -m starfyre [OPTIONS]
Options:
--path TEXT Path to the project
--dev BOOLEAN Start the compilation and generate the build package.
--build BOOLEAN Start the build package
--help Show this message and exit.
Please read the code of conduct and go through CONTRIBUTING.md before contributing to Robyn. Feel free to open an issue for any clarifications or suggestions.
If you're feeling curious. You can take a look at a more detailed architecture here.
If you still need help to get started, feel free to reach out on our community discord.
Python version 3.10
- Fork this repo
- Clone this repo -
git clone https://github.com/sparckles/starfyre
- Go in to the starfyre directory -
cd starfyre
- Download poetry
curl -sSL https://install.python-poetry.org/ | python3 -
- Install the dependencies
poetry install
- Activate poetry virtual enviromente
poetry shell
- Run the script
./build.sh
. This command will run the build process in starfyre against the test application intest-application
directory.
- The
build.sh
file is a simple script that runs two commands sequentially.python -m starfyre --dev=True --path="test-application/"
python -m starfyre --build=True --path="test-application/"
- The
path
variable here is the path to our application. - The
dev
flag here is used to start the compilation and create thebuild
directory. - The
build
directory is basically a python package that contains all the compiled files. We use the--build
flag to run that package.
- The
- You can find a small test application in the
test-application
directory. - Navigate to
cd test-application/dist
. - Open
index.html
in your browser to see the output, runexplorer.exe index.html
.
Ideally, we should not be needing this. But if you are having trouble running the sample app locally, you can try this.
- Build the image
docker build --tag starfyre .
- Run the container
docker run -v ./test-application:/app/test-application/ starfyre
- Check the
test-application
directory forbuild
anddist
directories that contain the outputs - If you would like to develop interactively inside the container, run
docker run -it -v ./test-application:/app/test-application/ starfyre bash
Feel free to open an issue and let me know what you think of it.