The shelf.
Genre and mood chips with counts, search by title or author, a New badge for anything added in the last 30 days. Filters live in the address, so 'cosy reads' is a link you can send to a friend. No cover image? The shelf draws one.
Setaside gives an independent bookshop the three things customers actually ask for: staff picks they can browse by mood, what is on this month, and a hold slip they bring to the counter. You edit four small files. No developer, no database, no basket.
Free. Yours to change. Nothing is sent anywhere.
Hollow Lane Books
Hold request
Ref 261019-K7QH
We keep holds for 7 days, then the book goes back on the shelf.
Bring this slip to the counter.
The shelf. Every pick is a staff member's recommendation with their name on it, filtered by genre or mood, or searched by title and author.
Events and the reading club on one page. Past events hide themselves. The club's current book is simply the next meeting's.
The hold slip. The customer builds it on their phone, prints or copies it, and brings it to the counter. You put the book aside. That is the whole order system.
No accounts, no payments, no stock levels. The counter does what the counter already does.
Everything the site says about your shop lives in four small text files. Edit them in anything that edits text.
{
"id": "p04",
"title": "Fourteen Ways to Boil an Egg",
"author": "Odile Brandt",
"pickedBy": "Marguerite",
"blurb": "A grumpy retired cook writes her memoir through her kitchen failures. I laughed out loud on the bus and a man moved seats.",
"genres": ["Memoir"],
"moods": ["Funny"],
"addedOn": "2026-09-26"
}
One entry per book: who picked it and why, a genre or two, a mood or two. Your own words become the filter chips. Call a mood "Bracing" and the shelf has a Bracing button.
Events with a date, time and place; the club's next few meetings and their books. Anything dated before today disappears on its own.
Run the check and it names the exact field that is wrong, like
picks[2].addedOn must be a valid YYYY-MM-DD date.
Then upload one folder to any static host. There is no server to
keep alive.
picks.json Prefer a picture? Open the demo
shop and look at the shelf. Every card you see is one entry like this
one.
Genre and mood chips with counts, search by title or author, a New badge for anything added in the last 30 days. Filters live in the address, so 'cosy reads' is a link you can send to a friend. No cover image? The shelf draws one.
Author evenings, story mornings, crime nights: date, time, place, and how to book. The reading club shows its next meeting, the book, the list ahead, and how to join. Nothing on the page is ever out of date, because the page hides anything that has passed.
Customers add books from the shelf or type any title you stock, add a name and a way to reach them, pick a collection day, and build the slip. Print it, copy it as text, or show it on a phone. Every slip has a short reference that stays the same when reprinted, so the counter can match it to the shelf.
Works on a phone with one thumb. Follows the visitor's light or dark setting. Keyboard and screen-reader friendly, with a skip link and visible focus. No tracking, no cookies, no third-party anything. A shop's website should be as quiet as the shop.
Hollow Lane Books
Hold request
Ref 261019-K7QH
We keep holds for 7 days, then the book goes back on the shelf.
Bring this slip to the counter.
Online shops bolt a basket, a checkout and a payment provider onto a bookshop that already has a counter and a pencil. Setaside skips all of it. The customer lists what they want, says who they are, and the site turns that into a slip.
On paper it prints clean on one sheet with nothing else from the page. As text it pastes into a message. On a phone it is shown across the counter. The reference is made from the date, the customer's name and the titles, so the same request always gets the same code and a reprint never confuses anybody.
The slip remembers itself between visits, so a customer who starts on the bus can finish in the shop. When the books are collected, "Start a new hold" clears it.
261019-K7QH
date, dash, four characters from the name and titles
This is the actual site, running in the page. Browse the shelf, filter by mood, put two books on a slip and build it.
The demo runs the same files you would edit. Dates are real, so the events you see are the ones still to come.
{
"name": "Hollow Lane Books",
"tagline": "An independent bookshop on Hollow Lane since 2009",
"address": ["14 Hollow Lane", "Ashford, Kent TN23 1AB"],
"phone": "01233 555 0142",
"hours": [
{ "days": "Mon to Fri", "times": "9 am to 6 pm" },
{ "days": "Sat", "times": "9 am to 5 pm" },
{ "days": "Sun", "times": "11 am to 4 pm" }
],
"holdNote": "We keep holds for 7 days, then the book goes back on the shelf."
}
Your name, address, hours and hold policy live in one file. Change them and the header, footer and every slip change with them. Prices are typed as you would write them on a sticker, so £, € and $ all just work. Genres and moods are whatever your shop calls them.
A short guide ships with the site and documents every field. If you make a mistake, the site refuses to pretend: it shows the line that is wrong and waits for you to fix it.
Open the demo shop, put a book on a slip, and see how little a bookshop website needs.
Open the demo shop