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.
- 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.
- Installation
- Development
- DevTools
- Useful env variables for dev
- Migrations
- Manual Packaging
- Development tools
- Releases
- Docs
- Contributing
Download the newest version from GitHub Releases. Releases are currently marked as pre-release while Platform matures.
Download and run Platform-Setup.exe.
Choose the package that matches your system:
Platform-x86_64.AppImageworks across most distributions.Platform-amd64.debis for Debian, Ubuntu and derivatives.Platform-x86_64.rpmis 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.AppImageArch Linux users can create a native package with the Arch packaging command.
The automated releases do not currently include a macOS build. It can still be built locally 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-devThen clone and install the project:
git clone https://github.com/lukasborges/platform.git
cd platform
corepack enable
yarn install --immutableStart Platform in development mode:
yarn devBuild every workspace without creating an installer:
yarn build- macOS: Cmd Alt I or F12
- Linux: Ctrl Shift I or F12
- Windows: Ctrl Shift I or F12
See electron-debug for more information.
- React DevTools is available in Chrome DevTools
- Apollo Client DevTools is available in Chrome DevTools
For Redux actions and state, start the app with STATION_REDUX_LOGGER=1 and use the renderer console.
To inspect the main process, connect Chrome by visiting chrome://inspect and selecting to inspect the launched Electron app.
STATION_NO_WEBVIEWSif exists, webviews are not loadedSTATION_REDUX_LOGGERif exists, will enable redux-logger in rendererSTATION_AUTOUPDATER_MOCK_SCENARIOset the scenario for the mock ofAutoUpdatermodule:available(default), mock an update is available and downloadednot-availablemock an update is not available
OVERRIDE_USER_DATA_PATHoverrides theuserDatapath (example:OVERRIDE_USER_DATA_PATH="Platform Canary" yarn run dev)STATION_CHECK_INACTIVE_TAB_EVERY_MSoverride the interval period between each check for inactive tabsSTATION_QUICK_TRANSITIONSall transitions are quick (used to test changing colors)STATION_NO_CHECK_FOR_UPDATEdisables periodic update checks; manual checks still workDEBUG=service:*prints service framework diagnostics in every process
Database migrations use Umzug and run automatically when Platform opens a profile. See the persistence guide before changing a model, proxy or migration.
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.
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-iconsThe 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 129When 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.
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-develFrom the repository root, install the JavaScript dependencies and run the Arch release command:
yarn install --immutable
yarn release:archThe 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.zstThe 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.
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.shHere 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.
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.
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.
