119 lines
2.3 KiB
Markdown
119 lines
2.3 KiB
Markdown
# 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
|
|
|
|
```
|
|
|
|
```
|