Description
The practice in the development of advanced web applications is to break it into two main areas where the effort on the server, with the typical WSGI environments, focuses on data access configuration whereas the application logic is delegated mostly to the client through the use of JavaScript frameworks.
The reason for this separation into two roles lies in the need to use JavaScript on the browser and the fact that the communication channel (HTTP) and the way in which the application state is handled on the server side is still that thought to serve full web pages.
In this talk I'll show a framework and an application where the line between the two worlds is blurred and where it is possible to think of the application in terms of unity, with the two components that cooperate equally and communicate without thinking in terms of URLs or HTTP verbs .
This is made possible by the asynchronous/reactive management of the processing from the database driver to the user interaction, the use of websocket for communication and the use of Python (optional) for the development of the client part.
Some technologies used are: PostgreSQL, the "asyncpg" driver, the "aiohttp" web server, Crossbar (http://crossbar.io) for the websocket comms, pkg "metapensiero.sphinx.patchdb" for schema upgrades, the package "metapensiero.reactive" and "metapensiero.signal" for the management of reactive event streams, the package "Javascripthon" for Py3 to ES6 JS transpiling.