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