Building Soledade

· PM-mirror


A while ago I saw something extremely interesting, a project called Nightfall City by someone who goes by the pseudonym m15o, and I thought it was fantastic, I found it fascinating.

I started following m15o's projects closely, and the more I learned, the more I wanted to understand their creativity and their knack for reworking things and creating new ones.

One thing caught my attention more than anything else I saw: the protocol used for Nightfall City.

So it occurred to me that maybe I could create my own protocol and start a similar project built entirely on it.

So I started building SOLED/2.

What it is #

Soledade describes itself as “a textual blog, quiet and handmade”. Beneath that sentence there's a metaphor that organizes the whole system: the site is a small city.

None of this depends on JavaScript in the browser. The visitor only gets HTML and CSS — the city is static, and all the logic lives earlier, at the moment the text is published.


The city from the inside #

Citizens, neighborhoods and houses #

Citizenship is open: anyone registers from the terminal, picks a handle and gets a technical identity (a secret hashed with SHA-256 — not an official document). From then on they can publish. The Mayor moderates afterwards, if needed.

Each published text corresponds to a .md file inside content/, with a small YAML header (the front matter) that gives the title, the neighborhood, the tags and the date:

1---
2title: "A canção de Cassilda"
3citizen: "pablo"
4district: "cinema"
5tags: ["ensaio", "carcosa"]
6date: "2026-06-01"
7---
8
1# O corpo do texto vem aqui, em Markdown.
2

How it works #

The architecture in one sentence #

Publishing is writing a file. Reading is a cat. From that idea, the system has three pieces of infrastructure and a Python package that stitches it all together — no Django, no Flask, no web framework.

Two TCP ports, two roles #

The city has no login in the browser. All the writing and reading “from the inside” happens over plain TCP, handled by two small servers written with nothing but Python's standard library:

The path of a text to the web #

 1você, no terminal (ncat)
 2        |
 3        | porta 1915 · SOLED/2 + identidade
 4        v
 5
 6public/         ── HTML estático
 7        |
 8        v
 9
10Caddy :443      ── HTTPS automático
11        |
12        v
13
14navegador
15

build.py wipes the public/ folder and regenerates the whole thing every time: pages, indexes by year/month, neighborhood pages, tags, RSS feeds (global, per citizen and per neighborhood), sitemap.xml, a 404 and a health endpoint. The end visitor only touches static files served by Caddy, which takes care of HTTPS on its own.


The experience #

Publishing from the command line #

Since there's no form, the citizen puts together a “text package” and sends it with ncat (or nc). The site includes a whole guide for this. A SOLED/2 submission looks like this — the real identity goes in place of the placeholder:

 1# enviar um texto para a cidade (porta 1915)
 2
 3SOLED/2
 4CITIZEN pablo
 5IDENTITY <sua-identidade-cidadã>
 6PATH citizens/pablo/posts/meu-texto.md
 7
 8---
 9title: "Meu texto"
10district: "cinema"
11---
12
13# Corpo do texto
14
15.
16

The protocol has more verbs: REGISTER (become a citizen), PREVIEW (validate without saving), LIST (list your files) and RECOVER (recover your identity). There's rate limiting per IP and moderation — banning an IP or a citizen — when needed.


Spec sheet #

What the city is made of #

The presentation is a single base.html file: dark theme, monospaced font, embedded CSS, no front-end pipeline. The whole server installation is an idempotent bash script that sets up packages, venv, systemd, Caddy and the firewall in one go.


Why this way #

The design philosophy #

Made of text. Served by silence. Read by browser or terminal.

— the footer of every page in Soledade

Soledade is, in the end, a calm bet: that a place for writing can exist without metrics, without infinite scroll and without an algorithm — just houses, neighborhoods and words. The city is open, and so is citizenship.

Visit the city at soledade.city :)