tia/CLAUDE.md

2.3 KiB

CLAUDE.md

Tia - Baby Tracking App. Next.js 16, PostgreSQL, offline-first.

Build Rule

ALWAYS run npm run build before pushing. Fix errors locally first.

Project Status

  • Fast-log (feed/sleep/diaper + offline queue)
  • PWA manifest + service worker
  • Vaccinations (IAP schedule)
  • Growth tracking
  • Memories gallery (placeholder)
  • AI chat (LiteLLM)
  • Dark mode toggle
  • Menu navigation
  • Cloudflare R2 upload (needs credentials)
  • Telegram alerts

Key Files

Path Purpose
src/app/page.tsx Home with quick log, dark mode toggle
src/app/menu/page.tsx Navigation drawer
src/app/medical/page.tsx IAP vaccination schedule
src/app/ai/page.tsx LiteLLM chat
src/app/api/logs/route.ts Feed/sleep/diaper logging
src/app/api/ai/route.ts LLM API proxy
src/db/schema/logs.ts Log schemas
public/sw.js Service worker for offline

Routes

  • / - Home
  • /menu - Navigation
  • /settings - Settings + dark mode
  • /medical - Vaccinations
  • /growth - Growth records
  • /memories - Photo gallery
  • /ai - AI chat
  • /api/logs - Log entries (type=feed|sleep|diaper)
  • /api/ai - AI chat

Conventions

API Pattern

// GET with query params, POST with JSON body
export async function GET(request: Request) {
  const { searchParams } = new URL(request.url);
  const id = searchParams.get("id");
  // use sql.unsafe() for raw queries
}
export async function POST(request: Request) {
  const body = await request.json();
  // use sql.unsafe() with parameterized values
}

UI Pattern

"use client";
import { useState, useEffect } from "react";
// dark mode: document.documentElement.classList.toggle("dark")
// links: use <Link href="..."> not router.push()

Database

  • Use sql.unsafe() not db.execute() - postgres-js method
  • Dates: new Date().toISOString() string format
  • Enums: create manually, no IF NOT EXISTS support

Local Dev

cd tia
npm run dev

Deployment

Auto-deploys via webhook on Git push. Database tables created via /api/setup.

Environment

DATABASE_URL=postgresql://user:pass@host:5432/db
OPENAI_API_BASE_URL=http://litellm-gateway:4000/v1
LITELLM_MASTER_KEY=sk-tiger-gateway-...