DEV Community

cwhitelam
cwhitelam

Posted on

I Spent 4 Months Digitizing My Family’s Handwritten Recipes

A few months ago, I was going through a box of old recipe cards and found one for Chicken Tetrazzini. A recipe my mom’s been making for as long as I can remember. The handwriting was faded, the card was warped, and there was a grease stain on it older than me.

It hit me: this could disappear. A fire. A flood. A move where someone tosses the wrong box. These aren’t just instructions for meals — they’re pieces of our history. Faded index cards from my grandmothers to my dad, notes scribbled by my great-aunt during holiday gatherings, recipes passed down through generations. There are hundreds of them, fragile and irreplaceable.

So I spent the next four months building a private digital archive for my family.

The Goal

We have handwritten recipes scattered across index cards, notebooks, magazines, printed emails, and old Microsoft Access database files. Aunts, uncles, parents, grandparents — decades of cooking history spread everywhere.

A simple scan-to-PDF archive would have worked for backup, but that wasn’t enough. I wanted to:

  • Digitize everything into a single, searchable archive
  • Preserve the original handwritten cards — not just the text, but the actual images
  • Make it accessible to family members who aren’t technical
  • Ensure it all survives longer than the paper it’s written on

Why Preserving the Originals Mattered

This is the part I’m most proud of.

It would’ve been easy to just parse the text and store it in a database. But there’s something irreplaceable about seeing your grandmother’s handwriting. The smudges. The crossed-out corrections. The grease stains from thirty years of use.

Every recipe in the archive keeps the original scanned image alongside the structured data. You get the clean, searchable version for cooking. But you can always pull up the original card and see it exactly as it was written.

That’s not a technical feature. That’s the whole point.

How It Works

Open the web app on your phone, scan a recipe card with your camera, and AI parses the handwriting into structured fields — ingredients, instructions, cook time, category. Review, make any corrections, save. The original image is stored permanently alongside the parsed recipe.

What used to be a twenty-minute manual entry job takes about less than two minutes.

The Stack

  • Frontend: Next.js 15 with TypeScript
  • Backend: .NET 8 Web API with Entity Framework Core
  • Database: PostgreSQL
  • Storage: Cloudflare R2 for images and scanned documents
  • Auth: Passwordless magic links
  • AI: OpenAI GPT-4o-mini for recipe parsing

Technical Decisions

Passwordless authentication. My family members aren’t all technical. Passwords would’ve been a barrier. Magic links sent to email — click and you’re in. No accounts to manage, no passwords to forget.

AI for parsing, not just OCR. Handwritten recipes are messy. Abbreviated measurements. Vague instructions. “Some butter” with no quantity. I needed the AI to interpret and structure, not just transcribe. The prompt extracts fields, fixes obvious typos while preserving voice, and flags anything uncertain for review.

Recipe versioning. Recipes evolve. Someone tweaks the seasoning, swaps an ingredient, adjusts the temperature. The system tracks every version with full audit trails — who edited what and when. Soft deletes mean nothing is ever truly lost.

Dual storage. Every recipe stores both the AI-parsed structured data and the original scanned image. They’re linked but independent. The text is searchable and clean. The image is the artifact.

Standout Features

AI-Powered Scanning. Snap a photo of a handwritten card with your phone. The app uploads it and uses AI to extract ingredients, instructions, and metadata. It handles poor handwriting, stains, and shorthand surprisingly well — after some prompt tuning.

Cook Mode. A distraction-free view optimized for kitchen use: large text, step-by-step instructions, clean layout. No clutter when your hands are covered in flour.

Invitation-Only Access. Controlled via email invites with branded links. Currently limited to family for privacy.

The Hard Parts

Handwriting recognition. Recipe cards from the 70s and 80s weren’t written with OCR in mind. Cursive, faded ink, crossed-out notes, shorthand abbreviations. Early AI prompts needed heavy refinement to handle this reliably.

Mobile scanning UX. The entire point is to grab a card and scan it on the spot. That flow had to be dead simple — open app, point camera, done. It took multiple iterations to get right.

Family onboarding. If my aunt can’t figure it out without calling me, it’s a failure. Big buttons, clear flows, no jargon.

Data safety. This was paramount. Multiple backups, versioning, and soft deletes guard against the very disasters I feared for the physical recipes.

What’s Next

I’d like to add a report designer — a standard format so any recipe can be printed as a clean, consistent card. Physical backup for the digital backup.

I’ve also been exploring ways to generate new cards that match original handwriting styles, so you could print a card that looks like it was written by your grandmother. Recreating that personal touch, not just preserving it.

Where It’s At

The archive is live and in use. It’s invitation-only for now — just family members. I’ve digitized a few dozen recipes so far, with plenty more to go.

It’s not perfect. There are still bugs to squash, for example, “2 large potatoes” sometimes gets parsed as “2 L” because the system thinks the “l” is liters. Small things like that. But it works well enough to be useful, and I’m iterating as I go.

Maybe one day I’ll open it up if there’s interest. For now, it does exactly what I needed: make sure that grease-stained Tetrazzini recipe outlives the index card it’s written on.

Built at Oakdale Engineering. By CW

Top comments (0)