Culpepper.info

About This Project

A modern web application for exploring and preserving the Culpepper family genealogy

🚀Technology Stack

Frontend

  • ▸
    Next.js 16 - React framework with App Router for server & client components
  • ▸
    React 19 - Modern UI library with hooks and server components
  • ▸
    TypeScript 5 - Type-safe development with strict mode
  • ▸
    Tailwind CSS 4 - Utility-first styling with custom theme system
  • ▸
    D3.js 7 - Interactive family tree visualization

Backend & Data

  • ▸
    Neo4j Aura - Graph database perfect for family relationships
  • ▸
    ConfigCat - Feature flags for dynamic configuration
  • ▸
    Vercel - Deployment platform with GitHub integration
  • ▸
    Node.js - Runtime for data scraping and processing

📊Data Collection Process

1

Source Data

All genealogy data is sourced from Culpepper Connections, a comprehensive genealogy website maintained by Lewis Wyman Griffin Jr.

2

Web Scraping

A custom TypeScript scraper fetches HTML pages from the source website, parsing person records, relationships (parents, spouses, siblings), and biographical details using Cheerio for HTML parsing.

3

Graph Database Import

Data is transformed and imported into Neo4j, a graph database ideal for modeling family relationships. Each person becomes a node, with edges representing PARENT_OF, SPOUSE_OF, and SIBLING_OF relationships.

4

Web Application

Next.js queries Neo4j to build interactive family tree visualizations, searchable person directories, and detailed person pages. The graph database makes it efficient to traverse family relationships across generations.

✨Key Features

🌳 Interactive Family Tree

D3.js-powered visualization with zoom, pan, and click-to-expand functionality for exploring family connections.

🔍 People Search

Debounced search across all records with filtering by name, birthplace, and other criteria.

🌓 Dark Mode

Custom CSS theme system with localStorage persistence and FOUC prevention using blocking scripts.

🚦 Feature Flags

ConfigCat integration for dynamic feature control with route protection and instant rollback capability.

📱 Responsive Design

Mobile-first design with Tailwind CSS breakpoints for optimal viewing on all devices.

⚡ Performance

Server-side rendering, efficient Neo4j queries, and Next.js optimizations for fast page loads.

🏗️Architecture Highlights

  • →
    TypeScript Path Mappings: Clean imports using @components, @lib, @models for better code organization
  • →
    Server & Client Components: Strategic use of Next.js 13+ patterns for optimal performance and interactivity
  • →
    Route Protection: Feature flag-based access control preventing direct URL access to disabled features
  • →
    Graph Database: Neo4j's Cypher query language enables efficient traversal of complex family relationships
  • →
    Barrel Exports: All modules use index.ts files for clean, maintainable imports

Open source • Built with ❤️ for the Culpepper family