Skip to content

revoltchat/frontend

Revolt Frontend

Stars Forks Pull Requests Issues Contributors License

The official web client powering https://revolt.chat/app, built with Solid.js 💖.

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
  • Node.js
  • pnpm (run corepack enable)

Then proceed to setup:

# clone the repository
git clone --recursive https://github.com/revoltchat/frontend client
cd client

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

# install all packages
pnpm i

# build deps:
pnpm build:deps

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

# run dev server
pnpm dev:web

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

Pulling in Revolt's assets

If you want to pull in Revolt 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

Faster iteration with Revolt.js

To make it easier to work with revolt.js, you may want to temporarily make this change:

# packages/revolt.js/package.json
-  "module": "lib/esm/index.js",
+  "module": "src/index.ts",

Any edits to the revolt.js codebase will immediately be reflected while developing.

Deployment Guide

Build the app

# install packages
pnpm i

# build dependencies
pnpm build:deps

# build for web
pnpm build:web

# ... when building for Revolt production, use this instead of :web
pnpm build:prod

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

Routing Information

The app currently needs the following routes:

  • /login
  • /pwa
  • /dev
  • /settings
  • /friends
  • /server
  • /channel

This corresponds to Content.tsx#L33.