Skip to content
All projects
Own product Own productsEdTech

Sawah

Seven thousand years of Egypt in one place

My own digital encyclopedia of Egypt: sourced history, a hieroglyph name writer, playable senet and a live Egyptian calendar, in five languages.

Country
Egypt
Type
Own product
Timeline
2026
Platforms
Web
Sawah, the digital encyclopedia of Egypt
passing tests
913
verified hieroglyphic signs
1,072
recorded citations
~95,000
languages
5

Overview

Sawah (Arabic for 'traveller') is a free, ad-free digital encyclopedia of Egypt. Not a site about Egypt, but Egypt arranged so you can know it and live it: seven thousand years of sourced history, the hieroglyphic script, literature, art, mythology, Egyptology, almost two thousand places, and a games arena with playable senet and the Royal Game of Twenty Squares.

It is my own product. I am the founder, product owner and sole engineer, and took it from first commit on 16 Aug 2026 to a public preview in late September: about six weeks and 177 commits. It is Arabic-first, with English, French, German and Italian routed from day one.

The challenge

  1. 01

    Credibility is the product: every historical claim must carry a real source and a confidence level (consensus, disputed, popular_myth), and the code must make that easier than skipping it.

  2. 02

    Your name in hieroglyphs is usually a gimmick. Sawah had to be fun and honest: a phonetic approximation, sign by sign, with the reasons.

  3. 03

    Arabic-first, not Arabic-also: full RTL and LTR, five locales and SEO-friendly URLs, with no duplicate content and no English-only screen.

  4. 04

    SEO is the acquisition channel, so anything that hurts indexing, such as a client-only SPA, was ruled out up front.

  5. 05

    One engineer, a huge surface: the codebase needed hard rules enforced by a linter, not good intentions.

Highlights

Encyclopedia

  • Egyptian history in 7 eras and 26 periods, with 400+ chapters, ~5,000 sources and ~95,000 citations.
  • A catalogue of 8,500+ entries across literature, art and cinema, mythology and Egyptology.
  • 1,959 places, including museums, temples and sites across the governorates.
  • Every claim linked to a source with its confidence level; user corrections kept apart from official content.

Hieroglyphs

  • A 1,072-sign catalogue indexed by Gardiner code and machine-verified against the Unicode database.
  • The cartouche writer: your name in hieroglyphs, sign by sign, in four styles, exportable as PNG and shareable.
  • Hieroglyph Academy with alphabet cards and SM-2 spaced repetition.

Arena and culture

  • Senet and Twenty Squares against the computer at three levels, against a friend, or online, with replays, a lesson and a daily puzzle.
  • A daily challenge with streaks and quiz games over 7,500 questions.
  • The Egyptian calendar computed live: today in the Coptic year and the ancient civil year, side by side.
  • 'Which ancient Egyptian are you?', hieroglyph wallpapers and an embeddable sign-of-the-day widget.

Platform

  • 45 feature flags (locked, internal, beta, open) flipped live from the admin panel.
  • A full admin panel for flags, catalogue, history, news, games, notices, pages and members.
  • 'Ask Sawah', a grounded Q&A assistant that may only answer from Sawah's own published passages.

Signature feature

Your name in hieroglyphs

  • The name, in Arabic or Latin script, goes to transliterateName() in the pure @sawah/hieroglyphs package.
  • Each sound maps to a one-sound sign from the verified catalogue, and a gender determinative closes the name, as Egyptian scribes did.
  • Sounds Egyptian lacked, such as a separate l and r, are flagged as approximations and explained sign by sign: Gardiner code, what the sign depicts, and the caveat.
  • The result is presented as a phonetic approximation, never a translation, and notes that ancient pronunciation is a scholarly reconstruction.
  • The cartouche renders in four styles (papyrus, carved stone, gold, modern) and exports to PNG or a share link.

Swipe for more

Engineering notes

  1. 01

    A constitution enforced by the linter

    The key rules are ESLint errors, not guidelines: 300 lines per file, 40 per function, at most 3 parameters, nesting depth 3, complexity 10, no any, no circular imports. pnpm check runs exactly what CI runs.

  2. 02

    Pure logic, isolated I/O

    The hieroglyph engine, calendar, spaced repetition and both board games are side-effect-free packages with no database, clock or randomness of their own. The same code runs on the server, in the browser and in tests.

  3. 03

    Sources as data, not decoration

    Chapters, catalogue entries and places link to records in a sources table with a confidence level. Images follow the same rule: only open licences, each logged with photographer, licence and origin; NC and ND licences are rejected automatically.

  4. 04

    An AI assistant that can't make things up

    'Ask Sawah' retrieves Sawah's own published passages, and the model may answer only from them or decline. Providers (Groq, Gemini and a premium fallback) sit behind one seam with shared rules, so switching provider changes the prose, never the editorial constraints.

  5. 05

    Five languages, no duplicate content

    Every locale has one canonical prefixed URL, strings exist only as i18n keys with a parity test, and each language opens behind its own flag, so unfinished translations live on the site without being indexed.

  6. 06

    Ship dark, open on purpose

    Every pillar, page, locale and tool sits behind one of 45 four-state flags. Unfinished work lives on production without being exposed, and nothing goes public without a decision.

Results

  • Public preview live at sawah-egypt.vercel.app.
  • Content measured on 26 Sep 2026: 400+ history chapters, ~5,000 sources, ~95,000 citations, 8,500+ catalogue entries, 1,959 places, 7,500 game questions and 1,072 verified signs.
  • A 9-package monorepo with 913 passing tests, zero lint and type errors, about 250 statically generated pages, and CI on every push.

Stack

  • Next.js 15
  • React 19
  • TypeScript
  • Tailwind CSS 4
  • next-intl
  • Zod
  • Prisma
  • MySQL 8
  • Turborepo
  • pnpm
  • Vitest
  • GitHub Actions
  • Vercel