tim-hose-portfolio / selected work / family-archive
Case study · Family archive
A private family archive
I designed and directed the AI build of a private genealogy website for my family, nearly nine thousand people across two family lines. I made every design and UX decision, chose the palette and type, and directed the full stack into being, then found and fixed the gaps myself. It holds more than records: biographies, photos, family recipes, and an interactive tree.
TL;DR
- Role
- Designer and director. I made every design and UX decision and directed all of the code without writing it.
- Scope
- A private family archive of nearly nine thousand people across two family lines.
- Stack
- Laravel, PHP, and MySQL on existing shared hosting, none of which I had used before.
- Approach
- Directed three AI tools with distinct jobs: an architect, a builder, and a prototyper.
- Status
- Functional and running privately today, invite-only, not yet public.
01
Why I built it
I built this for my children, so they never have to wonder who they are or where they came from.
There are plenty of sites for the standard genealogy facts, the who, the where, the when. What I wanted was something harder to find: memories. What an ancestor's life actually looked like as they moved through it, the places they lived, the recipes they cooked, the small things that don't fit in a record but are the real feeling of a family.
It started as a project just for my own kids. It didn't stay that way. My brother-in-law and his family are in it now, along with my half siblings and their mother, each with their own branch and their own history worth keeping. What began as one line has turned into several, and I plan to share it with all of them this holiday season and let everyone log in and add whatever they want to pass down to their own children.
02
The constraints
I'm a design systems specialist, not a backend developer. Before this project I'd never worked with Laravel, PHP, or MySQL.
I had no budget for new infrastructure, so it had to run on the shared hosting I already had. It had to be invite-only, with no public access, since this is family history, not a public product. And it had to handle a tree of unknown size. It turned out to be nearly nine thousand people across both sides of my family.
03
Designing the experience
The visual identity wasn't decided upfront. Early builds used the framework's defaults. I designed a landing page in Figma with a black-and-white photography hero, a navy and gold palette, and Playfair Display headings over a Roboto body, and I let that page become the design authority for the whole site. Everything else was reskinned to match it.
The hero rotates through black-and-white photographs of real places tied to specific ancestors, the Glasgow university where one of them lived, the bridge another crossed going west, each captioned with the place and the person. Seven of them, so the archive introduces someone different every time you arrive.
The landing page I designed in Figma became the design authority for the whole site. Everything else was reskinned to match it.
Seven rotating hero images, each tied to a specific ancestor and captioned with the place and the person.
Some of the decisions were about handling the gaps in a family archive gracefully rather than pretending they don't exist. A profile without a photo doesn't just show a blank space. It falls back to a monogram, or for ancestors before 1840, a historical-era treatment that fits the period instead of looking like a missing file. Family lines are color-coded by branch, paternal and maternal, grandfather and grandmother, carried through as stripes on tree cards and as the color behind someone's initials.
The profile page is the center of the site. A hero with a portrait, a stats bar that only shows the information that actually exists for that person, a two-column biography, family connections shown as cards rather than a plain list, a timeline, and a documents gallery. Records tell you that my grandfather moved from Kansas to California sometime between 1940 and 1950. The memories his son left tell you he took work as a baker for twenty-five cents a day, and that he once found a discarded shovel head at the dump and carved a handle for it overnight so he could earn a dollar digging the next day. Memories sit level with the facts on this page, not beneath them, because that contrast is the reason the site exists.
A person page with biography, family memories, timeline, and documents. No portrait on file, so the monogram fallback stands in. Living relatives are omitted or blurred for privacy.
04
Directing the build with AI
I directed all of it, rather than writing it. I made every design and UX decision, chose the palette and typography, reviewed every screen, and found the gaps myself, including a full flowchart pass that caught user flows we'd missed entirely.
I worked across three tools with different jobs. One served as the architect, planning the database structure, specifying how the family tree should behave, researching how sites like Ancestry and FamilySearch handle these same problems, and writing the backlog. A second built the actual code from that plan, project setup, the database, the page templates, the import tool, the tree itself, one task at a time, from prompts I refined as we went. A third produced visual prototypes, the profile layout, the printed storybook pages, the recipe pages, handed off as references rather than production code. My process was to plan, design, build, review, and go back to planning with whatever I'd found, on repeat.
None of these tools were things I'd used together before this project. Neither was the stack underneath. The first time I installed a local development environment, I was pasting commands into PowerShell one at a time and finding out what they did as I went.
05
The messy middle
The family tree got rebuilt twice. The first version was a custom renderer that loaded a sliding window, two generations up, two down, and reloaded the whole thing every time you navigated. Sitting it side by side with FamilySearch made it obvious that it didn't actually work for tracing a lineage. Rather than patch it, I replaced it outright with a library built for exactly this, so branches expand individually and stay expanded the way you'd expect. Even after the switch, the first version had chevrons that didn't respond, connector lines that clipped, and a tree that rendered as a tiny cluster in the corner. That took several passes to sort out.
The family tree, rebuilt on a library after my first custom renderer proved unusable for tracing a lineage. Branch colors map to the four grandparent lines. Living relatives blurred for privacy.
Importing the actual data was its own adventure. My side of the family alone produced an export of nearly thirty thousand records, fifteen generations of everyone, and had to be stopped and reduced. My wife's side wasn't in that export at all, since the tool only followed my bloodline, so a second export had to be built from her side specifically, and the first attempt at that one came back empty. Getting both sides in cleanly, matching the handful of people who appeared in both trees, and sorting out the duplicates it flagged took real back and forth.
The visual identity changed mid-project too. The first prototype used a completely different palette and a "leather-bound album" direction. When I designed the landing page in Figma, it didn't match, and rather than force the landing page to fit the site, I let the landing page win and reskinned everything else around it.
And partway through, I caught a sequencing problem in my own plan. I'd ordered the print and export features before the content those features depended on actually existed. I mapped every flow to find the gaps, and reordered the whole backlog around what actually needed to exist first.
06
Where it is, and what's next
The site is functional today, running privately, not yet live to anyone but me. It handles the full family directory, the tree, profiles, photo uploads, an invite-only registration system, a first pass at recipes and family traditions, and a working relationship pathfinder that can tell you exactly how two people connect. A storybook export engine exists on the back end, with the interface still catching up to it.
Some of the design work is about respecting the artifact rather than cleaning it up. My grandfather was a baker, and his recipes are written the way a working baker writes for himself. No oven temperature, no baking time, no measurement on the salt, because he didn't need those written down. The site transcribes them as written and notes what's missing, then invites the family to fill the gaps in the comments.
A recipe transcribed as written, with the original card beside it. No oven temperature, no baking time, and no measurement on the salt, because a working baker didn't need them written down.
What's designed but not yet built: dedicated landing pages for each family surname, a proper print and export hub, a first-time onboarding flow, and a few smaller discovery pages. What hasn't been started yet: a real mobile pass, and connecting it to outside genealogy sources.
I'm sharing it with my family this holiday season, and letting them add what they want the next generation to know.