Internet flâneur · Built Pagecord


Posts tagged with pagecord

The sun is out, like properly, in Scotland this week. Late April and May are generally some of the best months for sun so I plan to take full advantage and be outside as much as possible with camera in hand. This is a massively light-deprived country, so I'm literally gasping for sunlight right now - the winter here is ridiculous. I have a couple of small trips planned soon too, so hopefully the sun will be shining in those destinations as well.

I've done quite a lot with Pagecord this year so a bit of a break is definitely on the cards. I find you can get in a rut with these things if you stay too close, and the joy can get sucked away. On the customer front people come and go, but generally speaking the growth curve continues upwards. I've still yet to find any sort of magic acquisition sauce, however. I think the product is pretty good right now (I'm a paying customer myself believe it or not 😅), so all I can really do is make sure it runs fast and smooth, put improvements out now and again, and keep blogging myself to both test the thing, as well as write about the journey. 

If there's anything you'd like to know about regarding Pagecord, do let me know and maybe I'll write about it, plus it's always nice to hear from people anyway. 

☀️

Choosing self-managed databases

I could choose to pay a cloud service for a managed database but instead this week I chose to set up WAL-based continuous backup to R2 and point-in-time recovery for my Postgres instance.

This would have been unthinkable for me a year ago but here we are. 

All the processes are meticulously documented in a git repo, and I did a disaster recovery test today which spun up a new server and restored the DB. It was quick and seemingly seamless.  

This experience has been encouraging and it’s certainly more comforting knowing I have point-in-time recovery rather than the previous hourly pg_dump backup strategy. I’ve never had to do a restore procedure with a managed database, but I’m sure it’s simple and only requires a few clicks in a UI, but perhaps it’s actually harder to test than my scriptastic approach? I don’t know, but the reality is that we can now choose to do hard things when before we couldn’t, so why shouldn’t we?

I think in a real disaster it would make sense to install Claude and my docs repo on the server and have the AI execute the procedure for me. It wouldn’t be stressed, and it would have a better grip on the situation. Of that I have no doubt. 

In tech today, we’re truly standing on the shoulders of giants. I’ve been around this block for decades now, but the potential of the AI revolution continues to astonish me like nothing before it. 
I've been playing around with a prototype Pagecord API this afternoon to allow you to create/edit/delete posts programatically. This was partly driven by OpenClaw, but there are other use cases such as an Obsidian plugin for example (publish your posts directly from there). If you had this, would you use it? Would love to hear about your ideas and use cases.

What it actually costs to run Pagecord (March 2026)

I thought it would be interesting to document the costs of running Pagecord, the product and the business. This isn't something that many indie developers share and it's pretty interesting to me, so here's the breakdown of what it costs to keep the lights on as of March 2026 (when Hetzner's prices go up).

Note that I take no salary or dividends, and any meagre profits stay in the business so I can call on them when needed.

Service

Details

Monthly Cost

Google Workspace

Email and spreadsheets

$9.44

Domain name

At-cost from Cloudflare

$0.87

Hetzner

Server, IPs, backup etc

$32.08

Hatchbox

Amazing deployment tool for Rails apps

$10.20

Cloudflare R2

Image storage, plus backup storage

$0.68

Cloudflare Images

Proxy for image optimisation

$5.00

Postmark

Inbound emails plus newsletters

$16.50

Mailpace

Transactional email

$3.37

Claude Pro

AI developer

$24.27

Accountancy

I do most of it myself but I need someone to verify the books

$33.59

Virtual office

So someone else can handle the business address and official mail etc ⊹╰(⌣ʟ⌣)╯⊹

$29.93


Total

$165.93

A few more details

Pagecord lives in Hetzner, in Germany. I've found it's the most cost-effective hosting provider out there, and with Hatchbox handling custom domains (via Caddy), server config and one-click deployments, it's super-productive and I love it. I don't think it's possible to get this cost down other than buying a cheaper server which would be counter-productive.

Email is split across two providers which is a historic anomaly. I used to use Postmark for everything, but I found delivery times to be unstable so I switched to Mailpace for all transactional emails which has been much better. Postmark still handles inbound emails (it just works) as well as sending all the newsletters via their bulk sending feature which is very good. At some point I'll probably move everything to Resend, but their inbound email functionality isn't as slick as Postmark yet (early days) and, frankly, what I have right now works great so there's little incentive to move. It's actually handy having two providers since it gives me some redundancy should I need it.

Cloudflare R2 is where all the uploaded images, videos and other attachments live. It's great and better value than AWS S3. The data is all in the EU location. I use Cloudflare Images as an image proxy which I think is amazing. It resizes all the images from Pagecord blogs to an optimal size and serves them in webp format from edge locations across the world. That it only costs me $5/mo (for now, at least) blows my mind.

The accountancy and virtual office costs are due to setting up a UK limited company for Pagecord recently. I was increasingly uncomfortable running it as a sole trader and being liable for any trouble bad actors might be able to cause. More than happy with the increased cost for the peace of mind it brings.

What isn't on this list

Pagecord uses Sentry (error tracking) on the free plan, plus AppSignal (for observability) which doesn't cost me anything right now. Pagecord also uses AWS Cloudfront for caching Rails' static assets. I could probably move this to Cloudflare but what I have just works and costs less than $0.01/mo so I can't be bothered.

The bottom line

Someone emailed me today and complained about the upcoming price increase: "I don't understand how you can have so much costs for just hosting texts and some pictures?". Well, hopefully this post clears that up.

I think $165/month to host 700+ blogs (large portion being on free accounts btw – plz subscribe!) on a fast, reliable (🤞), monitored and backed-up blogging platform for a registered UK company is pretty reasonable. I can't see how I could reduce these costs in any meaningful way right now. It's about as lean as it gets without being dangerously underweight.

This post might not age well since costs change all the time, especially for a growing business, but hopefully it gives you some useful insight into how things run behind the scenes as of right now.

Styling a Pagecord blog like the Bear Blog Archie theme

I come across posts hosted on Bear Blog quite often and many of them use the Archie theme. I wondered whether Pagecord could be styled in this way, and it turns out it can fairly easily.

Uploaded image

A few more tweaks would be needed to complete it (I didn't look at styling the email subscription box for example – I just turned it off), but that's all doable if you wanted. My intention here isn't to steal Bear's thunder, but if someone was migrating and wanted to keep the same vibe, then now I know they definitely can.

I'd like to add a template theme gallery at some point (basically just pre-cooked custom CSS), but until then here's the CSS if you wanted a similar style.

/* Use the Roboto Mono font */
@import url('https://fonts.googleapis.com/css2?family=Roboto+Mono:wght@100;200;300;400;500;600;700;800;900&display=swap');
body {
font-family: "Roboto Mono", monospace;
}

/* Use flex to allow header block order to be rearranged */
header {
display: flex;
flex-direction: column;
}

/* Move nav to the second position (after the title) */
header > nav {
order: 2;
justify-content: flex-start;
margin-bottom: 1.75em;
gap: 1rem;
}

/* Ensure the titlebar div appears first */
header > .titlebar {
order: 1;
}

/* Assign orders to subsequent elements to keep them in place */
header > .bio {
order: 3;
}

header > .email-subscriber-form {
order: 4;
}

header > hr {
order: 5;
}

/* give nav links and article body links an accent underline */
nav a, .lexxy-content a {
color: var(--lexxy-color-ink);
border-bottom: 3px solid var(--color-accent);
text-decoration: none;
font-weight: normal;
}

/* dotted lines under header and above footer */
header hr {
border-top: 3px dotted #232333;
}

footer.blog-footer {
border-top: 3px dotted #232333;
}

I've been experimenting with Ubicloud this morning as a new home for the Pagecord database. It's pretty neat – they support Hetzner (which is where the Pagecord app lives) and offer the usual benefits of managed databases, but for much less cost than the main cloud providers charge.

Unfortunately Ubicloud don't support Hetzner's Nuremberg data centre, only Falkenstein. I opted for Nuremberg a while back, so this means there's a bit more jiggery-pokery to migrate the app and the database to a new DC whereas it would have been simpler if the app was already in Falkenstein. There's a further complication with a number of blogs on custom domains because floating IPs in Hetzner are not transportable across DCs, so these customers will need to update their DNS to point to a new IP, or use the (far better) CNAME approach. That can be deferred though because I can configure the Nuremberg app instance to connect to the Falkenstein database. It just means these blogs will feel a little less snappy until the DNS gets switched over (I tested this today – most people probably wouldn't notice).

I'll probably do this in a couple of weeks. I'll announce it on the Pagecord blog beforehand (there will be a small 2-3 min outage) and also contact custom domain owners who will be affected. If anyone reading has used Ubicloud, I'd be interested to hear about your experience.

Uploaded image

There's a Pagecord ad in the latest Good Internet magazine! I created this in a hurry months ago so the feature list is missing loads of new stuff, but hopefully a few people will spot it and sign up.

It's worth checking out the magazine, it has a great philosophy.

Good Internet is a volunteer-run, not-for-profit print and digital biannual magazine for personal website owners and those interested in using the internet as a means of self-expression, art, and recreation.
I've decided against lifetime subscriptions for Pagecord (at least for now). I'm going to add a pay monthly option instead. The cost will be a bit higher ($4/mo) but some people out there are only comfortable committing on a monthly basis.

One thing I've learned with Pagecord is that a good chunk of customers like to experiment with all the blogging apps and switch between them on a frequent basis. Maybe monthly will work better for them.

Pagecord Product Hunt re-launch

You may have seen this on the official Pagecord blog, but if not… Pagecord is relaunching on Product Hunt today!

https://www.producthunt.com/products/pagecord

If you’re willing and able, I’d really appreciate an upvote and a comment.

You can do multiple launches on Product Hunt as long as you leave a good amount of time between them, and (presumably) if your product has evolved a lot since the last one. Pagecord is SO much better than it was a year ago (the previous launch) so I’m hoping it garners a bit more attention today.

Thank you! 🙏

In order to get more people to try Pagecord, I'm wondering if both custom domain support and custom CSS should be offered for free. This would mean image uploads, email newsletter, reply by email and analytics remained the only drivers for upgrading. I think that's probably sufficient, no?

Another consideration is a free trial period where you get access to everything for a month or so. The classic 'try before you buy' approach. I'd happily experiment with this but it can get result in feature spaghetti that makes it difficult to revert if it doesn't work.

Proper sticky toolbars on iOS when the keyboard is visible

The Pagecord post editor works pretty well on iOS, but there's been a long-standing issue with the toolbar. The toolbar is "sticky" so if you're editing a long post, the toolbar should pin itself at the top as the page scrolls. This basic CSS works great on a laptop web browser, but on iOS it fails miserably when the virtual keyboard is visible.

I got Gemini to figure out a way to make this work today via a Stimulus controller that prevents the toolbar from being pushed off-screen. It's hacky, and there's some jitter when scrolling, but the benefits of actually being able to see buttons far outweighs this. I've included a video below. It's behind a feature toggle for now, but I can enable it for you if you'd like to try it.

I don't have an Android device so I'm not sure if there's a similar problem that needs to be fixed there (Gemini says not) but do let me know if there is. If you know of a better way to solve this problem, I'm all ears!

Thoughts on Pagecord pricing in 2026

A few paying customers have suggested I charge a bit more for Pagecord. I'm now considering upping the price in the next few weeks, for new customers, to $39/year. Existing customers will stay on their original plan unless they actually want to pay a bit more. Unlikely, but I'll happy increase your renewal price! 😅

There are a few reasons why I'd like to do this:

  1. The Pagecord price (currently $29/year) includes sales tax wherever you're based. Many products add this on at checkout but I find that annoying as a customer myself, so I want the price on the website to reflect what you actually pay. No surprises. The downside of this is that I take a ~20% hit on the list price, plus another 5% for Paddle processing fees. This means I actually receive $21.75 a year for each full price subscription. World's smallest violin, I know, but it's actually a meaningful difference.
  2. The current price is one of the (if not the) cheapest on the market, and there's an argument for it being too cheap for all the features. Most blogging apps of Pagecord's feature depth are $5/mo or $49+/year, and so $3.25 a month for an all-you-can-eat blogging platform feels good value to me.
  3. I'm incorporating a Limited Company for Pagecord now it's sustainable so my annual costs are going to increase quite a bit as a result (higher tax and accounting bills, insurance, virtual office etc). Since existing customers are being grandfathered, I have to take the hit here but Pagecord has some growth so I'm confident it will be fine in time.
  4. I now have costs for AI for both my own coding agents, as well as routine spam blog detection. It's pricey and eats into my meagre margins, but it really does make life as an indie dev 10x better.
  5. I plan to add a bit more resilience to Pagecord's server stack which will increase ongoing costs and deplete margins.

If you're a customer (or thinking about being a customer) I'd value your thoughts on this, positive or negative! Bear in mind that I receive no personal income from Pagecord (yet), and it is only just profitable. A price rise will mainly offset the new costs, I don't expect to make a personal profit until I reach 300+ paying customers (some way to go yet!).

I'd really like to write more blog posts about the Pagecord stack, my approach to dev, and other "internal" things, so please also let me know if there's something you'd like me to write about.

You can easily let me know by clicking the email reply link below – it would be great to hear from you.

Tables are coming to Pagecord

Uploaded image

I noticed on GitHub that Zoltán Hosszú (designer at 37signals) opened a pull request that introduces support for tables to the Lexxy editor. This means table support for Pagecord could happen soon! 🤩

After years of living with the mothballed Trix, it feels liberating for us Rails developers to be treated to such a proper, rich and extensible editor as Lexxy. It’s a true open source gift, including Lexical from Meta which is the underlying foundation of Lexxy. 

My weak brain struggles with comprehending complex JavaScript libraries like this, so I’m immensely thankful for the people (and companies who support them) who put in the hard yards that make my life immensely easier, and my product so much better. 

After Christmas has been and gone I’ll finally be switching everyone over to Lexxy in anticipation of this (and, all being well, image galleries!). 

I've just enabled a new feature on all premium Pagecord accounts that generates an Open Graph image for all posts that don't have images in them (if a blog post has an image, the first image in the post is used as the open graph image). I'm not enabling it for everyone yet because, (A) I want to test it for a while to make sure it's robust, and (B) maybe it should only be for premium customers since there is a (minuscule, admittedly) processing cost over time.

Let me know what you think. All being well, this post should have such an OG image :)