a purple fedi client :3
  • JavaScript 66.4%
  • HTML 20.5%
  • CSS 12.8%
  • Dockerfile 0.3%
Find a file
2026-06-28 09:08:28 +03:00
docs implement csrf tokens, docs, update README 2026-06-20 05:43:17 +03:00
lib add search page 2026-06-21 06:40:14 +03:00
static show pronouns in name 2026-06-28 09:08:28 +03:00
templates show pronouns in name 2026-06-28 09:08:28 +03:00
tests rewrite template test to use snapshoting 2026-04-03 18:54:09 +03:00
.editorconfig implement csrf tokens, docs, update README 2026-06-20 05:43:17 +03:00
.gitignore implement csrf tokens, docs, update README 2026-06-20 05:43:17 +03:00
.prettierrc formatting 2025-09-06 21:07:39 +03:00
compose.yml.example add compose.yml.example and instructions for running a container in README.md 2026-04-11 18:50:40 -04:00
Containerfile bump container base image from node:25.9.0-alpine3.23 to node:26.3.1-alpine3.24 2026-06-19 23:07:48 -04:00
CONTRIBUTING.md reword no ai statement 2026-03-09 18:03:43 +02:00
COPYING add COPYING 2026-02-26 04:39:27 +02:00
csrf_tokens.js fix: use setInterval instead of setTimeout 2026-06-21 05:20:17 +03:00
main.js show purple version information on more page 2026-06-28 05:15:23 +03:00
package.json mostly clean up routes.js 2026-04-04 17:56:18 +03:00
purple.env.example various cookie improvements 2026-04-11 01:54:00 +03:00
README.md implement csrf tokens, docs, update README 2026-06-20 05:43:17 +03:00
routes.js show pronouns in name 2026-06-28 09:08:28 +03:00

Purple

A purple Fedi client :3

Warning

This is a hobby project developed for fun. I don't really know what I'm doing when it comes to software security (or anything really). There is no warranty or guarantees of any kind; if you want to run a public instance, you are doing so at your own risk. Also it's very much work-in-progress, expect issues and many missing features. Contributions welcome though!

Features

  • No external dependencies
  • No browser-side Javascript
  • uh... it's purple?

Getting started

Requirements

This software has no dependencies other than Node.js.

Starting the server

Run this command to start Purple:

node main.js

This starts the server on port 3030 by default. Open http://localhost:3030/ in a browser to use.

Configuration

Purple reads configuration from file purple.env. If the file does not exist, default values are used instead, which are fine for local testing or development.

Copy the example purple.env.example file:

cp purple.env.example purple.env

Environment variables can also be used directly:

PURPLE_PORT=3030 node main.js

Running Purple with Docker/Podman

Requirements

Either Docker or Podman is required. The packages docker-compose/podman-compose are needed to use compose files.

Substitute docker with podman in the examples if using Podman.

Starting the server (with compose)

Copy the example compose.yml.example file:

cp compose.yml.example compose.yml

Edit the default environment variables, then, run this command to start Purple:

docker compose up -d

Starting the server (without compose)

Build the container image:

docker build -t purple:latest -f Containerfile .

Then, run this command to start Purple:

docker run -d -p 127.0.0.1:3030:3030 --name purple \
    --env "PURPLE_PRODUCTION=1" \
    --env "PURPLE_PUBLIC_ADDRESS=https://purple.example.com" \
    purple:latest

🏳️‍🌈 2026 All gay reserved 🏳️‍⚧️