{"id":11045851,"url":"https://github.com/writer/writer-framework","last_synced_at":"2025-05-14T14:07:55.884Z","repository":{"id":37613203,"uuid":"460609164","full_name":"writer/writer-framework","owner":"writer","description":"No-code in the front, Python in the back. An open-source framework for creating data apps.","archived":false,"fork":false,"pushed_at":"2025-05-05T10:24:46.000Z","size":118338,"stargazers_count":1396,"open_issues_count":36,"forks_count":86,"subscribers_count":21,"default_branch":"dev","last_synced_at":"2025-05-05T11:35:56.563Z","etag":null,"topics":["ai","ai-in","data-apps","data-visualization","developer-tools","interface","interface-builder","models","no-code","python","ui","ui-components","websockets"],"latest_commit_sha":null,"homepage":"https://dev.writer.com/framework/introduction","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/writer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["ramedina86"]}},"created_at":"2022-02-17T21:10:19.000Z","updated_at":"2025-05-05T10:24:50.000Z","dependencies_parsed_at":"2024-01-05T19:33:07.670Z","dependency_job_id":"706683ed-9230-4798-8f03-e6516c16fc7d","html_url":"https://github.com/writer/writer-framework","commit_stats":{"total_commits":1532,"total_committers":25,"mean_commits":61.28,"dds":0.512402088772846,"last_synced_commit":"4e956b15bf49c511c44936b4ddc359ea2d780759"},"previous_names":["streamsync-cloud/streamsync","writerai/writer-framework","writer/writer-framework"],"tags_count":63,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/writer%2Fwriter-framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/writer%2Fwriter-framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/writer%2Fwriter-framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/writer%2Fwriter-framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/writer","download_url":"https://codeload.github.com/writer/writer-framework/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253398030,"owners_count":21902034,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-in","data-apps","data-visualization","developer-tools","interface","interface-builder","models","no-code","python","ui","ui-components","websockets"],"created_at":"2024-06-12T04:05:03.007Z","updated_at":"2025-05-14T14:07:55.864Z","avatar_url":"https://github.com/writer.png","language":"Python","readme":"## What is Framework?\n\nWriter Framework is an open-source framework for creating AI applications. Build user interfaces using a visual editor; write the backend code in Python.\n\nWriter 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.\n\n## Highlights\n\n### Reactive and state-driven\n\nWriter Framework is **fully state-driven** and provides **separation of concerns** between user interface and business logic.\n\n```py\nimport writer as wf\n\ndef handle_increment(state):\n    state[\"counter\"] += 1\n\nwf.init_state({\n    \"counter\": 0\n})\n```\n\nThe user interface is a template, which is defined visually. The template contains reactive references to state, e.g. `@{counter}`, and references to event handlers, e.g. when _Button_ is clicked, trigger `handle_increment`.\n\n### Flexible\n\n- Elements are highly customizable with no CSS required, allowing for shadows, button icons, background colors, etc.\n- HTML elements with custom CSS can be included using the _HTML Element_ component. They can serve as containers for built-in components.\n\n### Fast\n\n- Event handling adds minimal overhead to your Python code (~1-2ms\\*).\n- Streaming (WebSockets) is used to synchronize frontend and backend states.\n- The script only runs once.\n- Non-blocking by default. Events are handled asynchronously in a thread pool running in a dedicated process.\n\n\\*End-to-end figure, including DOM mutation. Tested locally on a Macbook Air M2. [Measurement methodology](https://medium.com/@ramiromedina/measuring-time-elapsed-between-an-event-and-its-associated-dom-mutation-80431ad576e1).\n\n### Developer-friendly\n\n- It's all contained in a standard Python package, just one `pip install` away.\n- User interfaces are saved as JSON, so they can be version controlled together with the rest of the application.\n- Use your local code editor and get instant refreshes when you save your code. Alternatively, use the provided web-based editor.\n- You edit the UI while your app is running. No hitting \"Preview\" and seeing something completely different to what you expected.\n\n## Installation and Quickstart\n\nGetting started with Writer Framework is easy. It works on Linux, Mac and Windows.\n\n```sh\npip install writer\nwriter hello\n```\n\n- The first command will install Writer Framework using `pip`.\n- 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.\n\nThe following commands can be used to create, launch Writer Framework Builder and run an application.\n\n```sh\nwriter create my_app\nwriter edit my_app\nwriter run my_app\n```\n\n## Documentation\n\nFull documentation, including how to use Writer's AI module and deployment options, is available at [Writer](https://dev.writer.com/framework?utm_source=github\u0026utm_medium=readme\u0026utm_campaign=framework).\n\n## About Writer\n\nWriter 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\u0026utm_medium=readme\u0026utm_campaign=framework).\n\n## License\n\nThis project is licensed under the Apache 2.0 License.\n","funding_links":["https://github.com/sponsors/ramedina86"],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwriter%2Fwriter-framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwriter%2Fwriter-framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwriter%2Fwriter-framework/lists"}