CRUD page for satuan barang following the pelanggan feature pattern:
page, actions, form sheet, delete dialog, and a data layer with LIKE
search and pagination. Delete rejects units still referenced by barang.
Pull PER_PAGE, parsePage, and halamanHref into lib/pagination, the search
box into components/cari-master, and escapeLike into lib/utils so other
master features can reuse them. Pelanggan switches to these helpers and
its list now calls getCurrentUser() in its render chain.
- docker-compose: mariadb:10.4 service on port 3307 (utf8mb4), seeded from a
mysqldump of the office server so development never writes to production
- drizzle-amigo.config.ts + `pnpm db:amigo:pull` (introspection only)
- scripts/fix-amigo-schema.ts repairs drizzle-kit's MariaDB output: quoted
defaults, dropped primary keys, missing column-builder imports
- db/amigo: pulled schema and `amigoDb` connection
- README: step-by-step local MariaDB setup (dump, import, cleo_next grants)
- CLAUDE.md: MyISAM, concurrent PHP writes, zero dates, other apps' tables
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- docker-compose.yml runs Postgres 17 and reuses the existing cleo-pgdata volume.
- scripts/seed.ts creates the first admin through Better Auth's internal adapter,
so it works while public sign-up is disabled; skips if the admin exists.
- .env.example documents every variable; README has the new-laptop setup steps.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>