2.3 KiB
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()notdb.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-...