All Projects → T4rk1n → dazzler

T4rk1n / dazzler

Licence: MIT license
Python UI/Web Framework

Programming Languages

python
139335 projects - #7 most used programming language
typescript
32286 projects
javascript
184084 projects - #8 most used programming language
SCSS
7915 projects

Projects that are alternatives of or similar to dazzler

acord
An API wrapper for discord, built using aiohttp and pydantic.
Stars: ✭ 25 (+47.06%)
Mutual labels:  aiohttp
mem usage ui
Measuring and graphing memory usage of local processes
Stars: ✭ 124 (+629.41%)
Mutual labels:  aiohttp
QuickLearn
A collection of resources categorised by tech domains, languages, expertise and much more. QuickLearn gives you a quick access to all the resources that you could need at a single place, within a click!
Stars: ✭ 89 (+423.53%)
Mutual labels:  web-application
esl
Lightweight and flexible UI component library based on web components technology for creating basic UX modules
Stars: ✭ 53 (+211.76%)
Mutual labels:  component-library
hradla
Logic network simulator that runs in your browser
Stars: ✭ 22 (+29.41%)
Mutual labels:  web-application
aiohttp-client-cache
An async persistent cache for aiohttp requests
Stars: ✭ 63 (+270.59%)
Mutual labels:  aiohttp
guilded.py
Asynchronous Guilded API wrapper for Python
Stars: ✭ 115 (+576.47%)
Mutual labels:  aiohttp
teaching-web-technologies-spring-2019-2020
Core PHP web project
Stars: ✭ 10 (-41.18%)
Mutual labels:  web-application
react-uswds
USWDS 3.0 components built in React
Stars: ✭ 108 (+535.29%)
Mutual labels:  component-library
Final-year-project-deep-learning-models
Deep learning for freehand sketch object recognition
Stars: ✭ 22 (+29.41%)
Mutual labels:  web-application
software-systems-architecture
A collection of descriptions of the architecture that various systems use.
Stars: ✭ 24 (+41.18%)
Mutual labels:  web-application
MVP-Landing
Learn to build & deploy a MVP landing page using Django, Python, & Bootstrap. The tutorial series covers the Django basics using Django 3, Python 3.8, and Bootstrap 4.5.
Stars: ✭ 41 (+141.18%)
Mutual labels:  web-application
trunx
Super Saiyan React components, son of awesome Bulma, implemented in TypeScript
Stars: ✭ 60 (+252.94%)
Mutual labels:  component-library
chusho
A library of bare & accessible components and tools for Vue.js 3
Stars: ✭ 47 (+176.47%)
Mutual labels:  component-library
aiohttp-login
Registration and authorization (including social) for aiohttp apps.
Stars: ✭ 53 (+211.76%)
Mutual labels:  aiohttp
MusicStream
A NodeJS server and web client for streaming music (and videos) to your network
Stars: ✭ 22 (+29.41%)
Mutual labels:  web-application
aiohttp-sentry
An aiohttp server middleware for reporting failed requests to Sentry
Stars: ✭ 35 (+105.88%)
Mutual labels:  aiohttp
SAUCE
⛔️ DEPRECATED - System for AUtomated Code Evaluation
Stars: ✭ 25 (+47.06%)
Mutual labels:  web-application
matchering-web
🎚️ Self-Hosted LANDR / eMastered Alternative
Stars: ✭ 25 (+47.06%)
Mutual labels:  web-application
fast
fast.com cli speedtest
Stars: ✭ 46 (+170.59%)
Mutual labels:  aiohttp

Dazzler

Build Documentation Status Version License

Dazzler is a hybrid UI framework for Python to create Desktop or Web Applications.

Built with Aiohttp, React and Electron.

Install

Install with pip: $ pip install dazzler

Features

  • Fast WebSocket based communication, deliver updates in realtime to thousands of connected clients at once.
  • Build desktop applications with Electron.
  • Support for third party integrations via middlewares.
  • Session & authentication systems.
  • Tie & Transform API to perform updates on the client side.

Quickstart

Quickstart with a GitHub template

Example

Create a page with a layout and assign bindings to save & load a visitor name with the session system. The button to save the visitor name is disabled if no input value via tie & transform.

from dazzler import Dazzler
from dazzler.system import Page, BindingContext, CallContext, transforms as t
from dazzler.components import core

app = Dazzler(__name__)
page = Page(
    __name__,
    core.Container([
        core.Html('H2', 'My dazzler page'),
        core.Container('Please enter a name', identity='visitor-name'),
        core.Input(value='', identity='input'),
        core.Button('Save name', identity='save-btn', disabled=True),
    ], identity='layout', id='layout'),
    title='My Page',
    url='/'
)

# UI updates via tie & transforms
page.tie('value@input', 'disabled@save-btn').transform(
    t.Length().t(t.Lesser(1))
)


# Bindings executes on the server via websockets.
@page.bind('clicks@save-btn')
async def on_click(context: BindingContext):
    # Save the visitor name via session system
    name = await context.get_aspect('input', 'value')
    await context.session.set('visitor', name)
    await context.set_aspect(
        'visitor-name', children=f'Saved {name}'
    )


# Aspects defined on the layout trigger on initial render and
# allows to insert initial data.
# `call` executes via regular requests.
@page.call('id@layout')
async def on_layout(context: CallContext):
    visitor = await context.session.get('visitor')
    if visitor:
        await context.set_aspect(
            'visitor-name', children=f'Welcome back {visitor}!'
        )


app.add_page(page)

if __name__ == '__main__':
    app.start()

Documentation

Full documentation hosted on readthedocs.

Get help for the command line tools: $ dazzler --help

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].