- Add deploy.sh: builds frontend locally, rsyncs build/ to server,
restarts services via passwordless sudo
- DEPLOYMENT.md: remove pnpm build from server setup (frontend is never
built on the LXC — esbuild hangs on low-resource containers), add rsync
to apt packages, document deploy.sh setup (SSH config, sudoers), replace
manual update steps with ./deploy.sh invocation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Switch to Node.js 24 LTS via nvm
- Install uv to /usr/local/bin via UV_INSTALL_DIR for system-wide access
- Install pnpm as standalone binary from GitHub releases (not corepack
shim which breaks when copied out of its nvm directory)
- Add libpq5 to apt deps (psycopg3 requires libpq at runtime)
- Add GEMINI_API_KEY and GEMINI_MODEL to backend .env template
- Add ORIGIN to frontend .env.production (SvelteKit CSRF protection)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add alembic 1.14 to dependencies (uv sync → 1.18.4 installed)
- Configure alembic/env.py: loads DATABASE_URL from env, imports all
SQLModel models so metadata is fully populated for autogenerate
- Generate initial migration (c2d626a2b36c) covering all 9 tables:
products, product_inventory, medication_entries, medication_usages,
lab_results, routines, routine_steps, grooming_schedule,
skin_condition_snapshots — with all indexes and constraints
- Add ExecStartPre to innercontext.service: runs alembic upgrade head
before uvicorn starts (idempotent, safe on every restart)
- Update DEPLOYMENT.md: add migration step to backend setup and update
flow; document alembic stamp head for existing installations
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>