Skip to content

Commit

Permalink
Merge pull request #454 from writerai/dev
Browse files Browse the repository at this point in the history
chore: Merge for release
  • Loading branch information
ramedina86 authored Jun 5, 2024
2 parents 6199f1e + 8f3e775 commit cbefa74
Show file tree
Hide file tree
Showing 16 changed files with 323 additions and 221 deletions.
40 changes: 16 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,8 @@
## What is Streamsync?
## What is Writer Framework?

[![PyPi](https://img.shields.io/pypi/v/streamsync.svg?label=Version)](https://pypi.org/project/streamsync/)
[![CI](https://github.com/streamsync-cloud/streamsync/actions/workflows/ci.yml/badge.svg)](https://github.com/streamsync-cloud/streamsync/actions/workflows/ci.yml)
[![Discord](https://img.shields.io/badge/discord-streamsync-sn677E3Pd3?logo=discord&logoColor=white)](https://discord.gg/sn677E3Pd3)
[![License](https://img.shields.io/pypi/l/streamsync)](LICENSE)
Writer Framework is an open-source framework for creating AI applications. Build user interfaces using a visual editor; write the backend code in Python.

Writer Framework is an open-source framework for creating data apps. Build user interfaces using a visual editor; write the backend code in Python.

![Writer Framework Builder screenshot](https://raw.githubusercontent.com/streamsync-cloud/streamsync/master/docs/docs/public/sc1.png "Writer Framework Builder screenshot")

- [Live demo](https://hello.streamsync.cloud/) of an app. [Source code](https://github.com/streamsync-cloud/streamsync/blob/master/apps/hello/main.py).
- [1 minute introduction video](https://youtu.be/XBAPBy_zf8s) on YouTube

It's an alternative to Plotly Dash, Streamlit and Gradio. Its focused on the creation of web applications for data analytics and machine learning.

It aims to be as simple as Streamlit, but faster, more flexible and with a cleaner, easily-testable syntax. It provides separation of concerns between UI and business logic, enabling more complex applications.
Writer Framework is fast and flexible with a clean, easily-testable syntax. It provides separation of concerns between UI and business logic, enabling more complex applications.

## Highlights

Expand All @@ -37,13 +25,13 @@ The user interface is a template, which is defined visually. The template contai

### Flexible

- Elements are highly customisable with no CSS required, allowing for shadows, button icons, background colours, etc.
- Elements are highly customizable with no CSS required, allowing for shadows, button icons, background colors, etc.
- HTML elements with custom CSS can be included using the _HTML Element_ component. They can serve as containers for built-in components.

### Fast

- Event handling adds minimal overhead to your Python code (~1-2ms\*).
- Streaming (WebSockets) is used to synchronise frontend and backend states.
- Streaming (WebSockets) is used to synchronize frontend and backend states.
- The script only runs once.
- Non-blocking by default. Events are handled asynchronously in a thread pool running in a dedicated process.

Expand All @@ -61,24 +49,28 @@ The user interface is a template, which is defined visually. The template contai
Getting started with Writer Framework is easy. It works on Linux, Mac and Windows.

```sh
pip install "streamsync[ds]"
streamsync hello
pip install writer
writer hello
```

- The first command will install Writer Framework using `pip` and include the optional data science dependencies.
- The first command will install Writer Framework using `pip`.
- The second command will create a demo application in the subfolder "hello" and start Writer Framework Builder, the framework's visual editor, which will be accessible via a local URL.

The following commands can be used to create, launch Writer Framework Builder and run an application.

```sh
streamsync create my_app
streamsync edit my_app
streamsync run my_app
writer create my_app
writer edit my_app
writer run my_app
```

## Documentation

Documentation is available online at [streamsync.cloud](https://streamsync.cloud).
Full documentation, including how to use Writer's AI module and deployment options, is available at [Writer](https://dev.writer.com/framework?utm_source=github&utm_medium=readme&utm_campaign=framework).

## About Writer

Writer is the full-stack generative AI platform for enterprises. Quickly and easily build and deploy generative AI apps with a suite of developer tools fully integrated with our platform of LLMs, graph-based RAG tools, AI guardrails, and more. Learn more at [writer.com](https://www.writer.com?utm_source=github&utm_medium=readme&utm_campaign=framework).

## License

Expand Down
2 changes: 1 addition & 1 deletion apps/ai-starter/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
This app was created using Writer Framework.

To learn more about it, visit https://developer.writer.com/framework
To learn more about it, visit https://dev.writer.com/framework
2 changes: 1 addition & 1 deletion apps/ai-starter/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

# Welcome to Writer Framework!
# This template is a starting point for your AI apps.
# More documentation is available at https://developer.writer.com/framework
# More documentation is available at https://dev.writer.com/framework


# Initialise the state
Expand Down
2 changes: 1 addition & 1 deletion apps/default/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
This app was created using Writer Framework.

To learn more about it, visit https://developer.writer.com/framework
To learn more about it, visit https://dev.writer.com/framework
2 changes: 1 addition & 1 deletion apps/default/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

# This is a placeholder to get you started or refresh your memory.
# Delete it or adapt it as necessary.
# Documentation is available at https://developer.writer.com/framework
# Documentation is available at https://dev.writer.com/framework

# Shows in the log when the app starts
print("Hello world!")
Expand Down
2 changes: 1 addition & 1 deletion apps/hello/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
This app was created using Writer Framework.

To learn more about it, visit https://developer.writer.com/framework
To learn more about it, visit https://dev.writer.com/framework
2 changes: 1 addition & 1 deletion apps/pdg-tutorial/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
This app was created using Writer Framework.

To learn more about it, visit https://developer.writer.com/framework
To learn more about it, visit https://dev.writer.com/framework
2 changes: 1 addition & 1 deletion apps/pdg-tutorial/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from prompts import base_prompts, seo_keywords, user_prompt

# This is the base template for the Product Description Generator tutorial.
# More documentation is available at https://developer.writer.com/framework
# More documentation is available at https://dev.writer.com/framework

# Initialize state here
wf.init_state({
Expand Down
2 changes: 1 addition & 1 deletion apps/quickstart/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
This app was created using Writer Framework.

To learn more about it, visit https://developer.writer.com/framework
To learn more about it, visit https://dev.writer.com/framework
2 changes: 1 addition & 1 deletion apps/text-demo/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
This app was created using Writer Framework.

To learn more about it, visit https://developer.writer.com/framework
To learn more about it, visit https://dev.writer.com/framework
2 changes: 1 addition & 1 deletion apps/text-demo/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

# Welcome to Writer Framework!
# This is a simple app to get you started with text completion.
# More documentation is available at https://developer.writer.com
# More documentation is available at https://dev.writer.com

def handle_button_click(state):
state["message"] = "% Loading up expert social media posts..."
Expand Down
Loading

0 comments on commit cbefa74

Please sign in to comment.