Asisten AI berbasis chat untuk Universitas Muhammadiyah Jember yang dibangun dengan Next.js, Supabase, dan n8n.
- 💬 Percakapan AI yang natural dengan RAG (Retrieval-Augmented Generation)
- 📝 Dukungan markdown lengkap untuk respons
- 💾 Riwayat percakapan tersimpan di database
- 🎵 Musik latar dengan lirik
- 🌙 Mode gelap dan terang
- 📱 Responsive design untuk semua device
- Framework: Next.js 16
- Database: Supabase (PostgreSQL)
- AI Backend: n8n Webhook dengan RAG
- Styling: Tailwind CSS 4
- UI Components: Radix UI + shadcn/ui
- Deployment: Vercel
- Node.js 18+
- npm atau pnpm
- Akun Supabase
- n8n Workflow dengan RAG
-
Clone repository
git clone <repository-url> cd smartchat-ai
-
Install dependencies
npm install # atau pnpm install -
Setup environment variables
Salin
.env.exampleke.env.localdan isi dengan kredensial Anda:cp .env.example .env.local
Isi file
.env.local:NEXT_PUBLIC_SUPABASE_URL=your_supabase_url SUPABASE_SERVICE_ROLE_KEY=your_service_role_key N8N_WEBHOOK_URL=your_n8n_webhook_url
-
Jalankan development server
npm run dev
-
Buka browser
Akses http://localhost:3000
-
Push ke GitHub
git add . git commit -m "Initial commit" git push origin main
-
Connect ke Vercel
- Login ke vercel.com
- Klik "Add New Project"
- Import repository dari GitHub
-
Set Environment Variables
Di Vercel Dashboard → Settings → Environment Variables:
NEXT_PUBLIC_SUPABASE_URLSUPABASE_SERVICE_ROLE_KEYN8N_WEBHOOK_URL
-
Deploy
Vercel akan otomatis build dan deploy
Untuk membuat aplikasi Android:
-
Tambah static export di
next.config.mjsconst nextConfig = { output: "export", // ... config lainnya };
-
Install Capacitor
npm install @capacitor/core @capacitor/cli @capacitor/android npx cap init "Smartchat AI" "com.umj.smartchat" --web-dir=out npx cap add android
-
Build dan Sync
npm run build npx cap sync android npx cap open android
-
Build APK di Android Studio
├── app/
│ ├── api/
│ │ ├── chat/ # Chat dengan AI
│ │ ├── chats/ # CRUD chat histories
│ │ ├── messages/ # Get messages
│ │ ├── music/ # Music data
│ │ └── sessions/ # Session management
│ ├── globals.css # Global styles & theme
│ ├── layout.tsx # Root layout
│ └── page.tsx # Home page
├── components/
│ ├── chat/ # Chat components
│ ├── layout/ # Layout components
│ ├── music/ # Music player
│ ├── providers/ # Context providers
│ └── ui/ # UI components (shadcn)
├── lib/
│ ├── session-helper.ts # Session management
│ ├── supabase.ts # Supabase client
│ └── utils.ts # Utility functions
├── public/
│ └── UMJ.webp # Logo
└── types/
└── index.ts # TypeScript types
Theme dapat dikustomisasi di app/globals.css. Project menggunakan:
- Light mode: Courier New font, cyan/teal color scheme
- Dark mode: Source Code Pro font, cyan/teal color scheme
npm run dev # Development server
npm run build # Production build
npm run start # Start production server
npm run lint # Run ESLint
npm run analyze # Analyze bundle size- Semua kredensial disimpan di environment variables
- Service role key tidak pernah di-expose ke client
- CORS headers dikonfigurasi untuk API routes
- Input validation di semua API endpoints
MIT License
Dikembangkan untuk Universitas Muhammadiyah Jember