Skip to content
This repository was archived by the owner on Oct 7, 2026. It is now read-only.
lukasborgesPublic archive

About

Independent community-maintained desktop workspace for web apps and multiple accounts

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

Platform

Warning

This project has been discontinued. Development has moved to Shep, an actively maintained project with more features and a codebase that is easier to maintain. Please use Shep instead; Platform will receive no further updates.

Platform is an independent, community-maintained desktop workspace that brings web apps and multiple accounts together in one place. It originated as a continuation of Station Desktop and now follows its own roadmap.

The goal is simple: preserve the workflow people enjoyed in Station while keeping it useful with today's services and operating systems.

Platform App Store

What makes Platform different

  • Keeps Station's workflow working on current systems, with reliable sign-in, notifications, external links and spell-check.
  • Refreshes the experience with a curated App Store, clearer app and account controls, and support for custom app icons.
  • Gives the project its own Platform identity and provides ready-to-use builds for Linux and Windows.

Table of Contents

Installation

Ready-to-use builds

Download the newest version from GitHub Releases. Releases are currently marked as pre-release while Platform matures.

Windows

Download and run Platform-Setup.exe.

Linux

Choose the package that matches your system:

  • Platform-x86_64.AppImage works across most distributions.
  • Platform-amd64.deb is for Debian, Ubuntu and derivatives.
  • Platform-x86_64.rpm is for Fedora, RHEL and compatible distributions.

For the AppImage, make the file executable before opening it:

chmod +x Platform-x86_64.AppImage
./Platform-x86_64.AppImage

Arch Linux users can create a native package with the Arch packaging command.

macOS

The automated releases do not currently include a macOS build. It can still be built locally from source.

Build from source

You will need Git, Node.js 20.19 or newer, Corepack, and the usual native build tools for your operating system.

On Debian and Ubuntu, install the build dependencies first:

sudo apt install build-essential python3 graphicsmagick libxtst-dev libx11-dev

Then clone and install the project:

git clone https://github.com/lukasborges/platform.git
cd platform
corepack enable
yarn install --immutable

Development

Start Platform in development mode:

yarn dev

Build every workspace without creating an installer:

yarn build

DevTools

Toggle Chrome DevTools

  • macOS: Cmd Alt I or F12
  • Linux: Ctrl Shift I or F12
  • Windows: Ctrl Shift I or F12

See electron-debug for more information.

Library DevTools

For Redux actions and state, start the app with STATION_REDUX_LOGGER=1 and use the renderer console.

Main process debugging

To inspect the main process, connect Chrome by visiting chrome://inspect and selecting to inspect the launched Electron app.

Useful env variables for dev

  • STATION_NO_WEBVIEWS if exists, webviews are not loaded
  • STATION_REDUX_LOGGER if exists, will enable redux-logger in renderer
  • STATION_AUTOUPDATER_MOCK_SCENARIO set the scenario for the mock of AutoUpdater module:
    • available (default), mock an update is available and downloaded
    • not-available mock an update is not available
  • OVERRIDE_USER_DATA_PATH overrides the userData path (example: OVERRIDE_USER_DATA_PATH="Platform Canary" yarn run dev)
  • STATION_CHECK_INACTIVE_TAB_EVERY_MS override the interval period between each check for inactive tabs
  • STATION_QUICK_TRANSITIONS all transitions are quick (used to test changing colors)
  • STATION_NO_CHECK_FOR_UPDATE disables periodic update checks; manual checks still work
  • DEBUG=service:* prints service framework diagnostics in every process

Migrations

Database migrations use Umzug and run automatically when Platform opens a profile. See the persistence guide before changing a model, proxy or migration.

Inspect DB

Open db/station.db inside the active Electron user-data directory with any SQLite client. Development and packaged builds intentionally keep the legacy profile directory names so existing Station data remains available.

Manual Packaging

Refresh catalog icons

Catalog icons are checked into packages/app/manifests/icons so the App Store works offline and does not expose catalog browsing to a third-party icon service. Refresh them from the canonical public service domains with:

yarn catalog:refresh-icons

The updater asks Icon Horse for the domain favicon, normalizes modern ICO files to PNG when necessary, validates the downloaded file, and keeps the existing icon if resolution or validation fails. Use --dry-run to inspect candidates without writing files, or --id <manifest-id> to update selected applications:

yarn catalog:refresh-icons --dry-run
yarn catalog:refresh-icons --id 10 --id 129

When an application's scope or start_url is not its canonical public website, add an entry to scripts/application_manifests/icon-sources.json. Use a page URL as a string to select another hostname, or { "page": "...", "icon": "..." } to pin an official high-resolution asset. Set an entry to false to preserve its existing icon. A self-hosted Besticon /allicons.json endpoint can be selected through BESTICON_URL or --provider.

Arch Linux package

The Arch package is built separately from the targets configured in electron-builder.yml. It uses the repository's PKGBUILD and produces a standard .pkg.tar.zst package that can be installed directly with pacman.

Install the Arch build tools first:

sudo pacman -S --needed base-devel

From the repository root, install the JavaScript dependencies and run the Arch release command:

yarn install --immutable
yarn release:arch

The command builds the application, asks electron-builder to create release/linux-unpacked/, and then runs makepkg with PKGDEST set to the repository's release/ directory.

makepkg reads release/linux-unpacked/ and writes an artifact similar to:

release/platform-desktop-app-3.3.0.b1-2-x86_64.pkg.tar.zst

Inspect and install the generated package, replacing <version> with the version printed by makepkg:

pacman -Qip release/platform-desktop-app-<version>-x86_64.pkg.tar.zst
sudo pacman -U release/platform-desktop-app-<version>-x86_64.pkg.tar.zst

The package provides and replaces station-desktop-app, so an existing Station installation is migrated without requiring both packages to be installed. The current PKGBUILD intentionally does not depend on the removed Arch http-parser package.

Linux rpm (Fedora 41+)

electron-builder's bundled fpm is too old for rpm >= 4.20. Build the rpm with the helper script after electron-builder has produced release/linux-unpacked/:

./scripts/build-rpm.sh

Development tools

Here is a list of tools used during the development process. Consider adding the corresponding plugins to your IDE.

WebStorm and VSCode should be correctly configured by default.

Releases

Every push to main starts the release workflow. It creates the next v3.3.0-beta.N pre-release and publishes the Linux and Windows installers listed above. The numbering continues from the earlier v3.3.0-fork.N release series.

Add [skip release] to a commit message when the change should not publish a new build. macOS artifacts are not part of the automated workflow yet.

Docs

Contributing

Bug reports and pull requests are welcome. Before opening a PR, make sure yarn lint and yarn test pass, and describe the user-facing impact of the change.

About

Independent community-maintained desktop workspace for web apps and multiple accounts

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages