https://github.com/ensoft/entrance
Framework for web apps, using an Elm frontend and Python 3.5+ backend
https://github.com/ensoft/entrance
Last synced: 14 days ago
JSON representation
Framework for web apps, using an Elm frontend and Python 3.5+ backend
- Host: GitHub
- URL: https://github.com/ensoft/entrance
- Owner: ensoft
- License: mit
- Created: 2018-08-21T11:08:17.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-03-02T13:17:51.000Z (about 2 years ago)
- Last Synced: 2025-05-03T05:54:16.131Z (16 days ago)
- Language: Python
- Homepage: https://package.elm-lang.org/packages/ensoft/entrance/latest/
- Size: 3.54 MB
- Stars: 10
- Watchers: 8
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# EnTrance
EnTrance is a framework for writing simple but robust web apps, using a Python
asyncio backend, and an Elm frontend. It is oriented around classical
distributed systems design: the goal is to provide a reliable async
bidirectional message channel between client and server, each of which have a
sound modular decomposition, and then get out the way.EnTrance might be a good fit if your application needs:
- a rich "single page app" user interface
- some custom backend functionality too
- robust behaviour and simple codeand can assume:
- any app-specific backend logic is expressible in asyc Python
- it's ok for the app to "freeze" if network connectivity fails persistently
(eg rural 2G flaky cellular access) although temporary glitches should be
handled gracefullyIf so, then EnTrance allows easy expression of the specific client- and
server-side logic unique to your app, and factors out most of the effort in
engineering a reliable distributed system.There are other incidental features, such as the ability to package the whole
app into a single (server-side) executable for easy distribution.The backend logic is modular, with a unit of function being termed a "feature".
A set of reusable features are included in the Python `entrance` package, that
can be used if you wish (they happen to be particularly capable at interacting
with routers) but you can totally ignore these, and it is also easy to write
any app-specific functionality.This is an early commit, and is a bit sparse on documentation. The
[samples](https://github.com/ensoft/entrance/tree/master/samples) directory has
some simple example apps. A design document is in the
[docs](https://github.com/ensoft/entrance/tree/master/docs) directory; this
explains concepts and terminology required to fully understand the APIs for
both Elm and Python.The single repo has the source for three separate packages:
- A [Python package on PyPi](https://pypi.org/project/entrance) for the server
- An [Elm package on
elm-package](https://package.elm-lang.org/packages/ensoft/entrance/latest) for
the client
- A [Javascript package on npm](https://www.npmjs.com/package/entrance-ws) that
implements ports for WebSockets (since the Elm package was removed in 0.19)