Nadella adalah aplikasi CRM (Customer Relationship Management) berbasis web yang dilengkapi dengan chatbot analitik AI. Aplikasi ini memungkinkan pengguna untuk mengelola data members, produk, dan pesanan, serta melakukan analisis data menggunakan bahasa natural melalui AI assistant.
- Dashboard Analytics: Tampilan overview statistik bisnis dengan data members, produk, dan pesanan.
- Manajemen Data: CRUD lengkap untuk members, produk, pesanan, dan item pesanan.
- AI Analytics Chatbot: Query data menggunakan bahasa natural yang dikonversi menjadi SQL secara otomatis.
- Autentikasi & Autorisasi: Sistem login/logout dengan role-based access menggunakan Supabase Auth.
- Export PDF: Generate laporan dalam format PDF untuk analisis bisnis.
- SQL Query Generator: AI yang mengkonversi pertanyaan natural language menjadi query SQL yang aman.
- Multi-language Support: Interface mendukung bahasa Indonesia dengan AI yang dapat memahami pertanyaan dalam bahasa Indonesia.
- Next.js 15: Framework React untuk pengembangan aplikasi web.
- React 19: Library JavaScript untuk membangun antarmuka pengguna.
- @supabase/supabase-js: Client JavaScript untuk database dan autentikasi Supabase.
- Mistral AI: API untuk natural language processing dan SQL generation.
- PDF-lib: Library untuk generate dokumen PDF laporan.
- PostgreSQL: Database untuk menyimpan data CRM (via Supabase).
- Feather Icons: Icon set untuk UI components.
- SweetAlert2: Library untuk notifikasi dan dialog interaktif.
-
Klon repositori ini
git clone <url-repositori> cd medherb-next
-
Instal dependensi
npm install
-
Konfigurasi Variabel Lingkungan Buat file
.env.localdi root direktori dan tambahkan variabel lingkungan berikut:# Supabase Configuration SUPABASE_URL="https://<your-supabase-url>.supabase.co" SUPABASE_KEY="your-supabase-anon-key" NEXT_PUBLIC_SUPABASE_URL="https://<your-supabase-url>.supabase.co" NEXT_PUBLIC_SUPABASE_ANON_KEY="your-supabase-anon-key" SUPABASE_SERVICE_ROLE_KEY="your-supabase-service-role-key" # Mistral AI Configuration MISTRAL_API_KEY="your-mistral-api-key" -
Setup Database Supabase Jalankan script SQL yang ada di file
schema_supabase.txtuntuk membuat tabel-tabel yang diperlukan:members: Data pelanggan/memberproducts: Data produkorders: Data pesananorder_items: Detail item dalam pesanan
Pastikan juga membuat fungsi
exec_sqldi Supabase untuk menjalankan query dinamis dari AI. -
Menjalankan Aplikasi (Mode Development)
npm run dev
Aplikasi akan berjalan di http://localhost:3000
-
Menjalankan Aplikasi (Mode Produksi)
- Bangun aplikasi:
npm run build
- Jalankan aplikasi:
npm start
- Bangun aplikasi:
medherb-next/
├── app/
│ ├── api/
│ │ ├── auth/
│ │ │ ├── login/route.js # Endpoint autentikasi login
│ │ │ ├── logout/route.js # Endpoint logout
│ │ │ └── refresh/route.js # Refresh token
│ │ ├── dashboard/route.js # API statistik dashboard
│ │ ├── members/route.js # CRUD operations untuk members
│ │ ├── products/route.js # CRUD operations untuk products
│ │ ├── orders/route.js # CRUD operations untuk orders
│ │ ├── order_items/route.js # CRUD operations untuk order items
│ │ ├── assistant/route.js # AI assistant chatbot
│ │ └── query/route.js # Natural language to SQL query
│ ├── globals.css # Gaya global untuk aplikasi
│ ├── layout.js # Layout utama aplikasi
│ └── page.js # Halaman utama (redirect ke login)
├── public/ # File-file statis dan halaman HTML
│ ├── index.html # Landing page Si-Mbah
│ ├── login.html # Halaman login
│ ├── dashboard.html # Dashboard utama Nadella
│ ├── members.html # Manajemen data members
│ ├── products.html # Manajemen data products
│ ├── orders.html # Manajemen data orders
│ ├── css/ # Styling files
│ └── js/ # JavaScript client-side
├── schema_supabase.txt # Schema database SQL
├── .env.local # Variabel lingkungan (tidak disimpan dalam repo)
├── package.json # Dependensi dan skrip proyek
├── next.config.mjs # Konfigurasi Next.js
└── README.md # Dokumentasi ini
- Pengguna mengajukan pertanyaan analisis dalam bahasa natural (Indonesia/Inggris).
- Mistral AI mengkonversi pertanyaan menjadi query SQL yang aman dan valid.
- Query divalidasi untuk memastikan hanya operasi SELECT yang diizinkan pada tabel yang diperbolehkan.
- Query dieksekusi pada database Supabase untuk mengambil data.
- Mistral AI memproses hasil dan memberikan ringkasan dalam bahasa Indonesia.
- Hasil dapat diekspor dalam format PDF untuk pelaporan.
- Validasi SQL untuk mencegah SQL injection dan operasi berbahaya
- Whitelist tabel yang diperbolehkan (members, products, orders, order_items)
- Autentikasi berbasis token dengan Supabase Auth
- Role-based access control
- Dashboard dengan statistik bisnis realtime
- Interface CRUD yang intuitif untuk semua entitas data
- Responsive design untuk desktop dan mobile
POST /api/auth/login: Login dengan email dan passwordPOST /api/auth/logout: Logout user sessionPOST /api/auth/refresh: Refresh authentication token
POST /api/query: Natural language query ke SQL dengan AI (fitur utama)POST /api/assistant: General purpose AI assistantGET /api/dashboard: Statistik dashboard (total members, products, orders)
GET/POST/PUT/DELETE /api/members: CRUD operations untuk data membersGET/POST/PUT/DELETE /api/products: CRUD operations untuk data productsGET/POST/PUT/DELETE /api/orders: CRUD operations untuk data ordersGET/POST/PUT/DELETE /api/order_items: CRUD operations untuk order items
Contoh pertanyaan yang dapat diajukan ke /api/query:
"Berapa total penjualan bulan ini?"
"Siapa member yang paling banyak berbelanja?"
"Produk apa yang paling laris?"
"Tampilkan 10 pesanan terakhir"
"Berapa rata-rata nilai pesanan per member?"
Endpoint akan mengembalikan:
- Jawaban dalam bahasa Indonesia
- SQL query yang dieksekusi
- Data hasil query
- Jumlah baris data
- Opsi export PDF untuk laporan
Aplikasi ini menggunakan Supabase sebagai backend dengan struktur database berikut:
- members: Data pelanggan (id, name, email, phone, created_at)
- products: Data produk (id, name, price, category, created_at)
- orders: Data pesanan (id, member_id, created_at)
- order_items: Detail item pesanan (id, order_id, product_id, quantity, subtotal)
- exec_sql: Fungsi untuk menjalankan query SQL dinamis dari AI assistant
- Autentikasi: Supabase Auth untuk login/logout dan session management
- RLS (Row Level Security): Untuk keamanan akses data
- Buat project baru di Supabase
- Jalankan script SQL dari file
schema_supabase.txt - Buat fungsi
exec_sqluntuk query dinamis - Konfigurasi authentication policies sesuai kebutuhan
- Dapatkan URL dan API keys untuk konfigurasi environment
Aplikasi ini dapat di-deploy ke:
npm run build
vercel --prodnpm run build
# Upload folder .next ke Netlifynpm run build
npm startPastikan environment variables sudah dikonfigurasi di platform deployment yang dipilih.