Inspiration

Family stories disappear. Your grandmother's WWII tale, your grandfather's journey to another country, your uncle's unforgettable adventure—they fade with time unless someone preserves them. We wanted to build a way to capture these narratives before they're lost forever, while also honoring the stories that matter most to you personally.

## What it does

Anecdotario is an AI-powered family story archive that:

  • Captures anecdotes with intelligent chat assistance that helps you write compelling narratives
  • Preserves lineage: Mark stories as "personal" (things that happened to you) or "familiar" (inherited family tales from ancestors)
  • Tracks sources: Record who told you a story, when they told it, and when it actually happened—critical for century-old family histories
  • Orders chronologically: Define relative ordering ("this happened before/after that other story") without needing exact dates
  • Shares securely: Control who sees each story (private, friends, or shared)
  • Works in English & Spanish with multi-language support

## How we built it

  • Frontend: Next.js 16 + React 19 + TypeScript
  • Backend: Supabase (PostgreSQL) with Row-Level Security policies for privacy
  • AI: Claude 3.5 Sonnet via Vercel AI SDK—intelligently detects inherited vs personal stories
  • Ordering: Custom topological sort algorithm (Kahn's) to build chronologies from relative relationships
  • Database: Created 3 new tables (anecdote_sources, anecdote_ordering, category column) with RLS protection
  • Deployment: Vercel with environment variables for Supabase & Blob storage

## Challenges we ran into

  1. Dating without dates: How do you order stories when you don't know exact dates? We solved it with relative ordering—users compare stories ("this was before X, after Y") and we build a graph
  2. RLS complexity: Ensuring users can only see their own stories while maintaining privacy across shared relationships required careful policy design
  3. AI detection: Getting Claude to intelligently detect whether a story is inherited vs personal, then ask for source info—required careful prompt engineering
  4. Git email mismatches: Deployment blocked because commit author email didn't match GitHub account (lesson: validate early)
  5. Vercel plan limitations: Hobby Plan doesn't support team collaboration on private repos—had to upgrade to Pro

## Accomplishments that we're proud of

  • Complete hereditary feature: Full pipeline from chat detection → source tracking → chronological ordering
  • Topological sort: Working algorithm that handles conflicts (first relationship wins) and calculates positions
  • Smart chat: Claude detects story type automatically and asks the right follow-up questions
  • Privacy-first: Row-Level Security policies protect user data at the database level
  • Production-ready: Deployed to Vercel with proper environment variables and build optimization
  • Multi-language: Full i18n support for Spanish & English

## What we learned

  1. Topological sort is powerful: For problems without strict ordering, relative relationships can be more intuitive than absolute timestamps
  2. Supabase RLS is game-changing: Security at the database layer means you can trust your queries
  3. AI detection is subtle: Prompting Claude to understand context and ask intelligent follow-ups requires precision
  4. Git matters: Email configuration affects deployments—catch it early
  5. Vercel workflow: Private repos with teams require Pro plan, but the deployment experience is excellent once configured

## What's next for Anecdotario

  • Family tree visualization: See how stories connect across generations
  • Collaborative editing: Multiple family members can refine and add to stories together
  • Photo & voice: Attach images and voice recordings to anecdotes
  • Export: Generate printable books or PDFs of your family chronicle
  • Timeline view: Interactive visual timeline of all family events
  • Search & tagging: Find stories by people, dates, or themes
  • Analytics: See patterns—when do most stories happen? Who are the main characters?
  • Public family archives: Optionally share curated collections with extended family or the internet

Built With

  • claude-3.5-sonnet
  • date-fns
  • lucide-react-icons
  • next-intl-(i18n)
  • next.js-16
  • react-19
  • row-level-security-(rls)
  • shadcn/ui
  • sonner-(toast)
  • supabase
  • supabase-(postgresql)
  • tailwind-css
  • typescript
  • vercel-(deployment)
  • vercel-ai-sdk
  • vercel-blob
  • zod-(validation)
Share this project:

Updates