iRemember

Bilingual family genealogy & biography archive — permissioned stories, AI timelines, public snapshots. Live on this server.

iRemember · 家族记忆档案 — a production-shaped demo for recording family genealogy and private biography material: a single-screen genealogy workspace, permissioned biography entries, AI-generated timelines, and shareable public biography snapshots — all in a bilingual (中文 / English) UI.

🔗 Open the iRemember demo →
Self-hosted here at /iremember/ (Next.js, Docker). Demo data only — no real personal records.

Built to show how a privacy-first family archive holds together end to end — from the data model and permission engine to the AI pipeline and the public-facing blog — without leaking private source material into anything public.

Surfaces

  • Dashboard — family cards, member/relationship counts, and pending claim invitations
  • Genealogy workspace — one-screen family graph with branch-range controls (ancestors / descendants / direct family / custom depth / full tree) and a person panel
  • Person biography — private entries, original-media metadata, an AI timeline, a blog draft, and a live permission summary
  • Public blog — a published biography backed by a curated snapshot, never the private source

Architecture

  • App — Next.js 14 (App Router, RSC) rendered server-side and run as a standalone Docker container behind the host nginx, mounted under /iremember/ via basePath
  • Data model — a PostgreSQL + Prisma schema (users, families, persons, relationships, biography, media, timeline, blog, permissions, audit) designed for the long-term product
  • Core libraries — a policy-based permission evaluator, application-layer encryption helpers for private text, genealogy graph/branch utilities, a storage-provider adapter, and a pluggable AI provider (mock in the demo)

Highlights

  • Permission-gated AI — timeline and blog generation only ever read entries the actor is authorized to ai_process / publish, evaluated through the same policy engine as the rest of the app
  • Private-by-default — biography text is stored as ciphertext + nonce with a key version; public snapshots are a separate, deliberately-published artifact
  • Bilingual throughout — every surface renders in Chinese or English from a shared dictionary, server-rendered per request

Stack: Next.js · React · TypeScript · Tailwind CSS · Prisma · PostgreSQL · Docker · nginx

Live and self-hosted — the demo above is the primary entry point.