Structured analysis of African data.
# Open Ordinal
Open Ordinal is a bilingual research archive of structured economic and social data analysis focused on Africa.
Live site:
openordinal.org
## Project status
Open Ordinal is in active development. Core architecture and page structure are in place; entry publishing is ongoing.
## What this repository contains
- Astro-based static website source code
- English entries in `src/content/entries/`
- French entries in `src/content/entries-fr/`
- Raw datasets and chart assets in `src/content/data/`
- Shared layout and entry components in `src/components/`
## Prerequisites
- Node.js 20+
- npm 10+
## Scripts
- `npm run dev`: start local development server
- `npm run check`: run Astro type/content checks
- `npm run og:generate`: generate entry OG/LinkedIn cards into `public/og/`
- `npm run build`: generate OG cards, build static site, and build Pagefind index
- `npm run preview`: preview production build locally
## Run locally
```bash
npm install
npm run dev
```
## Environment variables
Self-hosted Umami analytics is enabled only in production and only when a website ID is set. Newsletter signup defaults to the production Listmonk instance, but both the endpoint and public list UUID can be overridden.
```bash
PUBLIC_UMAMI_WEBSITE_ID=53173b92-1369-4f59-939c-d9cb71bbad18
PUBLIC_UMAMI_SCRIPT_URL=
umami.utopiaops.dev
PUBLIC_LISTMONK_BASE_URL=
newsletter.openordinal.org
PUBLIC_LISTMONK_LIST_UUID=3f806e6f-e1a7-4689-982b-ef913881db98
```
## Analytics
- A self-hosted Umami tracker initializes only in production builds and only when `PUBLIC_UMAMI_WEBSITE_ID` is provided.
- The tracker loads via a single deferred script tag in the shared layout.
- The production site does not use analytics cookies or session recording.
- `PUBLIC_UMAMI_SCRIPT_URL` defaults to `
umami.utopiaops.dev`.
## Newsletter
- Public newsletter signup is handled by a self-hosted Listmonk instance at `
newsletter.openordinal.org` …