Skip to content

Fyne App Store Proposal

Andy Williams edited this page Apr 2, 2024 · 12 revisions

Note

This document is archived as it refers to a design process. You can see that we added a metadata format using toml - https://docs.fyne.io/started/metadata

As Fyne continues to mature and become fully cross-platform, an App Store where users can install Fyne based applications makes sense. We can keep a list of applications on fyne.io stomewhere and store information about the applications in an XML or JSON or similar. The format could look something like:

<App>
   <Name>AppName</Name>
   <Source>
      <Git>github repo</Git>
      <Tag>optional</Tag>
   </Source>
   <Icon>relative/path/to/icon.png</Icon>
   <Screenshots>
      <Screenshot>relative/path/to/screenshot.png</Screenshot>
   </Screenshots>
   <Category>Games</Category>
   <Website>url</Website>
   <Developer>name(s)</Developer>
</App>

The UI for the app store could then list the apps and populate icons/screenshots/details based off each apps README in the repo in order to present the apps in the store.

Apps could then be installed easily cross-platform with the App Store handling bundle/package fyne commands/go commands etc... This will make the barrier to install apps very simple for end users and alleviate the need for developers to package their apps cross-platform and release packages.

Once the backend is in place, this also present an excellent opportunity for one of the team to do a live coding stream to showcase how easy it is to build UIs using Fyne.

Finally - once the Web GL driver is completed... even something like apps.fyne.io could use the same app and allow the apps to be browsed from the web if users don't want to install the app store locally. A fully cross-platform app store showcasing our ecosystem would be useful indeed.

Implementation

This is now available to query at: https://apps.fyne.io/api/v1/list.json

We used JSON, the content looks like this currently (some features missing, notably screenshots):

[{
  "id": "xyz.andy.beebui",
  "name": "beebUI",
  "icon": "https://github.com/andydotxyz/beebui/blob/master/beebui.png?raw=true",
  "summary": "A BBC Micro Emulator based on Fyne and skx/gobasic",
  "url": "http://localhost:4000/apps/beebui.html",

  "category": "entertainment",
  "website": "https://github.com/andydotxyz/beebui",
  "developer": "Andy Williams",

  "source": {
    "git": "https://github.com/andydotxyz/beebui.git",
    "tag": "master",
    "dir": "cmd/beebui"
  },
  "version": "",
  "date": "2019-03-17T19:32:14+00:00"
},
...]