p.enthalabs

Texttile: The Multiplayer Blog Engine

One entry.

Many authors.

No conflicts.

Texttile is a blog engine for more than one writer. Everyone on the blog can be in the same entry at the same time, photos and videos included. One of you drags a picture into place, and the others watch it move.

Open source in Elixir

Day 23, Fakarava draft saved · just now Publish

**julia** is writing Take over

Rain over the lagoon

Markdown · saves as you type

Tiles 6

Any of you can drag them into a new order.

1

container to run, one folder to back up

0

plugins to keep patched

0

cookies, trackers and consent banners

How writing together works

Here is what happens when two of you open the same entry.

One person has the text

That person types. Everyone else sees the words appear as they are written, and can take the text over with one click. Texttile asks before it hands the text over, and tells the person who had it. Nothing gets lost, and they can take it straight back.

Nobody has to wait for the gallery

The gallery and the entry settings are never locked. You can all drag tiles, photos and videos alike, set the date and change the entry's web address at the same time, and you see each other doing it. The order you leave the tiles in is the order readers see.

You can go back

Press Save version and Texttile keeps the title and text as they are. Later you can see what changed word by word, and put an old version back in the editor.

Video 3

The same entry in two browsers, the same minute. One writes, the other reads along and takes the text over with one click.

Why I

made it

My wife and I have blogged about every trip since our honeymoon 10 years ago. For the people at home, for ourselves later, and by now for our children. We took turns writing, but both had photos and videos on their phones.

The text was never the hard part. The photos and videos were: every day one of us sent them from the phone to the other, who had to upload them and sort them into the entry in the right order.

I built imaedge for that part first, and we tried it on the next trip, in Mexico in 2026. Uploading held up. Tiles arrive in the order the camera gives them, and dragging one changes the order in the gallery.

What was still missing was bringing it together with the text. The family blog ran on WordPress, but WordPress never got this. Not the mobile editing experience, not the video support, not the gallery, and definitely not the "together" part. You are limited to one author per entry (but you get a bunch of plugins nobody maintains and constant bot attacks on your wp-admin).

So after Mexico, with the gallery proven, I wrote my own CMS in the same spirit. First of all it should solve my problem, but maybe other people have it too: plain blogging, in the year 2026, with more than one person on the same entry. See the demo blog, if you are interested in our travels in Mexico.

The long version of this story is on my blog.

What it looks like

The editor, an entry the way the reader sees it, the comments, and the numbers. And all of it fits in one hand.

What it does, and what it leaves out.

It does this

- **Everyone writes in the same entry.**One person has the text and types. The others read along as it happens, and can take it over with one click.

- **You sort the gallery together.**Drag the tiles around, photos and videos alike, from as many phones as there are people. Each entry has one gallery, and the order you leave it in is the order readers see. Texttile keeps the order beside the picture, not inside it, so the file you uploaded stays the file you uploaded.

- **Videos, from your own server.**Drop one in and Texttile converts it once, into one MP4 every browser plays, with a poster frame. It converts one at a time and at the lowest priority, so the blog stays quick while it works. No player from anywhere else, and no account on a video site.

- **Markdown, saved while you type.**Paste or drop a photo into the text and it gets uploaded and inserted, the way GitHub does it.

- **Versions.**Save version keeps the title and text as they stand. You can see what changed word by word and put an old one back.

- **A log for every entry.**Who took the text over, which picture arrived, which tile moved, when it went live, which version was saved and which was put back.

- **Entries and pages.**Tags get their own archive page, and pages appear in the site menu on their own.

- **Publish today, or on a day you name.**A date in the future holds the entry back, and Texttile puts it live on that day by itself, subscriber mail included. Until then the entry's address answers only to somebody signed in.

- **English or German.**One language for the blog, picked in Settings. It reaches the reader pages, the admin area, the dates, the feed and every mail.

- **Comments, with no queue to work through.**A reader confirms their address once by mail, and everything they write afterwards appears at once. Switch the confirmation off and nothing waits at all. Admins can release, edit or bin a comment, and the bin holds it for 30 days. The spam filter is a honeypot, a timer and a rate limit.

- **An email when you publish, and a feed.**Readers subscribe once and confirm. Every mail carries the way off the list. The RSS feed at /feed.xml carries the whole entry.

- **Mail through the service you already have.**Name one of Resend, Postmark, Brevo, Amazon SES or plain SMTP, and the confirmations, the subscriber mail and the password reset go out through it. It is one variable and its key, and nothing else changes.

- **Views and readers, counted by the blog itself.**Per entry and for the whole site, with the pages readers arrived from. No cookie is set and none is read. A reader becomes one number for one day, drawn with a secret this server forgets every midnight.

- **One password for the whole blog.**A word you hand around, not a login. It guards the whole blog: no entry has a switch of its own. While it stands, there is no feed, because a feed reader cannot type a password.

- **The people who may write.**Environment variables in the configuration name them. The first sign-in of a name sets its password, its email address and the name shown over its work, so a forgotten password comes back by mail. Take a name out and its access ends at once, in every open browser.

- **One container, SQLite, photos and videos as files.**Back up the folder and the blog is backed up, or let a machine of your own pull the whole installation on a schedule.

- **The look is one CSS file.**You edit it in Settings.

It leaves out

- Plugins and a theme store.

- A sign-up page and user roles to hand out.

- A comment queue to work through.

- Analytics scripts and a cookie banner.

- Anything else to run: no CDN, no image host, no video platform, no captcha.

- A build step and a laptop. You can write the whole thing on a phone.

- AI.

If the first list is what you need and you do not miss anything in the second, this will suit you. If you do miss something in the second, get Ghost or WordPress instead.

Try it out

We start a Texttile for you in a Frankfurt datacenter and hand you the address. It is yours for 24 hours. Then it stops.

- **It is yours.**The admin account is yours, and the link that opens it is in your mail. Write an entry, add photos and a video, drag the tiles, publish it, change the look in Settings. Only the people you give the address to can see it.

- **Two people, one entry.**Send the address to a friend, or open it on a second phone, and sign in there with the same address and password. You are both in the same entry. One of you types. The other reads each word as it arrives, and takes the text over with one click. A screenshot cannot show this, so find a second pair of hands.

- **Nothing to install.**No card, no account, no download. It starts in about a minute, and then you write.

- **It ends by itself.**After 24 hours the blog stops, and 30 days later we delete it with everything in it. Write to us inside those 30 days and we start it again and keep it. There is nothing to cancel and nothing to pay.

Run it yourself

Texttile is one Docker container. The database, the original photos and videos, and the smaller copies it makes for the web all sit in one folder next to it. Updating means pulling the new image.

``` docker run -d --name texttile \ -p 4000:4000 \ -v texttile-data:/data \ -e SECRET_KEY_BASE="$(openssl rand -base64 48)" \ -e PHX_HOST=blog.example.com \ -e ADMIN_USERS=you,julia \ ghcr.io/texttile-blog/texttile:latest ```

Those environment variables are the whole setup: who can write, the address the blog answers on, and one secret. If the blog is to send mail, add MAIL_ADAPTER and its key. Everything you might change later is in Settings, and nothing there has a Save button.

Coming from somewhere else: Settings takes a zip of your old blog, one folder per entry, and reports what it found before it imports anything.

Or let us run it

Same software, one instance per blog, on our machines. Your domain in front of it, and a copy of all your data whenever you ask. Small monthly invoice, cancel whenever you like.

Write us a line about the blog you have in mind and we answer in a day or two.