I’d like to share a work in progress — https://skymass.devSkyMass is a cloud UI Server. The idea of a UI Server is to wrap everything related to the “frontend” of a typical frontend/backend modern app and offer it as a simple to use service. This includes an extensive UI component library and services like authentication, localization, theming etc.This approach removes massive amount of complexity (CSS, DOM, React, bundlers, hosting, etc…) and allows us to build modern apps by solely writing a backend. The backend deals with accessing app data (eg: databases, apis etc..), app logic and uses the UI Server through a simple client SDK.Checkout a sample todo list app (only ~80 SLoC) to get a better feel for SkyMass:Live Demo: https://skymass.dev/app/skymass-demo/neon-todolistSource: https://github.com/skymasshq/skymass-demo/blob/main/neon_todolist.mjs
09/07/2022, 6:10 AM
Interesting! Does the backend serve 'standalone' web content to the browser to render or is there generic SPA UI that adapts to the messages sent by the backend? So does the todo.id ever leave the backend? Because if it does I feel like your sample is quite vulnerable to SQL injections 🙂. I do agree that server side rendered web pages get rid of quite a bit of complexity, but I do wonder what's the added value in skymass over existing server side web UI frameworks like ASP.NET Razor Pages?
09/07/2022, 9:14 PM
Thanks for checking it out!The code runs entirely on your server. I’ll add a comment to call that out.The way it works is the backend specifies high level widgets + params (eg: table + data) that are mapped to an implementation in the UI.What’s different:
• It comes with a growing, high quality UI component library out of the box vs writing html+css.
• it comes with auth (ready), localization (wip), themes (wip). the goal is to offer everything a complete app needs over time.
• the server doesn’t expose any http ports. it opens a websocket out to the UI server. this has of security/ops benefits.
09/08/2022, 6:18 AM
09/08/2022, 4:50 PM
No worries! I definitely welcome the feedback and it’s great to hear about alternatives (N > 1 is usually a good thing). Blazor is definitely closer 🙂 The diff is that Blazor (and Liveview) operate at the DOM level (sending DOM deltas). I think that leads to a very chatty protocol. SkyMass components try to handle as much as possible on the client and only interact with the backend for significant events (eg: table selection was changed or a button was clicked).
The other part is philosophical — SkyMass is aiming to reduce the boilerplate/config/integrations etc.. to get a complete/good app up and running to a minimum. I think there is a class of apps where you just need to get something done — and all the other stuff is creating friction that prevents people from making progress or honestly starting— eg: I find registering and setting up OAuth providers and callback endpoints etc… for a new app cumbersome. I just want to write a login protected public app with minimal effort.