Files
portaldata/README.md
Randa Firman Putra 37d083ec31 Change Audiens
2025-06-28 06:15:50 +07:00

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
```
```