Case study · Systems
The Living Archive: Henry Chukwudi John's portfolio and CMS
I engineered Henry Chukwudi John's scholarly portfolio and CMS, including a 14-type block editor and the Marginalia blog as well as an admin control centre.

Role
Full-stack engineer; Henry is the scholar and subject
Timeline
Overhaul 4 Jul 2026 · live on hcjohn.com (verified 15 Jul)
Stack
Vite · React 18 · Express 5 · Firebase Admin · Cloudinary
Output
Public Living Archive · Marginalia · admin Control Center + Composer
The Living Archive is Henry Chukwudi John's public scholarly home. It includes the Accession, Research record, Collections, Finding Aid and Marginalia as well as the CMS behind them. I engineered the system; the writing and publications as well as cultural work are Henry's.
/home/ahmdmshazly/henry at commit e7c0e17 (4 July 2026, branch enhance/overhaul). Citation chips use a Google Scholar and ORCID snapshot dated 2 July 2026, not a live API. Ledger: backups/living-archive-numbers-ledger.2026-07-15.md.Open the public archive
Open hcjohn.com, which redirects to www.hcjohn.com. The archive, Research and Marginalia as well as style guide are public. Firebase Auth restricts the admin control centre to Henry; there is no shared login.
/admin. Local emulator defaults remain only in the ledger appendix.Research labels its citation badges as a snapshot taken on 2 July 2026. The dark theme and /styleguide are live, and the 4 July overhaul is in production.

Why build an archive, not a résumé template
Henry's work covers digital literacy and African literary corpora as well as geospatial heritage maps. The site uses archival structures such as plates and finding aids as well as records so its form fits that work.
Henry and I also co-authored EduBridge Analytica. I built this site so he can keep his scholarly record current without editing pages by hand.
Henry is the scholar. I built the shelf that holds the record.
What it does, in plain language
Visitors can browse the Accession, Through-Line, Collections and Finding Aid as well as publication record with dated metrics. Marginalia publishes essays with comments and likes. In /admin, Henry manages posts, fourteen content block types, comments, collections, publications, his profile and inquiries as well as media. The browser does not write to Firestore directly; Express and the Admin SDK handle every write.
Screens in action (live public site)
Figures below were captured from production hcjohn.com on 15 July 2026. No admin credentials were used.






Control Center at /admin
The Control Center at /admin manages overview statistics, Marginalia posts, content blocks, comments, collections, publications, The Record, profile data and inquiries as well as media. Firebase Auth signs Henry in. Express and the Admin SDK handle every write.
The following figures were captured from the seeded local emulator on 15 July 2026. They show the same Control Center code used in production. Admin credentials are not published.






The loop
LOOP 01 · PUBLIC
Accession and finding aid
The public SPA organises Henry's work into a hero plate, the Through-Line section and collections as well as a correspondence desk, with light and dark themes.
LOOP 02 · RECORD
Research and publications
Twenty-five seeded publication entries include dated citation chips verified against ORCID and Google Scholar when the snapshot was taken. They are not scraped on each page view.
LOOP 03 · MARGINALIA
Essays with comments
Marginalia publishes essays with comments and likes. Likes use an anonymous localStorage id, and comments pass through the rate-limited API.
LOOP 04 · COMPOSE
Fourteen block types
The editor stores essays as typed blocks such as ledes and pull quotes as well as figures instead of opaque HTML.
LOOP 05 · CONTROL
Admin behind Firebase
Only /admin has sign-in. Firestore and Storage rules deny client access, so Express and the Admin SDK provide the only write path. Media uses Cloudinary.
What was measured
it() cases · client + server source
CI jobs · quality + emulator tests
publications in seed · snapshot metrics
content block types in the Composer
At commit e7c0e17, the client and server contained 46 it( cases; the CHANGELOG records growth from 36 to 46. Two GitHub Actions jobs run lint, typecheck and build as well as Firebase-emulator tests. The client and server as well as packages contain about 9k lines of TypeScript. The Research page records 205 citations, h-index 7 and i10 5 as well as 25 publications in a 2 July 2026 snapshot. A local npm test run failed on emulator sign-in with a 400 response, so this page does not claim a current green run.
What this page will not claim
I did not write Henry's papers. EduBridge is our shared research apparatus; this site presents his scholarly work. The repository is private and has no project LICENSE file. Likes reset when localStorage is cleared. Rate limits apply per warm serverless instance. Vercel's ~4.5 MB body cap is lower than the API's 10 MB multer limit. SPA SEO uses client metadata and static Open Graph tags; prerendering remains future work.
No admin password appears here. Emulator defaults in the README are local-only. Citation numbers will drift from Scholar until someone refreshes the seed snapshot.
Overhaul 2026-07-04 · henry-estate 1.0.0.
Next project