Phalcode / gamevault-app

Frontend for the self-hosted gaming platform for drm-free games
https://gamevau.lt
Other
296 stars 14 forks source link

Crossplatform Web-Based Client Application #284

Closed Alfagun74 closed 9 months ago

Alfagun74 commented 1 year ago

Let's explore the possibility of developing a cross-platform client application. This application should run on the web and be compilable as a native app on Windows, Linux, MacOS and Android.

By doing so, we can gradually migrate features from the current GameVault Client to a cross-platform framework and web-based user interface. This approach will also address the following issues:

Goals:

yodatak commented 1 year ago

I find tauri really fine but there is some issue with the flatpak dependency isued ( it the main way to install app on some system like steam deck or fedora silverblue :/ )

https://github.com/tauri-apps/tauri/discussions/4426 https://tauri.app/blog/2023/03/20/tauri-2-0-0-alpha-4 (now we are in alpha 6)

we should maybe start with tauri 2.0 because of these ^^ and tauri v2 will support android and IOS

some flutter app in flathub https://flathub.org/apps/search?q=flutter

some that use tauri, Cinny and Pocket Sync https://flathub.org/apps/io.github.vemonet.EmojiMart

some that use tallwing frontend https://riftshare.app/

yodatak commented 1 year ago

for tauri https://github.com/tauri-apps/tauri-mobile

Alfagun74 commented 1 year ago

We are currently also checking if .NET Blazor would be a possible Alternative as we could then at least reuse the code.

yodatak commented 1 year ago

. Net Blazor don't seem to be Linux https://github.com/dotnet/maui/issues/11738

mhrastegari commented 1 year ago

Hey @Alfagun74 Have you checked BitPlatform's templates?

Alfagun74 commented 1 year ago

I did. Also saw blazor electron as an option but then the app runs on bloated and resource hungry chromium

Alfagun74 commented 1 year ago

We're currently exploring Avalonia's fantastic new WebAssembly feature. You can check it out here: Avalonia WebAssembly Feature.

This can be developed as a web-based app and also as an on-premise app for various platforms:

Our primary focus will be on the following, in this order:

  1. Browser
  2. Windows
  3. Linux

We will keep you updated here as soon as we have a simple Proof of Concept that this could work.

Alfagun74 commented 12 months ago

Image

We've made progress in rendering elements and creating a login feature in the Avalonia WASM PoC. However, there's an issue with securely storing login credentials using web technologies right now. In the future, we'll likely need a more robust authentication flow that utilizes cookies. For now, we're planning to temporarily store credentials in the browser storage, but it's not a secure method.

Our current issue is figuring out how to use the browser storage from Avalonia, to cache and save stuff, and we're actively working on that. We'll keep you updated on how things are going.

Alfagun74 commented 10 months ago

Avalonia WASM does not seem mature enough to rewrite our entire client application in it at this point in time. We are taking a closer look at UNO right now.

vxzms commented 10 months ago

I did. Also saw blazor electron as an option but then the app runs on bloated and resource hungry chromium

I don't know if you have tested photino.Blazor, it seems like it saves a lot of resources compared to electron

Alfagun74 commented 9 months ago

Hey everyone,

I wanted to give you all an update on the experiments we conducted using MAUI, Avalonia WASM and the Uno Platform for our cross-platform application and web UI.

After looking into this thoroughly, we realized that both tested UI-frameworks still need more development and improvement. The backend system also requires significant enhancements, especially for things like authentication, to properly support a web-based client.

I regret to inform you all that we have decided not to proceed with the development of a cross-platform application or web UI, at least for now and in the near future. We might revisit this idea later on though.

Here are the main reasons behind our decision:

  1. The technologies needed to port our app to a new UI-framework without losing too much of our work are not fully developed and stable yet.

  2. From a business perspective, it's not financially feasible for us to abandon half of our existing product, which is already at a mature stage. Starting from scratch with less familiar technologies wouldn't align with our goal of making a stable income with our business.

  3. It's important to mention that most gamers prefer using Windows, while Linux gamers represent a significantly smaller group. To put it simply, out of all active Steam users, approximately 98% are on Windows, while only 2% are on Linux (you can check the statistics here). This information highlights the financial challenge of scrapping and rewriting 1.5 years' worth of frontend work to cater a single-digit percentage of gamers.

We understand that this news might be disappointing for some of you. Please know that we carefully considered all the factors and made this choice in the best interest of our business + product and their long-term success. We truly appreciate your understanding and ongoing support.

Thank you. <3