Skip to main content

A Python Framework for writing Reactive web Front-Ends

Project description

Starfyre Logo

Discord

Starfyre ⭐🔥

Introduction:

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.

📦 Installation:

pip install starfyre

A sample project is hosted on GitHub.

🚀 Sample App

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>

🚀 Sample CLI usage

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.

🗒️ How to contribute

🏁 Get started

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.

⚙️ Developing Locally

  1. Install the dependencies poetry install
  2. Run the script ./build.sh. This command will run the build process in starfyre against the test application in test-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 the build directory.
      • The build directory is basically a python package that contains all the compiled files. We use the --build flag to run that package.
  1. You can find a small test application in the test-application directory.
  2. Navigate to test-application/dist and open index.html in your browser to see the output.

Running the sample app with Docker

Ideally, we should not be needing this. But if you are having trouble running the sample app locally, you can try this.

  1. Build the image docker build --tag starfyre .
  2. Run the container docker run -v ./test-application:/app/test-application/ starfyre
  3. Check the test-application directory for build and dist directories that contain the outputs
  4. If you would like to develop interactively inside the container, run docker run -it -v ./test-application:/app/test-application/ starfyre bash

Feedback

Feel free to open an issue and let me know what you think of it.

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

starfyre-0.7.0.tar.gz (11.8 kB view hashes)

Uploaded Source

Built Distribution

starfyre-0.7.0-py3-none-any.whl (12.3 kB view hashes)

Uploaded Python 3

Supported by

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