L.M. Douglas.Vue 3 author platform design & build for a fantasy saga

Solo: design & build · 2024 to present

A one-book promotional page grown into a saga's hub: a live catalogue, an interactive map of the realm, character's updates, book reveals, and a mailing list that pays readers in fiction.

L.M. Douglas is a Scottish fantasy author writing the Chronicles of the Endless War. She has a maintenance plan that allows for unlimited updates which suit her ever growing catalogue. From 2024 her catalogue have grown from one book to four and two novellas.

Four book covers in a row: Davga, Gharantia's Guardian, Gharantia's Fury and Gharantia's Fate, each with a status badge reading New release, Available now or Coming soon
The Endless War catalogue: a free novella (plus one upcoming), three published books and one more coming soon!.
The site today: one full-bleed slide per title, all four driven from the same data. Rebuilt in Vue (2026).
01

Outcomes

+80
Mailing-list subscribers since launch
4
Titles in the hub
2nd
Project from the same client, and unlimited updates included in the maintenance plan
02

How it evolved

There was no bad site to rescue here. The 2024 build did its job: one page introducing a book first, expanded later to accommodate a second book. What changed was the work. A third and fourth title arrived, the world behind them kept growing, and a page that described a novel had to become somewhere a reader could spend time.

2024: the promotional page
The archived 2024 site: a dark single-column page where Gharantia's Fury and Gharantia's Guardian are each introduced by four paragraphs of text with Buy here buttons for Amazon, and captioned gaps stand where the book covers failed to archive
The first build: one long page, first one book and then two, each introduced by four paragraphs of blurb. The archive never stored the artwork, hence the gaps.
The realm on the 2024 site: the heading The Gharantia Realm above a small parchment map shown as a flat image on a dark background
The realm in 2024: one flat image, linking out to a bigger JPEG.
2026: the saga's hub
The 2026 Vue site on a phone: a full-bleed slide for the novella Davga with its blurb and a Buy it now button, and carousel dots below
The rebuild in Vue, designed for a reader rather than a browser.
  • Catalogue: two hand-written blurbs a status-tagged grid built from data
  • The realm: a flat map you could open full size clickable lore over its gods, cities, ports and ruins
  • Signup: a browser post to MailerLite's hosted form a serverless function that keeps the key off the page
03

The Vue 3 build

I designed the rebuild around the two things a reader actually wants: what to read next, and more of the world. The build is a Vue 3 single-page app where the books and the world live as data, with hand-written CSS over one set of custom properties. No CSS framework, no UI library: every component, animation and icon is bespoke, because an epic fantasy site that borrows its furniture from a SaaS template reads as exactly that.

L.M. Douglas / mobile flow
Home
The author site on a phone: a full-bleed slide for the novella Davga over a snowy mountain scene, with the blurb and a Buy it now button, and carousel dots below
Carousel, one slide per book
Chronicles
The Chronicles showcase on a phone: book cover cards stacked one per row, each with a status badge, the title, its place in the series and a Buy it now button
Every title, tagged by status
The realm
The interactive map on a phone: a hand-drawn map of the realm of Gharantia with gold markers over its cities and seas, under the heading The Gharantia Realm
Clickable lore across Gharantia
The three screens the hub is built around: arrive on a book, see the whole series, then fall into the world behind it.
The realm map in use: every marker opens its own lore, with pronunciations, character art and a tag for what it is. Lorraine's favourite part, and the readers' too.

One file, three views

The books and the map's lore points live in a single data file. The hero carousel, the Chronicles grid and the map all render from it, so adding a release or a location is a one-object change rather than an edit in three places.

A map that carries the lore

The realm is a hand-drawn map with clickable points over its gods, cities, duchies, ports and ruins, each opening its own lore and character artwork. It was my suggestion, and it turned out to be the thing readers come back for.

A mailing list with no backend

Readers get a free novella for signing up. The form is a honeypot-protected Netlify Form that also posts to a Netlify Function, which creates the subscriber in MailerLite, so a static site runs a real funnel.

Also in the build: self-hosted display and body fonts preloaded for a fast first paint, hand-built SVG icons, and a responsive WebP pipeline that detects support once and falls back cleanly to JPEG.

StackVue 3Vue Router 4Vite 7CSS custom propertiesNetlify FunctionsMailerLiteFigma
04

Results & the client's words

  • A destination between releases: the map gives readers a reason to visit when there is no new book to buy.
  • The catalogue keeps up with the writing: a new title is one object, and the carousel, the grid and the badges follow.
  • The signup grew up: the same free-novella offer, now behind a serverless function with the API key off the page and a honeypot on the form.

“Working with Victor to update and maintain my author website has been a fantastic experience. He created a moving carousel to showcase all of my books and suggested adding an interactive map of my fictional world, an idea that has proved very popular with visitors. He's been professional, creative, and easy to work with throughout the process. I wouldn't hesitate to recommend him to other authors or any business looking for a high-quality website.”

Lorraine, L.M. Douglas
05

Reflection

What worked

  • Modelling the world as data: one file drives the carousel, the catalogue and the map, and they cannot disagree.
  • Proposing the map rather than waiting to be asked. It became the reason people come back.

What I'd improve

  • Hand her the keys: adding a release is still a code change, so a small editing layer is the obvious next step.
  • Bring the blog in: it is an embedded feed rather than part of the design system.

More work

See all work →

Need something similar?

See the live site, read the code, or get in touch about a project.

← Back to all work

We use cookies & Pendo to monitor traffic anonymously, improve experience, and understand usage.

Let's connect