Sistem Informasi Manajemen terintegrasi, dibangun menggunakan Next.js 14+ dengan Supabase sebagai backend.
- Teknologi & File Extensions
- Struktur Folder
- 5 Modul Bisnis
- Panduan Kontribusi
- Standar Desain (TBD)
- Alur Kerja Git
| Teknologi | Kegunaan |
|---|---|
| Next.js 16+ | Full-stack Framework (App Router) |
| TypeScript | JavaScript dengan tipe data |
| Tailwind CSS 4 | Framework CSS untuk styling |
| Supabase | Backend-as-a-Service (Auth, Database, Storage) |
| React 19 | Library untuk membuat UI komponen |
| TanStack Query | Data fetching & caching |
| Axios | HTTP client |
| Extension | Kegunaan | Contoh |
|---|---|---|
.tsx |
React Component dengan TypeScript | page.tsx, Button.tsx |
.ts |
TypeScript logic file | service.ts, types.ts |
.css |
Styling | globals.css |
project-4b/
├── app/ # 👉 Tempat bikin Halaman (Routing Next.js)
│ ├── admin/ # Halaman khusus Admin
│ ├── dashboard/ # Halaman Utama setelah login
│ ├── login/ # Halaman Login
│ ├── inventory/ # (MODUL) Halaman Gudang & Stok
│ ├── finance/ # (MODUL) Halaman Keuangan
│ ├── purchasing/ # (MODUL) Halaman Pembelian
│ ├── production/ # (MODUL) Halaman Produksi
│ └── snm/ # (MODUL) Halaman Sales & Marketing
│
├── components/ # 👉 Tempat bikin Komponen (Tombol, Tabel, Card, dll)
│ ├── ui/ # Komponen umum (bisa dipakai di mana aja, misal Button, Input)
│ ├── layout/ # Komponen kerangka (Sidebar, Header)
│ ├── shared/ # Komponen yang dipakai barengan lintas modul
│ ├── admin/ # Komponen khusus halaman admin
│ └── modules/ # Komponen khusus untuk masing-masing modul bisnis
│
├── lib/ # 👉 Kode bantuan teknis (Konfigurasi & Utility)
│ ├── actions/ # Tempat bikin Server Actions (fungsi khusus untuk edit/kirim data)
│ ├── api/ # Kumpulan fungsi fetch API eksternal
│ ├── auth/ # Fungsi untuk validasi akses & hak pengguna (RBAC/Roles)
│ ├── database/ # Kumpulan fungsi query database (bantu mempermudah panggil data)
│ └── supabase/ # Konfigurasi koneksi Supabase untuk Server & Client
│
├── hooks/ # 👉 Tempat nyimpen fungsi React (Custom Hooks)
├── types/ # 👉 Kumpulan definisi tipe data TypeScript biar aman dari error
├── public/ # 👉 Tempat naruh aset statis kayak gambar, ikon, atau logo
│
├── middleware.ts # Skrip otomatis (contoh: jaga gawang biar belum login nggak bisa masuk)
└── package.json # Daftar library/aplikasi yang terinstall di proyek ini
Sistem ini terdiri dari 5 modul bisnis utama. Setiap modul memiliki folder terpisah:
- Route:
/inventory/[nama-fitur]/ - Fungsi: Kelola stok barang, masuk/keluar, transfer antar gudang
- Route:
/finance/[nama-fitur]/ - Fungsi: Jurnal umum, neraca, laba rugi, arus kas
- Route:
/purchasing/[nama-fitur]/ - Fungsi: Purchase Order, penerimaan barang, supplier management
- Route:
/production/[nama-fitur]/ - Fungsi: Bill of Materials, production planning, job order
- Route:
/snm/[nama-fitur]/ - Fungsi: Sales Order, customer management, marketing campaigns
- Routing: Buat halaman dengan format
/[nama-modul]/[nama-fitur]/(Jangan pakai folderapps/) - Components:
- Cek
components/ui/dulu untuk komponen umum - Buat komponen spesifik modul di
components/modules/[nama-modul]/[nama-fitur]/
- Cek
- API Calls: Gunakan Supabase client di
lib/supabase/atau buat diapp/api/ - Data Fetching: Gunakan hooks di
hooks/atau TanStack Query
- Cek Dulu, Buat Nanti: Sebelum membuat komponen/service baru, cek apakah sudah ada yang similar
- Type Safety: Selalu gunakan TypeScript types
- Server Actions: Gunakan Server Actions untuk mutation, prefer keamanan
# Install dependencies
pnpm install
# Jalankan development server
pnpm dev
# Build untuk production
pnpm build
# Start production server
pnpm start
# Linting
pnpm lintCatatan: Standar desain masih dalam tahap pengembangan oleh tim desain.
Pendekatan Awal
- Borders: Gunakan
border-2 border-blackpada card, button, dan container - Shadows: Shadow tajam, contoh:
shadow-[4px_4px_0px_0px_rgba(0,0,0,1)] - Warna: Kontras tinggi dengan warna primary yang jelas
- Typography: Font yang tegas dan terbaca jelas
Ikuti langkah super sederhana ini agar kode tidak berantakan:
Pilih salah satu branch sesuai tugas/modul kamu, lalu ketik ini (contoh untuk tim inventory):
git checkout -b inventory(Pilihan branch: inventory, finance, purchasing, production, snm)
Penting: Perintah pakai
-bitu untuk bikin branch baru. Kalau branch-nya udah ada dan kamu cuma mau pindah/switch (misal mau pindah ke main), hapus-bnya:git checkout main
Kalau sudah selesai bikin fitur/halaman, simpan dengan urutan perintah ini:
git add .
git commit -m "pesan tentang apa yang kamu kerjakan"
git push origin inventory(Catatan: Ganti inventory dengan nama branch kamu di perintah push)
Biar kodemu selalu sinkron dengan update terbaru (lakukan secara berkala):
# Pastikan kamu sedang berada di branch kamu, lalu ketik ini:
git pull origin main(Perintah ini otomatis menarik kode terbaru dari main dan menggabungkannya ke branch kamu)
⚠️ PERINGATAN PENTING: Jangan langsung push ke main!
Karena branch main dilindungi, semua kode baru harus lewat Pull Request:
- Lakukan Langkah 2 di atas (
git push origin <nama-branch>). - Buka GitHub, lalu klik tombol Compare & pull request.
- Admin akan mereview kodemu dan menggabungkannya (merge) ke
main.