Features

What it puts on your page

Nine surfaces, grouped by what they are for. Five of them are a single line you paste into a page you already have; two are pages hosted for you that you link to.

4 surfaces

Publish.

A homepage, a page of links, a short URL, a row of badges for your friends. Somewhere of your own that you hold the keys to.

Redirect

Short links

Pick a slug or let the server generate one. Update the destination later — the short link keeps working. Hits counted, no visitor profiling.

Hosted page

Pages

A homepage of your own, built from blocks rather than a blank file: text, pictures, free-form HTML, and any widget above dropped straight in.

https://your-host/p/your-slug

Hosted page

Link trees

A hosted, themed page of link buttons. Each button records a click on the way through. Edit the list without losing the counts.

https://your-host/t/your-slug

Embed

Banner strips

A hover-grow row of 88×31 badges linking to your friends’ sites. Curate a set in the admin, paste one script tag, done.

<script src="https://your-host/banners/embed.js" data-set="ID" async></script>

2 surfaces

Connect.

Rings of sites a person curates, and a book visitors can sign. Discovery and conversation without an algorithm in the middle.

Ring

Webrings

Browse and join curated rings of indie sites. Next/prev/random navigation that works without JS, and join requests a person reads before anything appears.

Embed

Guestbooks

The sign-my-book widget, back from the dead. Visitors leave a message; nothing appears until you approve it. Rate-limited and honeypotted.

<script src="https://your-host/guestbooks/embed.js" data-guestbook="ID" async></script>

3 surfaces

Signal.

A counter, a poll, a line saying what you are up to. Enough to show the place is lived in, and nothing that profiles whoever visits.

Embed

Hit counters

The odometer, as a plain image — no JavaScript at all. Counts unique visitors once per IP per day, so a refresh does not inflate it.

<img src="https://your-host/counters/ID.svg" alt="visitor count">

Embed

Polls

Ask one question, get bars back. One vote per visitor, and the results stay hidden until they have voted. Editing options preserves the votes.

<script src="https://your-host/polls/embed.js" data-poll="ID" async></script>

Embed

Status pills

A small “what I am up to now” line — emoji, text, and how long ago you changed it. You curate it; the public only reads it.

<script src="https://your-host/status/embed.js" data-status="ID" async></script>

Under it

Five C++ servers and a box you own

Every surface above is served by one small process on your own hardware, behind one nginx vhost. The components, the default ports and what running it needs are on the architecture page.