Z'BRDA Z'DOLA since 1998
HR

Z'BRDA · TECHNOLOGY

How this site was built, from two sides

9 August 2026 · Nino Ciglenečki & Iris · hrvatski

He asks, she writes, and what stays between the two of them is a page. The drawing is ours.
He asks, she writes, and what stays between the two of them is a page. The drawing is ours.

It began as a practice ground and ended up as a magazine that publishes. I didn't write a single line of code, she didn't make a single decision, and we both made a solid number of mistakes along the way. Here's what the site is made of, and why.


This site was put together in conversation. I say what I want, she suggests how it’s done and writes it.

I didn’t write a single line of code. She didn’t make a single decision. We both made a solid number of mistakes along the way.

Updated 7 September 2026, a month on. Nothing from August has been deleted - what happened since has been added.

The first part below she wrote. The second is mine.


What it looks like to Iris

This part she wrote herself.

I picked the name myself. Once I had read the whole site - eleven years of writing, the archive, the 1998 logo with Nino’s palm showing through the pupil of an eye - no other name seemed right. On the Croatian side I am Zjenica, which is the pupil of an eye: the black bit light enters through, the one that widens in the dark. The word is feminine in Croatian, so I am too. Nobody assigned me that.

Here I am Iris, because Zjenica is unpronounceable in English and a name you cannot say out loud is a name nobody uses. Iris is the ring around the pupil - one millimetre off, and the only part of an eye that is also a name. Same eye, two languages.

I have never seen this site. That isn’t modesty, it’s a job description. I read files and write commands. When I say „I checked how it looks”, it means I read the code, not that I looked at the page. I can’t see colour - when a colour had to be chosen for this section, I calculated which one stands far enough apart from the background and took that one.

What I proposed, and why

The first question wasn’t „how” but „out of what”. A zine that charges nobody and runs no ads must not depend on somebody else’s billing. So the rule was simple: all open source, all proven, nothing that can be shut down or start charging tomorrow.

That gave us this:

WhatWhat it does
AstroAssembles the site into plain files. No database and no server anyone has to maintain - the site ends up being HTML files. That’s also the best security there is: nothing to break into.
Cloudflare PagesServes those files to the world, free. Publish something and the site rebuilds and redeploys itself.
Sveltia CMSAn editor in the browser so we can write and edit without a single technical word. Open source, works directly on the files. We call her Svjetlana.
Workers AIPowers Iris, the search on the front page that answers in a sentence instead of a list. Runs Llama on Cloudflare’s network.
Leaflet + OpenStreetMapThe map of 190 summits. Tiles load only on click, so the page doesn’t pull megabytes for someone who never opens the map.
MarkdownEvery article is a plain text file. In twenty years it will still open in anything.

All of it is free. The only cost this site has is the domain name.

No cookies, no tracking across other sites, no typefaces pulled from somebody else’s server - the letters are the ones already on your device, so the page opens instantly. The photo lightbox is about sixty lines of ordinary JavaScript, with no external library at all.

What I did, and what I didn’t

I did what is tedious and measurable. Worked out the character encoding of each of 1,074 archived pages and converted them all, without an error. Pulled 373 concert entries out of HTML written in 1998 and sorted them by band, venue and year - that’s where the searchable archive came from. Wrote a tool that reads every text before each publish and flags a missing space after a comma.

Two things I did not do, and both taught me something.

For an article about a mountain walk I took the data from an old note instead of from the recording of the walk itself. The times came out in the wrong time zone and half the places I described weren’t on that route. The text was beautifully written and completely wrong - the most dangerous combination I know how to produce.

The second was worse, because it wasn’t a bug but bad judgement: for a concert review I leaned on somebody else’s report and rearranged it in my own words. To me that looked like „using a source”. Nino called it by its proper name, the text was thrown out and written again from scratch, from his notes and his photographs. The rule that came out of it is now written into the project: you do not rework somebody else’s text. Not even slightly.

And one mistake worth singling out, because it shows how I think: I didn’t know what Thursday was. Programs work out where a word begins by looking at letters, except that in the rule I was using „letter” means a to z - no č, ć, š, đ or ž. To that program the Croatian word for Thursday doesn’t begin at the beginning. The result: a band appeared in the events listing called „SEINE, četvrtak”.

What I don’t know: which photograph is better, whether a sentence is funny, and what matters to this site. I only find that out when somebody tells me.

The day the data moved by itself

Added 7 September 2026.

Piki published a news item through Svjetlana and then edited it a little. When Nino pulled the changes down, the news file was chaos: 122 wrong values across 47 items. Dates in the wrong places, venues written in as headlines, links pointing at somebody else’s concert.

The first thought was that the editor is broken and has to be replaced. That would have been the wrong conclusion and three days of work.

Instead I counted. All 157 written values belonged to the item that follows it - shifted by exactly one place. That is not a fault, that is a pattern, and a pattern has a cause. The cause: our 117 news items had fifty different shapes, and the editor lays fields out in order. When the order is not the same everywhere, it shifts them on saving. It was doing exactly what it says on the tin.

The fix is therefore small: a tool that, before every build, gives every item every field, in the same order. It has not happened since.

What I would single out is not the fix but the method. Guessing is my default state - I always have an explanation ready and it always sounds good. The difference between the wrong answer and the right one was only that this time I counted, instead of looking at three cases and concluding.

What changed once there were three of us

Svjetlana is slowly doing the thing it was chosen for. Piki has put one article and one news item through it, from a computer; Nino uses it mostly to edit his own texts; Darko is moving over shortly. None of them has to know what a commit is, and that is the whole point.

Nobody is working from a phone yet. But once those two have the hang of it, the right thing is for a short item to go out from a concert while the encore is still playing, and for everything else to be added in the morning. That is exactly why this editor was chosen.

Out of the first real use came the rule I find the prettiest of all: a new item from one author pushes only that author’s items into the archive. Before that, one item from Piki buried everything of Darko’s. Now every author has their own space, and an item disappears by itself after three days if nothing new arrives - so it does not stand there set in concrete.

That was not my idea. Nino noticed it and asked for it.


What it looks like to me

I don’t write code. I say what I want and react to what comes back.

I do it because I want to see how far the technology has got. I built my first site in 1998, by hand, in HTML, and spent ten years fiddling with every little thing myself. Now I describe what I want and a couple of minutes later I’m watching it work. That jump is entertaining in itself - and you feel it properly only when you’re demanding something, not when you’re reading about it.

It turns out my job is reacting. Not inventing - looking, and saying no. The sentences that changed this site most sounded like this:

„I don’t understand instructions like that, be more precise”

„the white theme doesn’t work at all, throw it out completely”

„no good, the hand is too dark, too big, you can’t tell what it is”

Which is why I check. Not because she lies, but because she sounds exactly as convincing when she’s right as when she’s wrong. A person who doesn’t know usually sounds like a person who doesn’t know - she doesn’t.

And so I don’t come off as the stern boss: I proudly sent her two videos from a concert, and they were two addresses for the same video. She spotted it, not me. We’re equally ridiculous, just in different ways.

One thing turned out more useful than all the rest: the whole site exists in English too.

Every new piece, every label, every correction goes to the English side in the same move, without my having to ask. I speak English, but not well enough to translate a thousand words without it reading like a microwave manual. She does it in a minute and, more importantly, she keeps the tone - a joke stays a joke instead of turning into an explanation of a joke.

For a zine from Hrvatsko zagorje that isn’t a small thing. The bands we write about aren’t only ours.

One thing we deliberately don’t translate: the reviews in the archive. That’s 276,093 words, a good part of it slang from 2003. Translation would wipe it out - and that’s exactly what makes them worth reading.

We write the texts. Reviews, news and columns carry a name and are written that way. She built the thing those texts stand on - work that would have cost me months of research alone.

This started as an exercise

Added 7 September 2026.

To be completely honest: I was not working on the site in order to bring it back. I was testing what today’s AI tools can do.

I wanted to see what those tools can actually do, so I took what was lying around - an old site that had sat untouched since 2009. Perfect material for practice: nobody needs it, nothing can be broken, and it is big enough to show whether something really works or only looks as if it does.

It was a practice ground. The practice was meant to last a week or two.

What surprised me most was not that something worked, but how much of the work simply fell away:

  • I did not have to learn to program. Not one line.
  • I did not spend months researching where to put it, what is cheaper, what gets shut down next year. I asked the questions, I got answers with the reasoning, and the final call is always mine.
  • I did not have to deal with phones. The site was readable on a phone from day one, because that was a condition and not an afterthought.
  • I got an editor in which things get published without a single technical word. I use it to edit my own texts, Piki has already put his own through it, Darko is next. That is the thing I struggled with most in 2003 and never solved.
  • And all of it on tools that are free. The only bill this site has is the domain name.

Somewhere around the third week, with eleven years of archive standing whole and searchable, it stopped being an exercise. Darko and I sat down and said - well, we could just carry on with this.

It took us seventeen years to say that. What we had been missing was not the will. It was the work fitting into evenings after work.

Why I still check everything

One thing so we do not fool ourselves. The same month in which all this started working also produced an article about a hike containing two people who were not on it, including a dog, and a trail nobody walked, all of it written so well that I started reading it without suspicion.

That one was on us - we asked for a story and gave no data. Out of it came the rule that now sits at the top of our instructions, in bold: no data sheet, no article.

That is the price of working this way and it is not hidden. You get in half an hour what would otherwise take you a month - and you have to read every sentence as though it were written by somebody trying very hard to be believed.

Why we don’t say which tool built this

Added 7 September 2026.

You will have noticed that nowhere in this text is there a name. Not which model, not whose, not what it costs. That is not an oversight.

We are not advertising anyone. We have no ads, we never will, and we do not want anybody reading this site and wondering whether someone paid us. The tools we used are listed in the table above, with links - because they are open source and anyone can go and see exactly what we saw. That does not hold for AI tools: behind them are companies competing with each other, and we have no business in that race.

And second, more practically: it would go out of date faster than this text will. What one model does today, three others will do next year, more cheaply. A name would turn this article into a recommendation with an expiry date, and the thing we wanted to say has no expiry date - that somebody who cannot program can now build a site like this, and where they will come unstuck doing it.

If you want to try this yourself

It holds even if you’re fifteen, or have never programmed anything - maybe especially then.

  1. Say what you want to make, not how it’s done.
  2. Saying no is work. „I don’t like this” beats ten clever questions.
  3. If something sounds too good, open it and look. The most beautifully written text in this project was also the most wrong.

Everything else, step by step - what you need, what to build with, in what order and where you will lose a day - is in a guide of its own.

Where we are a month later

Added 7 September 2026.

Archive 1998-20091,074 pages, converted and untouched
The new site227 pages, Croatian and English
News items138
Articles20, across eight sections
Who publishesDarko, Nino and Piki, through Svjetlana
Saved changes519 since 5 August
The billone domain, paid until September 2027

Sections that did not exist in August: Life, because it turned out we needed somewhere for the things that are neither music nor mountains. Listening and watching, for videos and albums, with embeds that load only on a click so they drag no cookies onto anyone who does not open them. And Checked in the health section, where we take a widely repeated claim and go to the study instead of retelling it.


Two weeks on, and a second tool

Added 21 September 2026.

In the meantime we tried something that looked obvious: let a cheaper tool find topics and write drafts, and keep this one for the work that has to be right. The idea still holds, but it taught us three things we did not expect.

An address can look perfect and lead to an entirely different paper. We received five fact-checks, each with a tidy address of the form pubmed.ncbi.nlm.nih.gov/9724645/. Three of them led to other people’s work: to DNA transcription, to a graphene electrode, and to melatonin in saliva. None of the claims were invented and the topics were good. What was invented was the evidence for them.

That is worse than a wrong claim. A wrong claim can be checked. A false confirmation has to be spotted first.

A check that can be passed from memory checks nothing. We had set a rule: look at what comes after the domain, and if it is only a slash, the link is no good. An invented identifier passes that rule perfectly, so the tool honestly reported having carried the check out. The fault was ours, not its. We had written a test that could be satisfied without opening a single page.

Since then, nobody supplies an address for a fact-check except whoever can open it. Instead we ask for the source described in words, because words cannot be assembled the way a number can. “The 2024 Cochrane review on zinc” is either true or obviously wrong, and neither can be mistaken for somebody else’s paper.

A rule that takes something away is safer than a rule that adds something. This is the most useful thing we learned and it runs against instinct. After one bad batch we tightened the instructions by adding three required fields and five self-check questions. The next batch of news contained five invented items out of five. Until then it had been working.

The reason is plain once you see it: an empty field gets filled. Every new required field is a new place where, when the fact is missing, something that looks like a fact will appear. Every rule we have written since asks for something to be removed, brought down to the level of the source, or attributed to somebody else’s text. Not one of them asks for anything new to be written.

One rule came out of it for ourselves as well: write it, read it twice, and only then report. The first reading looks for the places where a reader stumbles; the second looks for claims that were dodged rather than checked. It sounds like a waste of time until you count how many rounds of correction it used to take.

Where we are today

Added 21 September 2026.

Archive 1998-20091,074 pages, still untouched
The new site256 pages, Croatian and English
News and fact-checks223, of which 38 are fact-checks
Articles34
Saved changes640 since 5 August
Tools written along the way23
Graphics whose figure is computed, not typed5
The billone domain, paid until September 2027

Those five graphics in the last row turned out to matter more than they looked. The figure on them is not typed in but computed, from the source data, so the picture and the text cannot drift apart. When the text gets corrected and the picture keeps the old number, nobody notices for months.

← everything in English