Repository for the Mastodon/Gotosocial frontend behind https://teadeck.de
  • JavaScript 66.6%
  • TypeScript 26.5%
  • CSS 5.2%
  • HTML 0.8%
  • Shell 0.6%
  • Other 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
knubbel 2ae3c6e935
All checks were successful
build / build (push) Successful in 10m57s
Create feeds without the page reloading
Mastodon's form for a new feed (list) did not stop the browser from
submitting it as well, so the page reloaded and cut off the request
that creates the feed. The new 13-upstream-fixes.patch holds this and
later fixes to Mastodon's own code.
2026-10-11 14:41:55 +02:00
.forgejo/workflows Publish under the Teadeck organization 2026-10-11 13:37:36 +02:00
container Use the organization's lowercase name in source links 2026-10-11 13:49:56 +02:00
docs Publish under the Teadeck organization 2026-10-11 13:37:36 +02:00
integration Show About and the terms on GoToSocial, and no collections there 2026-10-11 14:30:11 +02:00
patches Create feeds without the page reloading 2026-10-11 14:41:55 +02:00
scripts Publish under the Teadeck organization 2026-10-11 13:37:36 +02:00
security Initial commit 2026-09-22 20:31:05 +02:00
tests Create feeds without the page reloading 2026-10-11 14:41:55 +02:00
.dockerignore Initial commit 2026-09-22 20:31:05 +02:00
.env.example Initial commit 2026-09-22 20:31:05 +02:00
.gitignore Initial commit 2026-09-22 20:31:05 +02:00
compose.build.yml Initial commit 2026-09-22 20:31:05 +02:00
compose.yml.example Publish under the Teadeck organization 2026-10-11 13:37:36 +02:00
CONTRIBUTING.md Publish under the Teadeck organization 2026-10-11 13:37:36 +02:00
LICENSE Initial commit 2026-09-22 20:31:05 +02:00
NOTICE Initial commit 2026-09-22 20:31:05 +02:00
package.json Initial commit 2026-09-22 20:31:05 +02:00
README.md Add a large composer with a live Markdown preview 2026-10-11 13:33:12 +02:00
SECURITY.md Initial commit 2026-09-22 20:31:05 +02:00
upstream.lock.json Update Mastodon to nightly.2026-10-10 and its redesign 2026-10-11 00:38:55 +02:00

Teadeck

Teadeck is a standalone version of Mastodon's web interface for Mastodon and GoToSocial servers.

The idea is simple: use the Mastodon interface with your existing account, with a few additions for GoToSocial and a look of its own. You get single- and multi-column layouts, tea-inspired themes, a large composer for longer posts, and a Markdown button next to the emoji picker with a live preview when your server supports it. GoToSocial accounts also get a control for who can reply to a post.

Teadeck is still in active development and has no stable release yet.

Using Teadeck

Open a Teadeck installation, enter your server's address and sign in on your server. Choose Stay signed in if you want to save the account in this browser. You can add more accounts and switch between them, each with its own theme and settings.

Your browser talks directly to your Mastodon or GoToSocial server.

Unsent posts are not saved across reloads or account switches. Copy anything you want to keep first.

What to trust

The Teadeck host supplies the JavaScript running in your browser, and that code can access your account tokens. Static hosting does not remove that risk, and the host can log visits. Use an installation you trust, or run your own on a dedicated HTTPS origin.

  • OAuth uses PKCE. Authenticated API requests are restricted to the selected server, and redirects are rejected.
  • Sign-in tokens stay in session storage, or also in IndexedDB when you choose Stay signed in. Preferences are saved in local storage. Code running on the same origin can read all of it.
  • Post HTML comes from your server. Its content sanitisation and Teadeck's Content Security Policy both matter.
  • The service worker caches application files, not API responses.

Deploying

Docker Compose

The easiest way to run Teadeck is with the published container image. You need Docker and Compose.

Download compose.yml.example and .env.example into the same directory, then run:

cp compose.yml.example compose.yml
cp .env.example .env
mkdir -p logo
docker compose pull
docker compose up -d

The container serves Teadeck on port 8080, published on all host interfaces by default. Open http://localhost:8080 on the Docker host to try it. For public access, put an HTTPS reverse proxy such as Caddy or nginx in front of it.

Use .env to choose a different port, logo or default theme. See Configuration for the options and Deployment for updates and rollbacks.

Without Docker

Build Teadeck as described below, then serve the contents of dist/ with a web server. Use container/nginx.conf as a reference for routing, caching and security headers, adjusting the container-specific paths for your setup. Requests to app routes must fall back to index.html.

With either method, serve Teadeck at the root of a domain, not under a path such as /teadeck. Your Mastodon or GoToSocial server must use HTTPS.

Building

The build fetches the Mastodon commit pinned in upstream.lock.json, applies the changes in patches/ on top and adds the integration code in integration/.

You need a full checkout, Node.js 24.2 or newer, npm, Corepack, Git and GNU tar. The first build downloads Mastodon and its dependencies, so allow several GB of disk space.

From the repository directory, run:

npm run doctor
npm run build:fresh

The finished web app is in dist/. To package your build in a container and run it:

mkdir -p logo
docker compose -f compose.yml.example -f compose.build.yml up -d --build

For development and tests, see Contributing.

License

Teadeck is licensed under AGPL-3.0-or-later, as is Mastodon. See NOTICE for attribution and integration/fonts for font licenses. Each build includes its source code and build instructions at /source.tar.gz.