Skip to content

Ma Kẹkẹ

A literary magazine held in nine academic libraries, now at its own address.

A standalone site, separate from the publisher
A home of its own
The full archive, browsable from newest to oldest
All issues in one place
Readers land on the literature, not on business pages
Stories first
The problem

Why it needed building.

Ma Kẹkẹ is a literary magazine of short and flash fiction about contemporary African life. It is held in nine academic libraries and runs an annual award with Pan-African partners.

Despite that standing, it had no home of its own. It sat as one section of the publisher's website, so readers had to dig through a business site to find the stories, and back issues were hard to browse. A magazine taken seriously by libraries and literary partners was presented like an afterthought.

What I built

The features that solved it.

Feature 01

A standalone magazine website

The magazine has its own identity, separate from the publisher's business site.

The Ma Kẹkẹ homepage on a laptop: the Ma Kẹkẹ wordmark and A Gemspread Literary Magazine over a warm paper texture, a Read latest issue button, then Africa's Present, Told in Fiction.
The same homepage on a phone: the wordmark, the Read latest issue button and the opening of the introduction.
The magazine's own homepage on a laptop and a phone.

Feature 02

A complete issue archive

Every issue is available to read in one place, easy to browse from newest to oldest.

The Complete Archive on a laptop: four issue covers in a row, from Inside Life (July 2025) back to the first prelaunch issue (May 2023), each with its title and date.
Every issue in one view, newest first.

Feature 03

A comfortable reading experience

Stories are laid out for reading on phones, tablets and desktop computers, and readers can listen to a story instead (beta).

The story Sweet Moi Moi on a phone, from its title: the byline, then an audio player with a play button, a Listen label, a Beta tag and a length of 5:08, above a note that the narration is an AI voice generated with ElevenLabs, then the opening paragraph.
A story on a phone, with the option to listen (beta).

Feature 04

A home for writers

Pages for submissions and the monthly contest, so writers know how to take part.

Feature 05

Easy publishing for editors

New issues and stories can be added without touching code.

Feature 06

Organised, reusable content

Each issue and story is stored in a consistent, structured way, so the archive can later appear in other products, such as a reading app, without being re-entered.

Feature 07

Visitor measurement

Analytics set up for the first time.

Outcome

What changed.

The magazine now looks like what it is: an established literary publication with its own address that libraries, award partners and writers can link to and cite.

The full archive is readable. Back issues that were hard to find are now easy to browse and share.

Each audience gets its own site. Readers and writers come here for the literature; authors seeking publishing services go to the publisher's site.

The archive became a lasting asset. Because the content is well organised, the back catalogue can be reused in future products, not just read on the web.

Measurements in place for the first time. The magazine can now track readership going forward.

Under the hood

How it’s built.

A fully static Next.js and TypeScript export, styled with Tailwind CSS, on Render's static hosting, built from its own Strapi CMS with PostgreSQL; Cloudinary for images; ElevenLabs text-to-speech for story narration, saved ahead of time as static audio; sitemap generated at build; Google Analytics.

How a request is served: from a reader's phone over HTTPS to static HTML on Render, which relies on Cloudinary. Strapi CMS is used only when editors publish and ElevenLabs only when narration is generated.

Reader's phone

Any browser, no sign-in

Static HTML on Render

Pre-built pages; no server runs when someone reads

Managed services

  • Strapi CMS

    Used only when editors publish; triggers a rebuild

  • ElevenLabs

    Text-to-speech, used only when narration is generated

  • Cloudinary

    Images

High-level technical architecture diagram

Cost

No server runs when readers visit, so hosting is static-site cheap. The CMS is only needed when editors publish.

Maintainability and extensibility

Editors publish issues in the CMS; a rebuild turns them into static pages.

Audience access

Plain static HTML loads fast on low bandwidth and low-end phones. Free, with no sign-in, and a published accessibility statement.

Security

The public site holds no user data and has no runtime server, so its attack surface is minimal.

Audio narration (beta)

Narration is generated once with the ElevenLabs API and shipped as a static MP3. Readers still load only static files, and the API key stays private.