Files
ims/CLAUDE.md
T
adminandClaude Fable 5 e2559d1f59 docs: real README, current phase status in CLAUDE.md, complete env example
- 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
2026-07-12 10:46:44 +08:00

58 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 (06) 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 .`