• Stars
    star
    269
  • Rank 149,228 (Top 3 %)
  • Language
    Python
  • License
    BSD 2-Clause "Sim...
  • Created over 1 year ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A Python Framework for writing Reactive Front-End Applications

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

Python version 3.10

  1. Fork this repo
  2. Clone this repo - git clone https://github.com/sparckles/starfyre
  3. Go in to the starfyre directory - cd starfyre
  4. Download poetry curl -sSL https://install.python-poetry.org/ | python3 -
  5. Install the dependencies poetry install
  6. Activate poetry virtual enviromente poetry shell
  7. 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 cd test-application/dist.
  3. Open index.html in your browser to see the output, run explorer.exe index.html.

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.

More Repositories

1

robyn

A High-Performance, Community-Driven, and Innovator Friendly Web Framework with a Rust runtime.
Python
2,730
star
2

kasper_music_player

An All In One app that would allow "music.youtube.com" to work in restricted countries. This app aims to bypass all the premium models and create FFA experience
HTML
32
star
3

macsimus

A custom editor based on NeoVim and inspired from Vim and Emacs to maximise productivity.
Vim Script
22
star
4

creative-components

This repo aims to create innovative react components used in awwwards like websites.
JavaScript
17
star
5

vim-python-virtualenv

A vim plugin which automatically manages the python virtual envs for you
Vim Script
16
star
6

xcode-Night-Owl

XCode port of the Night Owl Theme
15
star
7

nestd

A package to extract your nested functions.
Python
13
star
8

first-starfyre-app

https://first-starfyre-app.netlify.app/
10
star
9

git-add-co-author

Easily Credit Contributors in Git Commits
Python
9
star
10

leetcode-company-by-company

All leetcode company wise questions with link to Leetcode/ LintCode(if premium)
8
star
11

create-starfyre-app

Python
8
star
12

algorithm-ds

C++
8
star
13

personal_nas

A script and frontend that will convert an old machine running linux into a personal nas server
JavaScript
7
star
14

robyn-starter

A starter template for robyn repos
Python
6
star
15

cringify

A cli tool to annoy your friends on the internet
Rust
3
star
16

starfyre-rust-test

Python
3
star
17

better-cut-copy-paste.vim

This is vim plugin allows better cut copy paste.
Vim Script
3
star
18

workshop_dummy_repo

3
star
19

corona-ml-corona

https://days-till-mill.netlify.com/
Python
3
star
20

rusty-sql

Rust
3
star
21

Personal-Password-Manager

A custom password manager for the FOSS community
Python
2
star
22

ds_algo-practice

This is a repo containing all solutions to the problems that I have attempted.
C++
1
star
23

my-dotfiles

Vim Script
1
star
24

swos

Split wise but open source
1
star
25

kasper_linux

Python
1
star
26

WoodsDom

WoodsDom is a PWA designed to bridge the gap between the local citizens of the forest areas and the forest authorities to devise a more intelligent development plan for the concerned area.
HTML
1
star
27

Newgittut

1
star
28

europython-workshop

Python
1
star
29

productivity_chrome_extension

An extension that will block a list of websites to boost your productivity during crucial times.
HTML
1
star
30

ultimate-docker-nginx-conf

Dockerfile
1
star