Web Based Desktop Environment

Hey All, I’m starting a new project designing a NAS solution from scratch. I want to recreate the Synology DSM environment (only the “consumer” applications to start). I’ve still got a few problems I need to sort before I start coding though and one of those problems is the web based desktop environment. I’ve found quite a few opensource ones written in JS. But, I’d much rather avoid JS if possible(pipe dream, maybe, but it’s my pipe dream).

Anyone have any ideas on how to accomplish this with Ruby/HTML/CSS? Maybe existing projects I can help with/use that are already attempting to build a web based DE?

Sorry, nothing useful to add but just wanted to say that as I read the title of your topic, I was instantly reminded of Synology - only to find what you wrote :slight_smile: OK, in seriousness - if you are starting out, you probably need to think of the system in terms of the following: * there is a GUI that needs to be drawn * there are interactions that need to be possible * there needs to be a way to pull relevant data to show from a backend service 1. GUI Now, since it’s web-based (without getting into WASM or similar), let’s assume that the GUI is essentially HTML but probably rendered through something like Javascript (using HTML, possibly canvas, CSS, etc.). So, what you are looking for is something like a windowing library (or writing one). Now, this is probably mostly a JS/WebGL/HTML Canvas/CSS thing but it might be that you could use something like Opal to transpile the Javascript from Ruby code - or use ERB style templates or so on. 2. Interactions Again, most of the interactions (dragging windows, opening windows on double click, etc.) are going to be done in Javascript. I imagine a lot will depend on what you are doing in #1 and will likely be very similar. At specific points, from there, you’ll make calls out to the backend to get data, etc. (#3). 3. Data endpoints Since this is web-based, you need a backend that serves up the stuff - so, if you want to get the list of files on the disks or thumbnails, etc. you would need to make a web call. This call would end up at an HTTP Server (which could serve files directly, e.g. images, etc.) or call a backend service (e.g. Rails) to do dynamic stuff. Of course, Rails fits assuming your target device can run Ruby, etc. and you might end up with either a database like PostgreSQL running there (or if it’s a tinier device) maybe something like SQLite3. Hope this gives you some thoughts though I doubt that it has the answers you wanted. Best Regards, Mohit. 2022-5-8 | 3:57 pm.

1 Like

Thanks man! I’m just starting out, so all this feedback is very helpful!

And for the OS I’m looking to use Fedora Server. It’s entirely FOSS to my knowledge and the installer has some nice automation capabilities. Making a web based installer for it much easier.