Logo Lanfrica

elbraino/sankore

Domain:

peace and security
Creator:
elb
Host:
A public archive of security research from the Arab world and Africa. Works are indexed by default; people are opt-in. # Sankore — Arab World & Africa Security Research Index A public, open archive of cybersecurity research from the Arab world and Africa: conference talks, tools, CVEs, papers — and the researchers behind them, on an opt-in basis. Inspired by Atlas Latino. ## How it works - All data lives in this repo as YAML under `data/`, validated in CI. - The site is generated statically (Astro) and deployed from this repo. - Anyone can contribute a work via the web form (generates a PR) or a direct PR. - Researchers can claim their profile to unlock bio, photo, and links. Unclaimed profiles show only a name and linked works. See GOVERNANCE.md. ## Contributing 1. `data/works/` — add a talk, tool, CVE, paper (see `data/schema/work.schema.json`). 2. `data/people/` — stubs only unless it's you (consent model in GOVERNANCE.md). 3. `data/events/` — regional conferences, BSides, meetups, CTFs. 4. Run `npm run validate` before opening a PR. ## Development ``` npm install npm run setup:py # creates .venv and installs the validator's deps npm run dev ``` `npm run build` runs the data validator first and refuses to build on invalid data. `npm run validate` runs it on its own. ### Dependency lockfile CI runs `npm install`, not `npm ci`. Astro depends on sharp, whose optional `@img/sharp-wasm32` package declares `@emnapi/runtime`; npm does not write that entry into a lockfile generated on macOS, so `npm ci` fails on Linux runners with an EUSAGE "out of sync" error even though nothing is actually wrong. Versions are still pinned by the lockfile — install only reconciles the platform-specific optional packages. Commit `package-lock.json` as usual. ## Maintainers - (add 2–3 regional co-maintainers here before public launch) ## License Data: CC BY 4.0 · Code: MIT (pending confirmation)