# Portal Data Informatika (PODIF) Sistem Informasi Data Mahasiswa Jurusan Informatika dengan autentikasi admin dan dosen. ## Struktur Aplikasi ### Landing Page (Root) - **URL**: `/` - **Fitur**: Halaman landing dengan modal login/register - **Layout**: Tanpa sidebar/navbar (clean auth interface) - **Komponen**: - Modal Login (Admin & Dosen) - Modal Register (Dosen/Kajur) ### Dashboard - **URL**: `/dashboard` - **Fitur**: Dashboard utama dengan sidebar dan navbar - **Layout**: Menggunakan ClientLayout dengan sidebar/navbar - **Komponen**: - Statistik mahasiswa - Grafik dan chart - Menu navigasi ### Halaman Mahasiswa - **URL**: `/dashboard/mahasiswa/*` - **Fitur**: Halaman data mahasiswa - **Layout**: Menggunakan ClientLayout dengan sidebar/navbar ## Autentikasi ### Role User 1. **Admin** - Login dengan username dan password - Akses penuh ke semua fitur 2. **Dosen** - Login dengan NIP dan password - Akses terbatas sesuai role 3. **Ketua Jurusan (Kajur)** - Login dengan NIP dan password - Akses khusus untuk kajur ### API Endpoints - `POST /api/auth/login` - Login admin/dosen - `POST /api/auth/register` - Register dosen/kajur - `POST /api/auth/logout` - Logout - `GET /api/auth/check` - Cek status autentikasi ## Setup ### 1. Install Dependencies ```bash npm install ``` ### 2. Setup Environment Variables Buat file `.env.local`: ```env NEXT_PUBLIC_SUPABASE_URL=your_supabase_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key JWT_SECRET=your_jwt_secret ``` ### 3. Setup Database Jalankan script setup database: ```bash node setup_database.js ``` ### 4. Run Development Server ```bash npm run dev ``` ## Database Schema ### Tabel user_app ```sql CREATE TABLE user_app ( id_user SERIAL PRIMARY KEY, username VARCHAR(50), -- hanya digunakan oleh admin nip VARCHAR(20), -- hanya digunakan oleh dosen & kajur password TEXT NOT NULL, role_user role_enum NOT NULL, -- ENUM: 'admin', 'dosen', 'kajur' created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` ## Middleware Middleware mengatur: - Redirect user yang sudah login dari `/` ke `/dashboard` - Protect route `/dashboard/*` (harus login) - Clear invalid token dan redirect ke home ## Struktur File ``` ```