Stoat for Web – browser app for Stoat
  • TypeScript 99.2%
  • Shell 0.3%
  • JavaScript 0.2%
  • CSS 0.2%
  • Nix 0.1%
Find a file
2026-02-18 16:36:36 +11:00
.github/workflows ci: always run tests (#711) 2026-02-13 14:10:42 +00:00
.mise fix: hot fix stoat dev server, more explicit errors (for tom 💜) (#713) 2026-02-13 14:16:14 +00:00
.vscode chore: lint & format 2025-11-08 13:04:32 +00:00
doc feat: new stable message list view (#580) 2026-02-12 22:31:43 +00:00
lifecycle fix: regenerate emoji mapping using correct filter 2025-11-02 19:08:46 +00:00
packages Merge branch 'main' into feat/klipy-gifbox-url 2026-02-16 12:34:23 -07:00
.gitignore Merge branch 'main' into feat/account-deletion-confirm 2024-12-17 16:33:02 +00:00
.gitmodules refactor: use stoat.js/stoat-api 2025-10-16 18:41:50 +01:00
.npmrc feat: add login 2022-09-21 23:26:29 +01:00
.prettierignore chore: switch to mise for tooling (& fix CI workflows) (#589) 2026-01-21 13:52:19 -05:00
.prettierrc chore: remove pandabox plugin as it is broken, update eslint/prettier (#610) 2026-02-09 17:24:37 +00:00
.release-please-manifest.json chore(main): release stoat-for-web 0.2.1 (#708) 2026-02-13 14:32:27 +00:00
CHANGELOG.md chore(main): release stoat-for-web 0.2.1 (#708) 2026-02-13 14:32:27 +00:00
default.nix chore: switch to mise for tooling (& fix CI workflows) (#589) 2026-01-21 13:52:19 -05:00
eslint.config.mjs chore: lint & format 2025-11-08 13:04:32 +00:00
git-town.toml ci: configure git town (#607) 2026-02-08 16:58:47 +00:00
GUIDELINES.md refactor: use stoat.js/stoat-api 2025-10-16 18:41:50 +01:00
LICENSE feat: initial sweep to rebrand to Stoat 2025-09-29 16:10:09 -05:00
NOTES feat: scroll to bottom on "escape" keybind 2023-12-13 17:42:52 +00:00
package.json chore(main): release stoat-for-web 0.2.1 (#708) 2026-02-13 14:32:27 +00:00
pnpm-lock.yaml chore: remove pandabox plugin as it is broken, update eslint/prettier (#610) 2026-02-09 17:24:37 +00:00
pnpm-workspace.yaml refactor: use stoat.js/stoat-api 2025-10-16 18:41:50 +01:00
README.md chore: rename remaining links from old revolt domain to stoat (#593) 2026-01-26 20:11:23 +00:00
release-please-config.json ci: configure release-please (#526) 2025-11-19 21:33:59 +00:00
vercel.json chore: prepare for production deployment 2023-04-03 16:27:03 +01:00

Stoat Frontend

Stars Forks Pull Requests Issues Contributors License

The official web client powering https://stoat.chat/app, built with Solid.js 💖.
Track the project roadmap on OpenProject.

Development Guide

Before contributing, make yourself familiar with our contribution guidelines, the code style guidelines, and the technical documentation for this project.

Before getting started, you'll want to install:

  • Git
  • mise-en-place

Then proceed to setup:

# clone the repository
git clone --recursive https://github.com/stoatchat/for-web client
cd client

# update submodules if you pull new changes
# git submodule init && git submodule update

# install all packages
mise install:frozen

# build deps:
mise build:deps

# or build a specific dep (e.g. stoat.js updates):
# pnpm --filter stoat.js run build

# customise the .env
cp packages/client/.env.example packages/client/.env

# run dev server
mise dev

# run all CI checks locally
mise check

Finally, navigate to http://local.revolt.chat:5173.

Pulling in Stoat's brand assets

If you want to pull in Stoat brand assets after pulling, run the following:

# update the assets
git -c submodule."packages/client/assets".update=checkout submodule update --init packages/client/assets

You can switch back to the fallback assets by running deinit and continuing as normal:

# deinit submodule which clears directory
git submodule deinit packages/client/assets

Deployment Guide

Build the app

# install packages
mise install:frozen

# build dependencies
mise build:deps

# build for web
mise build

# ... when building for Stoat production
mise build:prod

You can now deploy the directory packages/client/dist.

Routing Information

The app currently needs the following routes:

  • /login
  • /pwa
  • /dev
  • /discover
  • /settings
  • /invite
  • /bot
  • /friends
  • /server
  • /channel

This corresponds to Content.tsx#L33.