Build a desktop application

Can Vaadin be deployed as a desktop application (=services accessible only locally with a ui) and if yes is it something that would require a lot of workarounds to make it work?

Looking at options to deploy command line java applications locally without having to rewrite too much - effectively extending an app to giving it a fresh UI with a plan to refactor the core later to be deployable remotely as well.

Wondering if Vaadin is the right choice/stepping stone for this process.

Vaaadin runs inside a browser.

I know. But a lot of modern apps are effectively browsers running their own microservices locally.

They most often use Electron

I believe VS code has this model where the UI is a browser.

VS Code also uses Electron

In case of Vaadin you would need to run the app and then access the app with the browser

I would say Vaadin is not the right tool for the job

How would you approach such a problem then? Developing something that can end up as a web app later, using anything that would need to be dropped before the switch seems like wasted time. Vaadin seemed like a good choice to research and users dont care if its a browser app as long as it does the work.

What are your requirements?

And “can end up … later” is this a hard requirement or just an assumption?

Currently the app takes a command line argument pointing to a yaml file. The requirements are to externalize this, giving people the ability to fill in the variables via a ui. Thats phase 1. Phase 2 is deploying the same app on a server, giving the users the option to run locally or connect and use shared resources, but without requiring duplication of effort for developing desktop and server versions.

Its a requirement that I need to plan for.

Do you need to access local file system or other local resources?

Yes. In phase 1. Phase 2 is implementing ports and adapters for supporting both local file system and file storage apis.

How would you access the file system from a web app?

I assumed I could call filesystem operations as usual via Java.

Nope you are in the browser and don’t have access to the local file system

So a browser app is not a good fit if you want to use local resources on the client computer