| `DBIS/` | DBIS | Digital Bank of International Settlements |
| `ICCC/` | ICCC | International Criminal Court of Commerce |
| `OMNL/` | OMNL | Organisation Mondiale du Numérique |
| `XOM/` | XOM | Sovereign Military Hospitaller Order of St. John of Jerusalem of Rhodes and of Malta |
**Naming note (XOM):** The directory `XOM/` refers to the sovereign entity recognized in UN relations. In UN and official references the most common abbreviations are **SMOM** (Sovereign Military Order of Malta), **Sovereign Order of Malta**, or simply **Order of Malta**. This project uses **XOM** as the directory name; the official long-form name above is the UN/official style.
## Monorepo and portal repos
This project is a **monorepo**. The canonical repository is:
- **Access** — Middleware enforces protected routes; placeholder auth uses a `portal-role` cookie. RBAC in `lib/rbac.ts` defines which roles can access which paths. Replace with OIDC/OAuth 2.0 when the identity provider is configured.
See [PORTAL_NAVIGATION.md](./PORTAL_NAVIGATION.md) and [ORG_STRUCTURE.md](./ORG_STRUCTURE.md) for the full sitemap and org-derived navigation.
## Root scripts
From the repo root (e.g. for formatting/linting shared config files):
```bash
pnpm install
pnpm run format:check
pnpm run format
pnpm run lint
```
## Adding a new portal
1. Create a directory with the body’s initials.
2. Bootstrap a Next.js app (TypeScript, Tailwind, App Router) per TECH_STACK.md.
3. In the new portal, extend root configs:
-`tsconfig.json`: `"extends": "../tsconfig.base.json"` (or path to root).
- ESLint: extend root `.eslintrc.cjs` and add Next + TypeScript.
- Use root `.prettierrc.json` (or don’t override).
4. Add a README in the portal linking to TECH_STACK.md and TECH_POLICIES.md.
5. List the new portal in this README and in any CI/docs that enumerate portals.
## Portal checklist
Each portal should satisfy [PORTAL_CHECKLIST.md](./PORTAL_CHECKLIST.md) before release.