Fig. 01
Turn the old web back on.
Your corner of the internet
Short links, hosted homepages, link trees, hand-curated webrings, and five widgets you paste onto any page — guestbook, hit counter, poll, status pill, banner strip. Self-hosted, on a box you already own.
found you through the webring — great taste in fonts
marcy · 12 Aug
hello from 1998
anon · 09 Aug
Awaiting review: 1
Join this ring
Edit the target later
Which one should I add first?
One vote per visitor
rewriting the marketing site, again
Updated 2h ago
- Surfaces
- 9
- Paste-in
- 5 one-liners
- Hosted
- 2 pages
- Runs on
- Your own box
- Source
- Coming soon
9 surfaces
What it puts on your page
Five of them are a single line you paste into any page. Two are pages the software hosts for you. The other two are the link shortener and the webring. Use one, use all of them, use none — they share a database and nothing else.
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.
- Short links
- Pages
- Link trees
- Banner strips
Connect.
Rings of sites a person curates, and a book visitors can sign. Discovery and conversation without an algorithm in the middle.
- Webrings
- Guestbooks
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.
- Hit counters
- Polls
- Status pills
Short links
RedirectPick a slug or let the server generate one. Update the destination later — the short link keeps working. Hits counted, no visitor profiling.
Pages
Hosted pageA homepage of your own, built from blocks rather than a blank file: text, pictures, free-form HTML, and any widget above dropped straight in.
Link trees
Hosted pageA hosted, themed page of link buttons. Each button records a click on the way through. Edit the list without losing the counts.
Webrings
RingBrowse and join curated rings of indie sites. Next/prev/random navigation that works without JS, and join requests a person reads before anything appears.
Guestbooks
EmbedThe sign-my-book widget, back from the dead. Visitors leave a message; nothing appears until you approve it. Rate-limited and honeypotted.
Hit counters
EmbedThe odometer, as a plain image — no JavaScript at all. Counts unique visitors once per IP per day, so a refresh does not inflate it.
Polls
EmbedAsk one question, get bars back. One vote per visitor, and the results stay hidden until they have voted. Editing options preserves the votes.
Status pills
EmbedA 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.
Banner strips
EmbedA hover-grow row of 88×31 badges linking to your friends’ sites. Curate a set in the admin, paste one script tag, done.
Fig. 02 · rendered, not screenshotted
What the widgets look like
These are drawn by this page, in this palette, to the shape the servers emit — not screenshots. There is no instance to photograph, and a mocked-up screenshot of software nobody can open is exactly the claim this site no longer makes.
found you through the webring — great taste in fonts
marcy · 12 Aug
hello from 1998
anon · 09 Aug
Awaiting review: 1
Always moderated. Nothing shows until you approve it.
Which one should I add first?
One vote per visitor
One vote per IP, ever. Results hidden until you vote.
rewriting the marketing site, again
Updated 2h ago
You curate it; the public only reads it.
blogCool site
clubUnder
construction
88×31, the dimension the format actually shipped at.
notdsk
lnx.mx/t/notdsk
My blog
Photos, 2004–
Guestbook
Clicks counted via /go/
A page it hosts. Clicks survive an edit.
On the wire
Every embed is one tag. No build step, no npm install, and no
framework landing on someone else’s blog. The hit counter
is a plain <img>, so
it works with JavaScript switched off entirely.
Specifics
How each part behaves
Claim on the left, the actual specifics on the right. Where a behaviour has a caveat, the caveat is in the table rather than in a footnote nobody reaches.
Embeds are one tag, and they stay one tag
Create the thing in the admin, hit Copy embed, paste it once. It renders on a static site, a Neocities page, or whatever CMS you are still running — nothing about the host has to change.
- Install
- One
<script>or<img>tag. No build step. - No-JS
- The hit counter works with scripts off. The other four need JS.
- Public write
- Signing a guestbook and voting in a poll need no API key — a visitor has none.
- Abuse
- Rate limits, a honeypot field, per-IP dedup, and moderation on the guestbook.
- Preview
- Every widget has a hosted preview URL, so you can see it before you paste it.
Links that outlive the destination
The whole point of a short URL is durability. Each mapping lives in your own database; when the target moves, you update it once and every link that was ever shared keeps working.
- Slug
- Custom, or a random hash whose length you choose.
- Editable
- Change the destination without breaking the short link.
- Counting
- Hits per mapping. No visitor profiling, no per-person history.
- Link trees
- Buttons route through
/go/to count a click, then redirect. - Export
-
lnx exportdumps every mapping as JSON, any time. - Backup
- One
pg_dump. It is your database on your box.
Webrings, moderated by a person
Webrings were the original answer to discovery without an algorithm, and they worked because somebody read the join requests. That part is not automated here either.
- Joining
- A visitor submits their site; the ring owner reads it. Nothing is listed until a person approves it, and no bot approves anything.
- Navigation
- Next, previous and random — server-side redirects, no JS required.
- Widget
- One per ring, pasted once on each member site.
- Directory
- Part of the public SPA, so it ships wherever you deploy it.
The parts list moved
The components, the default port map and what running it needs are on the architecture page. Every surface, one card each, is on features.
Release in preparation
Running it yourself
LinxMax runs daily on its own hardware. Getting it to the point where somebody else can run theirs — licence, packaging, a first-run that assumes nothing — is what is left.
- Source
- Release in preparation. When it is up, this page says where — there is no repository to point at before then.
- Licence
- Chosen before the source goes up, rather than sorted out afterwards.
- Price
- Free. No commercial tier, no hosted plan, nothing to sign up for.
The honest reason it is not out yet is the boring one: it is a one-person project that grew up on one LAN, and the parts that are fine for that are not the parts that are fine for a stranger’s server. Ports, secrets handling and the first-run experience all assume somebody who already knows the layout.
Go find a strange blog.
Webrings, guestbooks and hit counters were how people found each other before an algorithm did it for them. The about page has the longer version — what this is, what it deliberately isn't, and what state each part is really in.