an static landing page for your PDS that displays users & their bluesky posts. pds.wlo.moe
bluesky pds atproto

atproto pds landing page#

i wanted something pretty on my pds' home page :p

inspired by pds-dash by the witches over at witchcraft.systems!!

preview#

a screenshot of pds-landing. there are two main sections visible.
on the left is a sidebar with two subsections.
the first is titled willow's pds!, which has three parts: the server name,
the admin (willow @wlo.moe), and an about section mentioning that the
server is powered by pds-landing.
the second subsection is a list of hosted accounts. three accounts are shown:
contrib.wlo.moe, alt.pds.wlo.moe (displayed as wiwoah), and wlo.moe
(displayed as willow). each entry shows a banner image, profile picture,
and basic stats like posts, followers, and following.
on the right side of the screen is the profile page for "contrib.wlo.moe".
it has a large pink circle with an @ symbol acting as a placeholder for a
profile picture, no posts, 7 followers, no following, and no profile
description.

deploying#

# clone the repository
git clone git@tangled.sh:wlo.moe/pds-landing
git clone https://tangled.sh/@wlo.moe/pds-landing

cd pds-landing
bun i

mkdir config
cp example.json config/production.json
# edit config/production.json to your liking
# you can find the config schema in src/config/schema.ts

bun run build

then, point your web server to serve dist on the root / path. as an example, here's the relevant part of my caddyfile:

pds.wlo.moe {
  @backend {
    path /xrpc/* /.well-known/* /robots.txt /oauth/* /@atproto/*
  }
  handle @backend {
    reverse_proxy localhost:8090
  }

  handle {
    root * /var/www/sites/pds-landing
    try_files {path} /index.html
    file_server
  }
}

i'm not sure if @backend contains all the routes that need to be proxied to the pds as to not break anything, but it seems to work fine for me so far.

copying#

this project is licensed under the gpl v3.0, you can find a copy of the license in LICENSE.GPL-3.0.md.