The Literacy Circle

A national literacy network · West Africa · concept edition

The alphabet is a door. We hold it open.

Forty-six chapters keep weekly reading circles alive across twelve countries — in the letters people actually speak.


Begin reading
Chapter one · The letters

Scroll, and each letterform fills like ink taking to paper — literacy, rising with the reader.

letterform i · of ivA — the first vowel
the letter every alphabet in the region opens with

letterform ii · of ivƐ — “open e”
read in Akan, Ewe, Fon and Baoulé

letterform iii · of ivŊ — “eng”
read in Dagbani, Wolof and Ga

letterform iv · of ivɔ — “open o”
read in Twi, Ewe and Mòoré

Four letters, one lesson: when the page holds the sounds you already speak, reading stops being a foreign country.

Chapter two · The mission

Sixty words, said aloud at every circle

We believe a country learns to dream in the language it reads. The Literacy Circle gathers readers, teachers, market women, drivers, and children around one steady practice: forty minutes of reading, together, every week. Forty-six chapters keep the circle open across twelve West African countries — because when one more person learns to read, everyone near them stands a little taller.

Exactly sixty words, on purpose — short enough to recite before the books open, in any of the eight languages our chapters read in.

Chapter three · The network

Forty-six chapters, one circle

ATLANTIC OCEAN Gulf of Guinea the Niger Accra — Ghana Kumasi — Ghana Tamale — Ghana Takoradi — Ghana Cape Coast — Ghana Ho — Ghana Koforidua — Ghana Sunyani — Ghana Bolgatanga — Ghana Wa — Ghana Tema — Ghana Techiman — Ghana Lagos — Nigeria Ibadan — Nigeria Abuja — Nigeria Kano — Nigeria Port Harcourt — Nigeria Benin City — Nigeria Kaduna — Nigeria Jos — Nigeria Ilorin — Nigeria Abidjan — Côte d’Ivoire Bouaké — Côte d’Ivoire Yamoussoukro — Côte d’Ivoire Daloa — Côte d’Ivoire Korhogo — Côte d’Ivoire Dakar — Senegal Thiès — Senegal Saint-Louis — Senegal Ziguinchor — Senegal Bamako — Mali Ségou — Mali Sikasso — Mali Ouagadougou — Burkina Faso Bobo-Dioulasso — Burkina Faso Koudougou — Burkina Faso Lomé — Togo Kara — Togo Cotonou — Benin Parakou — Benin Conakry — Guinea Kankan — Guinea Freetown — Sierra Leone Bo — Sierra Leone Monrovia — Liberia Banjul — The Gambia
Hover or tab across the nodes — every dot is a weekly circle. Plate I · The chapter network, 2026

A simplified plate, hand-projected from real coordinates. Chapter cities are real; the network itself is the concept.

Chapter four · The programmes

Three ways the circle meets

Programme one

The Open Circle

Adult literacy, in company. Forty minutes a week, chairs pulled into a ring: a newspaper, a novel, a bus timetable — whatever the circle chooses. Neighbours teach neighbours, and nobody reads alone.

Every chapter · every week

Programme two

First Alphabets

Mother tongue first. Children meet Ɛ and ɔ before they meet an exam — early-grade readers set in eight regional languages, so the first book a child finishes sounds like home.

8 languages of first instruction

Programme three

The Travelling Shelf

A library that visits. Crates of books rotate between chapters by tro-tro, taxi and ferry — two hundred titles a crate, restocked in the capital, signed out on paper cards.

On the road between chapters

Chapter five · The horizon

What we are working toward

We publish goals, not victories. The numbers below are the horizon this network is walking toward — stated plainly, so anyone can hold us to them.

500

reading circles meeting weekly across the network by 2030

12,000

adult learners a year finishing their first full book in the Open Circle

8

languages of first instruction kept in print for First Alphabets

60by ’30

chapters — growing the map from forty-six, border by border

Targets from the concept brief · goals, not reported results

Chapter six · The ask

Keep a circle open

A circle costs very little to keep open: a room that is already there, a leader with a small stipend, and books that arrive on time. Monthly pledges are what make the “on time” part true.

  • ₵40 / month — a term of workbooks and pencils for one adult learner
  • ₵120 / month — one crate on the Travelling Shelf, restocked and rolling
  • ₵400 / month — training and a stipend for a new circle leader

Pledge your interest

A concept demonstration: this form records pledge interest through Netlify Forms. No payment is requested or taken, and no real organization receives your details.

How this book was made

Appendix A

The process

A design-thinking case study: the brief, the problem, the direction — and what was set aside.

A.1The client & the brief

This site answers a public request-for-quotation issued by a national literacy nonprofit: a single-page web presence for a volunteer reading network — its mission, its chapters, its programmes, and a way to give. The identity here, “The Literacy Circle — West Africa”, is a fictional composite built to that brief.

Concept project — adapted from a public RFQ. Frontend only; portals and dashboards shown are static UI demonstrations. Not affiliated with any real organization. Every figure on this page is a design target, not a reported result.

A.2The problem

Literacy-nonprofit websites default to one of two failure modes: the pity register (stock photos of children, guilt-toned appeals) or the bureaucratic register (annual-report PDFs wearing a homepage). Both talk about readers. Neither feels like reading.

The reframe that unlocked the design: a literacy organization's website is itself a text. If the page behaves like a beautiful book — a cover, chapters, folios, a colophon — then simply using the site rehearses the pleasure the organization exists to spread.

A.3The direction — and two set aside

Chosen: the book as interface. A centred measure, drop caps, chapter rules, aged-paper grain, and a signature moment where the alphabet itself — including Ɛ, Ŋ and ɔ from West African orthographies — rises with the reader's scroll.

  • Rejected: the photo-led NGO template. Impossible under the collection's code-drawn rule, and better for it — photography of learners flattens people into evidence. Letterforms carry the story with more dignity.
  • Rejected: the data dashboard. Charts and counters put the emotional register in the wrong key for a volunteer network. The numbers earn one quiet indigo plate, framed explicitly as goals, and no more.

A.4Decisions & trade-offs

  • Two typefaces, one voice. Literata does display, text and italic work; Public Sans is confined to wayfinding (kickers, captions, buttons). The italic cut costs 88 KB but carries the book's whole tone.
  • Tall glyph rows. Each letterform commands ~108vh of scroll. That is expensive scenery — but ceremony is the point; the fill must feel earned, not decorative.
  • A hand-projected map, not GeoJSON. Real coastline and city coordinates pushed through a 19 KB hand-tuned SVG rather than a 300 KB boundary file. Credible geography, plate-of-a-book texture.
  • Pledge interest, not fake payments. A concept site must not cosplay a checkout. The form records interest via Netlify Forms and says so, in plain sight.

A.5Impact, framed as goals

Everything numeric on this page — 500 circles, 12,000 learners, eight languages, sixty chapters — is a target from the concept brief, stated as a goal. The demonstrated capability is the craft itself: that a one-page nonprofit site can hold Awwwards-level attention without a single photograph.

Appendix B

The build guide

How this page was engineered — generously enough that another designer could reproduce it.

B.1Concept & toolchain

Designed and built by Hannah Kwakye, engineered with Fable 5 as the designer-engineer under her direction. The whole site is hand-authored static HTML, CSS and vanilla JavaScript — zero frameworks, zero libraries, zero external requests. Motion runs on one requestAnimationFrame loop plus IntersectionObserver; typography is Literata and Public Sans, self-hosted as woff2.

Every visual is code-drawn — an environment constraint the collection turned into a thesis. Here that meant: an SVG map plate, stroke-icon programme plates, an aged-paper grain made from an SVG turbulence filter in a data-URI, and a hero built from nothing but type.

B.2An alphabet the fonts don't ship

Google's latin subset of Literata omits Ɛ, Ŋ and ɔ — the very letters this site is about. The fix is a second, 2 KB font slice containing only those glyphs, declared last with a narrow unicode-range so the browser reaches for it only when a West African letterform appears:

/* Ŋ ŋ Ɔ Ɛ ɔ ɛ — subset separately; declared last so it wins */
@font-face {
  font-family: 'Literata';
  src: url('literata-glyphs.woff2') format('woff2');
  unicode-range: U+14A-14B, U+186, U+190, U+254, U+25B;
}

B.3How the letters fill

Each hero glyph is two stacked copies of the same character: an outlined one (-webkit-text-stroke, transparent fill) and a terracotta one clipped by a polygon whose top edge a scroll-driven custom property lowers, releasing the ink from the bottom up:

.glyph .fill {
  clip-path: polygon(-6% calc((1 - var(--p, 0)) * 100%),
            106% calc((1 - var(--p, 0)) * 100%),
            106% 106%, -6% 106%);
}
// per frame: ink rises as the letter travels — 0 as its top clears
// the fold, 1 as its centre reaches the viewport's centre
const p = clamp((vh - rect.top) / (vh * 0.5 + rect.height * 0.5), 0, 1);
glyph.style.setProperty('--p', p);

Two hard-won details: the polygon's -6% overshoot keeps serifs and the Ŋ's descender hook from being shaved during the fill — and it is a polygon rather than inset() because a calc()-driven inset with negative side values silently fails to clip in some Chromium compositors. Under prefers-reduced-motion the clip is removed entirely; the letters simply stand, already full.

B.4Drawing West Africa in 19 kilobytes

The map is an equirectangular projection done by hand: x = 24 + (lon + 18) × 34, y = 16 + (17.2 − lat) × 34. Forty-two real coastline coordinates from Saint-Louis to the Niger Delta are smoothed into quadratic curves through segment midpoints; national borders are dashed and deliberately suggestive; the Niger's long arc through the Sahel is drawn from its actual course. All 46 chapter nodes sit at real city coordinates.

Each node carries a pulsing halo staggered by a per-node animation-delay, so the network breathes rather than blinks. An IntersectionObserver removes the .live class off-screen — 46 infinite animations run only while you're watching them. The country legend filters by dimming non-matches; nodes are keyboard-focusable and announce themselves to a live-region caption.

B.5The iteration log

  • Pass 1 · Design critique
    • The cover's scroll cue crowded the ornament rule on mobile — the cue now sits on its own line with more air, and the hero measure tightened.
    • Glyph captions read as floating debris at desktop widths; anchoring them to the row's baseline zone with an index line ("letterform ii · of iv") made each row a museum label.
    • Map sea labels and the Niger's label needed letterspacing and rotation tuning to read as engraving rather than UI text.
  • Pass 2 · Elevation
    • Deepened the map from decoration to instrument: added the 13-button country legend with dimming filter, keyboard-focusable nodes, and a live plate caption that names every chapter.
    • Gave the goals band its own indigo register — apricot numerals, oldstyle figures, a "goals not victories" preface — so the one data moment lands as a promise, not a dashboard.
    • Accra, as head chapter, now carries a larger node; Tema and Banjul were nudged apart from their neighbours so the Gulf coast reads at a glance.
  • Pass 3 · Ship quality
    • All three viewports screenshotted full-length and read: zero console errors, fonts loading (Ɛ Ŋ ɔ render from the 2 KB subset), every anchor and both redirect stubs verified.
    • Reduced-motion pass: glyphs stand pre-filled, halos hold a static ring, reveals appear without translation; scroll-behavior drops to auto.
    • Proofread end to end; the sixty-word mission recounted at exactly sixty words.

B.6Deploy

Netlify, straight from a Git push: publish = ".", immutable one-year caching on /assets/*, conservative security headers, and Netlify Forms picking up the pledge form at build time. The /guide and /process routes exist as tiny meta-refresh stubs pointing back to these appendices, so the collection's route contract holds on a one-page site.