{"id":22006533,"url":"https://github.com/ensoft/entrance","last_synced_at":"2025-05-05T22:40:21.260Z","repository":{"id":50093343,"uuid":"145552487","full_name":"ensoft/entrance","owner":"ensoft","description":"Framework for web apps, using an Elm frontend and Python 3.5+ backend","archived":false,"fork":false,"pushed_at":"2023-03-02T13:17:51.000Z","size":3707,"stargazers_count":10,"open_issues_count":0,"forks_count":7,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-05-03T05:54:16.131Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://package.elm-lang.org/packages/ensoft/entrance/latest/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ensoft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"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}},"created_at":"2018-08-21T11:08:17.000Z","updated_at":"2024-06-20T01:41:01.000Z","dependencies_parsed_at":"2024-11-30T01:13:04.369Z","dependency_job_id":"de2a174f-f3e9-4f6b-9302-9e6837fac205","html_url":"https://github.com/ensoft/entrance","commit_stats":{"total_commits":67,"total_committers":6,"mean_commits":"11.166666666666666","dds":"0.29850746268656714","last_synced_commit":"87d67e32511cab4be6b80012aa853ebbbc72d48f"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ensoft%2Fentrance","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ensoft%2Fentrance/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ensoft%2Fentrance/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ensoft%2Fentrance/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ensoft","download_url":"https://codeload.github.com/ensoft/entrance/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252589298,"owners_count":21772838,"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":[],"created_at":"2024-11-30T01:12:56.444Z","updated_at":"2025-05-05T22:40:21.229Z","avatar_url":"https://github.com/ensoft.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# EnTrance\n\nEnTrance is a framework for writing simple but robust web apps, using a Python\nasyncio backend, and an Elm frontend. It is oriented around classical\ndistributed systems design: the goal is to provide a reliable async\nbidirectional message channel between client and server, each of which have a\nsound modular decomposition, and then get out the way.\n\nEnTrance might be a good fit if your application needs:\n\n - a rich \"single page app\" user interface\n - some custom backend functionality too\n - robust behaviour and simple code\n\nand can assume:\n\n - any app-specific backend logic is expressible in asyc Python\n - it's ok for the app to \"freeze\" if network connectivity fails persistently\n   (eg rural 2G flaky cellular access) although temporary glitches should be\n   handled gracefully\n\nIf so, then EnTrance allows easy expression of the specific client- and\nserver-side logic unique to your app, and factors out most of the effort in\nengineering a reliable distributed system.\n\nThere are other incidental features, such as the ability to package the whole\napp into a single (server-side) executable for easy distribution.\n\nThe backend logic is modular, with a unit of function being termed a \"feature\".\nA set of reusable features are included in the Python `entrance` package, that\ncan be used if you wish (they happen to be particularly capable at interacting\nwith routers) but you can totally ignore these, and it is also easy to write\nany app-specific functionality.\n\nThis is an early commit, and is a bit sparse on documentation. The\n[samples](https://github.com/ensoft/entrance/tree/master/samples) directory has\nsome simple example apps. A design document is in the\n[docs](https://github.com/ensoft/entrance/tree/master/docs) directory; this\nexplains concepts and terminology required to fully understand the APIs for\nboth Elm and Python.\n\nThe single repo has the source for three separate packages:\n\n- A [Python package on PyPi](https://pypi.org/project/entrance) for the server\n- An [Elm package on\n  elm-package](https://package.elm-lang.org/packages/ensoft/entrance/latest) for\n  the client\n- A [Javascript package on npm](https://www.npmjs.com/package/entrance-ws) that\n  implements ports for WebSockets (since the Elm package was removed in 0.19)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fensoft%2Fentrance","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fensoft%2Fentrance","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fensoft%2Fentrance/lists"}