Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Sistem Pengurusan & Serahan PPE - Next.js + Supabase
翻訳待ち
Loading the full README. The saved excerpt is shown below.
Aplikasi web untuk menguruskan permohonan dan serahan Peralatan Perlindungan Diri (PPE). Dibina dengan Next.js 16 (App Router) + TypeScript + Tailwind CSS + Supabase. Mula di sini: HANDOVER.md — dokumen serahan lengkap (seni bina, skema, peraturan bisnes, isu diketahui, cara guna semula). Jika README ini bercanggah dengan HANDOVER.md, HANDOVER.md yang betul.Read the full README ↗
Aplikasi web untuk menguruskan permohonan dan serahan Peralatan Perlindungan Diri (PPE). Dibina dengan Next.js 16 (App Router) + TypeScript + Tailwind CSS + Supabase.
Mula di sini: HANDOVER.md — dokumen serahan lengkap (seni bina, skema, peraturan bisnes, isu diketahui, cara guna semula). Jika README ini bercanggah dengan HANDOVER.md, HANDOVER.md yang betul.
/ — cari nama, pilih PPE layak
mengikut jawatan, hantar permohonan. Staf baru daftar di /daftar./hr/dashboard — semak & lulus/tolak
permohonan, urus stok (ikut saiz), urus pekerja, lulus pendaftaran staf baru, lihat rekod,
muat turun PDF serahan, import/eksport Excel.supabase/migrations/0001_init.sql,
0002_stock_by_size.sql, 0003_employee_registrations.sql. (Jangan jalankan semula
0001 selepas 0002 — lihat HANDOVER.md §5.)Salin .env.local.example kepada .env.local dan isikan:
NEXT_PUBLIC_SUPABASE_URL=https://xxxxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=xxxxx
Kod tidak menggunakan service_role key; jangan letaknya dalam repo atau kod client.
npm install
npm run dev
Buka http://localhost:3000 untuk borang pekerja, dan http://localhost:3000/hr/login untuk log masuk HR.
Buka Supabase Dashboard → Authentication → Add user → masukkan emel &
kata laluan staf HR pertama. Log masuk di /hr/login menggunakan kelayakan itu.
.env.local di Vercel
Project Settings → Environment Variables.main akan auto-deploy.app/
├── page.tsx # Borang pekerja (awam)
├── hr/
│ ├── login/page.tsx # Log masuk HR
│ └── dashboard/
│ ├── layout.tsx # Shell + proteksi auth
│ ├── inbox/page.tsx # Papan pemuka + permohonan menunggu
│ ├── stock/page.tsx # Urus stok PPE
│ ├── employees/page.tsx# Pangkalan data pekerja
│ ├── records/page.tsx # Rekod & import data lama
│ └── settings/page.tsx # Tetapan syarikat
components/
├── worker/RequestForm.tsx
├── hr/{DashboardShell,RequestModal,ImportModal,KpiTile}.tsx
└── ui/{Button,Card,Badge,Modal}.tsx
lib/
├── supabase/{client,server,middleware}.ts
├── ppe-config.ts # Peraturan kelayakan PPE & saiz/kuantiti (§6.1–6.2)
├── pdf/{handover,downloadForRequest}.ts
└── excel/{employees,stock,records,shared}.ts
supabase/migrations/000{1,2,3}_*.sql
proxy.ts # Proteksi laluan /hr/dashboard (Next.js 16 "proxy")
SELECT daripada view employees_public (tanpa
No. IC) dan settings, serta INSERT pada requests dan employee_registrations.
Lihat HANDOVER.md §4 untuk model keselamatan penuh.approve_request (transaksi
atomik: tolak stok + tandakan status issued dalam satu transaksi Postgres).jsPDF) mengikut susunan tepat §6.5 —
tidak memaparkan lajur "Keluar"/"Baki Stok".