- README was untouched create-next-app boilerplate - CLAUDE.md still claimed "Phase 0 not started"; all phases 0-6 complete - .env.local.example was missing SUPABASE_SERVICE_ROLE_KEY, Resend, and Meta WhatsApp variables added in later phases Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CPf5Rc8QPx6V8KLEEgfKEQ
58 lines
2.6 KiB
Markdown
58 lines
2.6 KiB
Markdown
# IMS — Claude Code Instructions
|
||
|
||
## Project
|
||
HSE Incident Management System for Setia Corporation (3PL warehouse).
|
||
Replaces WhatsApp/Excel safety reporting. Client: Ms. Agnes, Mr. Terence, Mr. Yap, Mr. Jensen.
|
||
|
||
## Stack
|
||
- **Frontend + API routes:** Next.js (App Router)
|
||
- **DB + Auth + Storage:** Supabase (Postgres + RLS + pgvector)
|
||
- **Hosting:** Vercel (frontend) + Supabase cloud
|
||
- **AI:** Claude API — server-side only, never client-side
|
||
- **Email:** Resend
|
||
- **WhatsApp:** Meta WhatsApp Business Cloud API
|
||
- **PDF:** pdf-lib (JKKP form fill)
|
||
- **QR:** qrcode npm package
|
||
|
||
## Current Phase
|
||
**All phases (0–6) complete as of 2026-07-12.** Remaining work is ops: production env vars (`SUPABASE_SERVICE_ROLE_KEY`, Meta WhatsApp, Resend, `CRON_SECRET`), VPS cron registration (`docs/vps-cron.md`), optional Supabase Pro for image thumbnails.
|
||
See `[[phases]]` memory for full phase breakdown and deliverables.
|
||
|
||
## Dev Conventions
|
||
- Never commit `.env` or API keys. All secrets in env vars only.
|
||
- RLS enforced at DB level for every table — never rely on UI-only hiding.
|
||
- Claude API calls: server-side API routes only (`/app/api/...`).
|
||
- Incident reference format: `SITE-YYYYMM-####`
|
||
- Every DB mutation writes to `audit_log` (table, record_id, action, changed_by, changed_at, old/new value).
|
||
- Evidence files: never hard-delete; retain minimum 5 years (DOSH JKKP 8 requirement).
|
||
- AI suggestions logged to `audit_log` — capture what Claude suggested + what human chose.
|
||
|
||
## File Structure (target)
|
||
```
|
||
IMS/
|
||
├── docs/ # PRD, tech spec, roadmap, specs — source of truth
|
||
├── app/ # Next.js App Router pages + API routes
|
||
├── components/ # Shared UI components
|
||
├── lib/
|
||
│ ├── supabase/ # Supabase client + server helpers
|
||
│ ├── claude/ # Claude API wrappers (server-side)
|
||
│ └── notifications/ # Resend + WhatsApp senders
|
||
├── supabase/
|
||
│ └── migrations/ # SQL migration files
|
||
└── public/
|
||
```
|
||
|
||
## Deep Context (memory files — load instead of re-reading raw docs)
|
||
- `[[project_overview]]` — objectives, roles, success metrics
|
||
- `[[architecture]]` — module diagram, stack rationale, deployment
|
||
- `[[db_schema]]` — all 10 tables, fields, RLS, pgvector
|
||
- `[[phases]]` — 4 phases + deliverables, current phase
|
||
- `[[compliance]]` — NADOPOD 2004, JKKP 6/7/8 rules
|
||
|
||
## graphify
|
||
When graphify-out/graph.json exists:
|
||
- Run `graphify query "<question>"` before browsing source.
|
||
- Use `graphify path "<A>" "<B>"` for relationships.
|
||
- Use `graphify explain "<concept>"` for focused concepts.
|
||
- After code changes: `graphify update .`
|