Highlights
Project snapshot
- Spans 111 database tables, ~337 API endpoints, and ~56 client pages in one TypeScript monorepo.
- Provider-agnostic LLM client over OpenAI + Ragie RAG, with live Agora video and ElevenLabs voice onboarding.
- Defense-in-depth security: CSRF, four-tier rate limiting, bcrypt, PG-backed sessions, and a dedicated pentest/ZAP test suite.
Overview
A relationship-aware support system for fatherhood
PreparingFatherhood (Fatherform) is a TypeScript monorepo — React + Vite client, Express API, shared Drizzle schema — that helps fathers build and maintain relationships with their partner, children, and support network.
It combines a dynamic relationship-health scoring engine, AI-generated guidance and reminders, mood and journal tracking, and curated resources behind a single dashboard, exposing roughly 337 API endpoints over a 111-table schema.
Problem
Parenting support is broad, generic, and emotionally shallow
- Fathers lack structured, personalized support for the emotional and relational side of parenting, not just logistics.
- Relationship and emotional health is hard to quantify or track, so drift goes unnoticed until it is a problem.
- Generic content is not tailored to a father's specific family stage, mood, or history.
- Journaling, mood, and milestone data sit in silos with no engine turning them into action.
Solution
An AI-guided ecosystem grounded in the user's own history
- Unified relationship-health engine plus a separate "relationship circles" subsystem that models the father's support network.
- Retrieval-augmented "Terroir" assistant grounds guidance in journal entries and an expert knowledge base via Ragie.
- Adaptive timeline, reminders, and milestone tracking connect insight to accountability.
Core Features
Systems built around reflection, guidance, and support
Relationship Health System
- Dynamic relationship-health scoring
- Relationship-circles network modeling with WebSocket reminders
- Visual analytics over interactions and history
AI Assistant — Terroir
- GPT-4o conversational advisor
- RAG semantic search via Ragie over journals and expert content
- Habit, timeline, and practice generation
Journaling, Mood & Patterns
- Rich-text journaling via TipTap editor
- AI mood analysis and mood-pattern detection
- Mood check-ins and entries over time
Video, Voice & Content
- Live interview rooms with Agora RTC video and token auth
- Video-note transcription via OpenAI Whisper and voice onboarding via ElevenLabs
- RSS ingestion + AI summarization and SendGrid newsletters
Architecture
Web client, layered AI client, and PostgreSQL
React 18 + Vite client (~56 pages)
→ Express API (~337 endpoints)
→ layered AI client (pluggable provider adapter)
→ OpenAI (GPT-4o / Whisper) + Ragie + ElevenLabs + Agora
→ PostgreSQL (Drizzle ORM, 111 tables)
- A shared shared/schema.ts keeps client and server types in sync.
- An LLMProvider interface is selected from an env var, with an AI call-tracker and per-call performance instrumentation.
Engineering Highlights
Security, performance, and AI efficiency as core requirements
Security
- CSRF protection with route exceptions
- Four tiered rate limiters (auth, API, AI, password-reset)
- bcrypt hashing, CORS whitelist, and a pentest/ZAP test suite
Sessions & Reliability
- PostgreSQL-backed sessions (connect-pg-simple) with memorystore fallback
- Custom DB performance and connection-pool managers
- Sentry (node + profiling + React) and Pino structured logging
AI Architecture
- Pluggable multi-provider LLM abstraction (OpenAI live; Anthropic/Gemini scaffolded)
- Ragie RAG semantic search over user data
- Startup-automation/scheduler layer for timelines and reminders
Impact
A long-term growth system, not a content library
- Improves family relationships through contextual guidance grounded in user history rather than generic advice.
- Turns journaling, recommendations, and reminders into a durable growth loop.
- Honest growth seams: the live AI/voice/video stack is OpenAI + Ragie + Agora + ElevenLabs; Anthropic Claude and Mux are not integrated (their SDKs are installed but unused).
