How Flathub.org is made

Hey, I'm Kolja (he/him)

 

  • Part of the XBMC/Kodi Team
  • Wrote my own language server
  • Got involved in flathub
  • Father
  • Musican
  • Developer

What is flathub.org?

Why flathub.org is important

  • Onboarding

  • Discoverability

  • Convenience

  • Generate News

Onboarding

Getting flatpak & flathub installed

  • Solved for many distros
  • Some need instructions

Documentation

Flatpak and flathub docs go hand in hand

Discoverability

SEO optimization

  • Not exciting for most app devs
  • Some apps don't have websites
  • Get's us mindshare
  • Flathub already has a good standing

Social images

  • Used for embedding on social platforms
  • Language specific

Good quality data

  • SEO needs good data
  • We have a basic feedback loop in place

Convenience

Browsing on mobile

  • Discover an app while on the go
  • Sending apps you want to try to your desktop

Search

  • Finding apps via search is fast
  • Filters

Generate News

Help people and outlets to discover new apps

Help tell success stories

Announcements

How did we do it?

  • Fastly
  • Nginx
  • Frontend
    • next.js / react
  • Backend
    • python
  • Backend Queue Service
  • Email Service
    • Node.js
  • Postgres
  • Redis
  • Meilisearch

The stack

App uploaded/changed

  • Backend consumes latest version of Appstream Catalogue
  • Feed all changes into redis and meilisearch
  • Regenerate the Frontend pages
<?xml version="1.0" encoding="UTF-8"?>
<components version="0.8" origin="flatpak">
  <component type="desktop">
    <id>app.authpass.AuthPass</id>
    <name>AuthPass</name>
    <summary>Password Manager: Keep your passwords safe across all platforms and devices</summary>
    <developer_name>Herbert Poul</developer_name>
    <description><p>Easily and securely keep track of all your Passwords!</p><p>AuthPass is a stand alone password manager with support for the popular and proven KeePass (kdbx 3.x AND kdbx 4.x) format. Store your passwords, share across all your devices and easily find them whenever you need to login.</p><ul><li>All your passwords in one place.</li><li>Generate secure random passwords for each of your accounts.</li><li>Keep track of your accounts across the web.</li><li>App available for Mac, iPhone, iPad, Android Phones and Tablets, Linux and Windows.</li><li>Open multiple password files at the same time (e.g. one for work, one for personal - or even share your password files with coworkers)</li><li>Open Source available on https://github.com/authpass/authpass/</li><li>Dark Theme</li></ul><p>&lt;em&gt;=== UNDER YOUR CONTROL ===&lt;/em&gt;</p><p>AuthPass stores all your passwords in the open Keepass format, exactly where you want it. It does not send your passwords to our servers. But AuthPass supports saving to:</p><ul><li>Any local content provider from Android</li><li>Native Google Drive Integration</li><li>Native Dropbox Integation</li><li>Native WebDAV support to store in your own NextCloud or OwnCloud (or similar)</li><li>Native Microsoft OneDrive integration</li></ul><p>&lt;em&gt;=== FULL FEATURED, NO ADS, NO SUBSCRIPTION ===&lt;/em&gt;</p><p>As an open source project there are no artificial feature restrictions, no ads and no requirement for payments.</p><p>&lt;em&gt;Contributions welcome and encouraged&lt;/em&gt; ;-) (Always looking for developers, translators, documentation writers, UI designer, etc. :) ), just join our discord channel: https://authpass.app/go/discord</p><p>&lt;em&gt;=== UNDER ACTIVE DEVELOPMENT ===&lt;/em&gt;</p><p>This is an open source project which is still under heavy development, adding features. We would love your feedback via email or on the issue tracker at https://github.com/authpass/authpass/issues/</p><p>Also join the community on our discord channel at https://authpass.app/go/discord</p></description>
    <icon height="64" type="cached" width="64">app.authpass.AuthPass.png</icon>
    <icon height="128" type="cached" width="128">app.authpass.AuthPass.png</icon>
    <categories>
      <category>Security</category>
      <category>Utility</category>
    </categories>
    <kudos>
      <kudo>HiDpiIcon</kudo>
    </kudos>
    <project_license>GPL-3.0-or-later</project_license>
    <url type="bugtracker">https://github.com/authpass/authpass/issues</url>
    <url type="donation">https://github.com/sponsors/hpoul</url>
    <url type="homepage">https://authpass.app/</url>
    <url type="translate">https://translate.authpass.app</url>
    <screenshots>
      <screenshot type="default">
        <image type="source">https://data.authpass.app/data/screenshot_composition_small.png</image>
        <image height="351" type="thumbnail" width="624">https://dl.flathub.org/repo/screenshots/app.authpass.AuthPass-stable/624x351/app.authpass.AuthPass-8e73a9934daf432df01694fc5aa494e5.png</image>
        <image height="702" type="thumbnail" width="1248">https://dl.flathub.org/repo/screenshots/app.authpass.AuthPass-stable/1248x702/app.authpass.AuthPass-8e73a9934daf432df01694fc5aa494e5.png</image>
        <image height="63" type="thumbnail" width="112">https://dl.flathub.org/repo/screenshots/app.authpass.AuthPass-stable/112x63/app.authpass.AuthPass-8e73a9934daf432df01694fc5aa494e5.png</image>
        <image height="126" type="thumbnail" width="224">https://dl.flathub.org/repo/screenshots/app.authpass.AuthPass-stable/224x126/app.authpass.AuthPass-8e73a9934daf432df01694fc5aa494e5.png</image>
        <image height="423" type="thumbnail" width="752">https://dl.flathub.org/repo/screenshots/app.authpass.AuthPass-stable/752x423/app.authpass.AuthPass-8e73a9934daf432df01694fc5aa494e5.png</image>
      </screenshot>
    </screenshots>
    <content_rating type="oars-1.1"/>
    <releases>
      <release timestamp="1654819200" version="1.9.6_1904"/>
    </releases>
    <launchable type="desktop-id">app.authpass.AuthPass.desktop</launchable>
  <metadata><value key="flathub::build::build_log_url">https://buildbot.flathub.org/#/builders/6/builds/97962</value>
  </metadata>
    <bundle type="flatpak" runtime="org.freedesktop.Platform/x86_64/23.08" sdk="org.freedesktop.Sdk/x86_64/23.08">app/app.authpass.AuthPass/x86_64/stable</bundle>
 

Statistic update

  • Happens less frequently
  • Consume logs for each day
  • Do some aggregation
  • Save to redis/meilisearch

A glimpse into Meilisearch

Mailing

  • Queued mails
  • Processed by worker
  • Nice tool to preview/test mails

Translations

  • ~55 Languages
  • 591 strings
  • Using weblate

Many more...

Completely open source

What's next?

Ideas

  • Translated setup instructions
  • Country statistics per app
  • Improve xdg category spec
  • Review handling
  • Seasonal Lists/App campaigns
  • Age ratings
  • Payment

Questions?

Thanks

@razze@osna.social

Flathub

By Kolja Lampe

Flathub

  • 218