Commit Graph

10 Commits

Author SHA1 Message Date
arnaudne 41170d9155 feat: UX improvements, webhooks, invite management
- Photo lightbox: ArrowLeft/Right/Escape keyboard navigation
- Growth chart: persistent WHO percentile legend (not hover-only)
- Sleep stats: configurable window selector (18h/19h/20h/21h)
- Quick-add FAB: now visible on desktop (bottom-right corner)
- Invite code reset button in settings (non-admin, PARENT role only)
- Pending email invites: tracked per-token with 7-day expiry, revocable
  from settings UI; new /auth/invite/t/[token] accept page
- Webhooks: Prisma model, CRUD API, HMAC-SHA256 dispatcher wired into
  event.created / growth.created / doctor_note.created; settings UI
- Docker cron service: medication reminders every 15min, milk-expiry
  and daily-digest daily; secured with CRON_SECRET
- Photo uploads persist across redeploys via Docker named volume

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 23:14:28 +02:00
arnaudne 3f08313bc2 fix(photos): persist uploads via Docker named volume
Photos were lost on redeploy because they wrote to public/uploads
inside the container with no volume mount. Now stored in uploads_data
named volume via UPLOAD_DIR env var (already supported by upload route).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 22:59:31 +02:00
arnaudne 493f6ab7fc fix(compose): drop service_healthy, use service_started + sleep
pg_isready healthchecks broken server-wide (root_db, hoppscotch-db also
unhealthy). Remove healthcheck block, depend on service_started only.
migrate sleeps 5s to give postgres time to accept connections.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 18:38:05 +02:00
arnaudne 750c2c2f60 fix(compose): use CMD form for pg_isready healthcheck, add start_period
CMD-SHELL drops pg_isready from PATH on some Alpine setups. Switch to
explicit CMD array form with -h 127.0.0.1. start_period gives postgres
time to initialize before failures count against retries.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 18:02:15 +02:00
arnaudne 091af949ee fix(docker): pass AUTH_SECRET not NEXTAUTH_SECRET (NextAuth v5 env var name) 2026-06-13 12:28:11 +02:00
arnaudne 44bb103eb4 fix(docker): construct DATABASE_URL from POSTGRES_PASSWORD variable 2026-06-13 12:12:34 +02:00
arnaudne 3e5e046b59 fix(docker): use DATABASE_URL from env directly, don't construct from raw password 2026-06-13 11:41:24 +02:00
arnaudne f83a74cb53 fix(docker): migrate service uses builder target (has node_modules) 2026-06-13 11:38:08 +02:00
arnaudne be868b70c8 fix(docker): remove --skip-generate flag (not in Prisma 7), use local prisma bin 2026-06-13 11:35:13 +02:00
arnaudne cd16c354c0 Initial commit — Grow baby tracker
Next.js 16 App Router, Prisma + PostgreSQL, NextAuth v5 JWT.

Features: dashboard quick-log, timeline, growth charts (WHO percentiles),
stats, journal/notes, doctor notes, milestones, vaccinations, settings,
superadmin panel. Mobile-first with sidebar nav + bottom nav + quick-add FAB.
Dark mode, PWA push notifications, multi-family invite system.

Docker: multi-stage Dockerfile + docker-compose with postgres service.
2026-06-13 01:52:46 +02:00