Monorepo for Revolt's frontend.
  • TypeScript 98.9%
  • JavaScript 0.3%
  • Shell 0.3%
  • Dockerfile 0.2%
  • CSS 0.2%
  • Other 0.1%
Find a file
Thomas Ryan c76e55f64d
Some checks are pending
Build documentation / deploy (push) Waiting to run
Docker Build & Push / Build Docker Image (push) Waiting to run
Release Please / Release Please (push) Waiting to run
Release Please / Publish release to stable branch (push) Blocked by required conditions
chore: Added CODEOWNERS file (#1019)
* meta: Added CODEOWNERS file

Signed-off-by: Thomas Ryan <contact@thomasryan.ca>

* meta: Changed @infi to @stoatchat/ui-ux

Signed-off-by: Thomas Ryan <contact@thomasryan.ca>

---------

Signed-off-by: Thomas Ryan <contact@thomasryan.ca>
Co-authored-by: Thomas Ryan <contact@thomasryan.ca>
2026-03-14 22:18:05 -07:00
.github chore: Added CODEOWNERS file (#1019) 2026-03-14 22:18:05 -07: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
docker feat: Enable video with an env var (#847) 2026-02-28 16:35:59 +00:00
lifecycle fix: regenerate emoji mapping using correct filter 2025-11-02 19:08:46 +00:00
packages feat: Accept autocomplete suggestion w/ tab (#1003) 2026-03-12 15:55:23 -06:00
.dockerignore feat: Adds a Docker Build for the Web Client (#697) 2026-02-18 21:37:43 -05: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.3.0 (#716) 2026-03-06 19:42:48 +00:00
CHANGELOG.md chore(main): release stoat-for-web 0.3.0 (#716) 2026-03-06 19:42:48 +00:00
default.nix chore: switch to mise for tooling (& fix CI workflows) (#589) 2026-01-21 13:52:19 -05:00
Dockerfile feat: Enable video with an env var (#847) 2026-02-28 16:35:59 +00: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.3.0 (#716) 2026-03-06 19:42:48 +00:00
pnpm-lock.yaml feat: Add Toggleable Enhanced Noise Suppression Using RNNoise (#783) 2026-03-12 15:53:37 -06:00
pnpm-workspace.yaml refactor: use stoat.js/stoat-api 2025-10-16 18:41:50 +01:00
README.md fix: Updated README.md to include connecting to official backend (#751) 2026-03-02 10:31:06 +01: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:

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

Using the official backend

By default, the client connects to a backend running on the same host (localhost).

If you want the client to connect to the official hosted backend instead, open the .env file at /packages/client/.env and comment out the local URL varaibles like this:

# connect to local Stoat instance
#VITE_API_URL=http://localhost:14702
#VITE_WS_URL=ws://localhost:14703
#VITE_MEDIA_URL=http://localhost:14704
#VITE_PROXY_URL=http://localhost:14705

When these variables are not set, the client automatically falls back to the official backend. (See https://github.com/stoatchat/for-web/blob/main/packages/client/components/common/lib/env.ts)

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.