portal
By Rafael Duarte · created 6 Apr 2020, 12:00 UTC · last updated 14 Oct 2026, 13:35 UTC · version 18
portalreacttypescriptarchitecture
Repository: Emargen/acme-portal · Owner: Aiko Tanaka · Stack: React, TypeScript, Vite, Vitest and Testing Library, Playwright for end-to-end tests
The portal is where a customer's administrators run their organisation and where approvers decide access requests. It keeps no data of its own; every screen reads and writes through identity-service's API in the client's region.
Screens
| Screen | Who | Notes |
|---|---|---|
| People | administrators | add, edit, import from a CSV file (since 16 July), merge duplicates (since 22 September) |
| Depots | administrators | depot import from a file for Vossberg (since 25 September) |
| Roles | administrators | role assignment; since 1 October a depot list beside the role, empty meaning every depot |
| Access › Approvals | approvers, administrators | the approvals inbox: requests waiting on me; administrators also see All requests |
| Access report | administrators | who can open what, plus sign-in settings and API keys; filter by depot (since 8 July) |
| Single sign-on | administrators | per-depot settings and switch; metadata upload since 18 August |
| Sign-in log | administrators | the last 90 days |
| Notices | everyone | the bell, since 4 August |
| Onboarding | ACME staff only | the onboarding wizard for a new client |
Things that surprise people
- The Access report's PDF is printed in the browser.
src/reports/AccessReport.tsxdraws every row and callswindow.print(). There is no server-side export and no spreadsheet download. A CSV was planned with the by-depot filter and cut before release (ENG-1576). - Team scope. The approvals inbox narrows a manager's view to their own teams (
src/approvals/TeamScope.ts). - CSV. The people import reads CSV and writes an error file in CSV. There is no .xlsx support.
- Translations. Strings are being moved into message files for the portal in German and Dutch (in delivery). New strings go into the message files under
src/i18n/locales/en/, never inline.
Releases
The portal ships from release/4.x branches, cut every second Tuesday; see Release process. As of today release/4.12 is what customers have. main already has the new reports layout, which hasn't shipped: when you answer a customer question about what the portal does, read the release branch, not main.
Performance and accessibility
- First load went from 4.1 s to 1.3 s in July (ENG-1501): route-level code splitting and no icon font.
- The portal meets WCAG 2.1 AA since 7 August (ENG-1544). New screens are checked with the keyboard and a screen reader before review.
Agents in the portal
Aiko uses Codex on portal tasks claimed in Emargen, through Aiko's personal token. Its merge requests follow the same review rules as anyone's. See Claude Code and Codex with personal tokens.
Change history
| Version | Date | Who | What |
|---|---|---|---|
| 15 | 10 Jul 2026 | Aiko | Faster start, accessibility |
| 16 | 23 Sep 2026 | Aiko | Merge duplicates, depot import |
| 17 | 2 Oct 2026 | Aiko | Depot list on role assignment (ACM-247) |
| 18 | 14 Oct 2026 | Aiko | Release branches vs main; the Access report's PDF |