# SiRaport SMP – Aplikasi Raport Sekolah Berbasis PHP & Tailwind CSS

## Persyaratan Sistem
- PHP 7.4 atau lebih baru (disarankan PHP 8.1+)
- MySQL 5.7+ atau MariaDB 10.4+
- Web Server: Apache atau Nginx
- Ekstensi PHP: PDO, PDO_MySQL, mbstring, session

## Instalasi

### 1. Clone / Salin File
Salin seluruh folder `raport-smp` ke direktori web server Anda:
```
/var/www/html/raport-smp       (Linux)
C:/xampp/htdocs/raport-smp     (Windows XAMPP)
```

### 2. Import Database
```sql
-- Buka phpMyAdmin atau jalankan via terminal:
mysql -u root -p < database/schema.sql
```

### 3. Konfigurasi
Edit file `config/database.php`:
```php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');       // sesuaikan
define('DB_PASS', '');           // sesuaikan
define('DB_NAME', 'raport_smp');

// Sesuaikan info sekolah:
define('SEKOLAH_NAMA', 'SMP Negeri 1 Contoh');
define('APP_URL', 'http://localhost/raport-smp');
```

### 4. Akses Aplikasi
Buka browser: `http://localhost/raport-smp`

## Akun Default
| Role  | Username | Password  |
|-------|----------|-----------|
| Admin | admin    | password  |

## Alur Penggunaan

### Admin:
1. **Tahun Ajaran** → Tambah & aktifkan tahun ajaran
2. **Master Kelas** → Buat kelas VII A, VII B, dst.
3. **Master Guru** → Tambah data guru (akun otomatis dibuat)
4. **Master Siswa** → Tambah data siswa (akun otomatis dibuat)
5. **Penempatan Kelas** → Assign siswa ke kelas
6. **Mata Pelajaran** → Verifikasi/tambah mapel
7. **Penugasan Guru** → Assign guru mengajar di kelas tertentu

### Guru:
1. Login → Dashboard menampilkan kelas yang diampu
2. **Input Nilai** → Isi nilai harian, UTS, UAS per siswa
3. **Nilai Sikap** → Isi sikap spiritual & sosial
4. **Absensi** → Input rekap kehadiran semester
5. **Rekap Nilai** → Lihat ranking & statistik

### Siswa:
1. Login → Dashboard menampilkan ringkasan nilai
2. **Nilai Saya** → Detail nilai per mapel beserta grafik progress
3. **Raport Saya** → Tampilkan & cetak raport lengkap (PDF)

## Rumus Nilai Akhir
```
Nilai Akhir = (Nilai Harian × 40%) + (UTS × 30%) + (UAS × 30%)
```

## Predikat
| Nilai | Predikat |
|-------|----------|
| ≥ 90  | A – Sangat Baik |
| 80–89 | B – Baik |
| 70–79 | C – Cukup |
| 60–69 | D – Kurang |
| < 60  | E – Sangat Kurang |

## Struktur File
```
raport-smp/
├── auth/           login, logout
├── admin/          semua halaman admin
├── guru/           halaman guru
├── siswa/          halaman siswa
├── config/         database, session
├── includes/       fungsi helper
├── views/layouts/  header, footer template
├── public/         css, js, uploads
└── database/       schema.sql
```

## Fitur Lengkap
- ✅ Multi-role: Admin, Guru, Siswa
- ✅ Master User, Kelas, Siswa, Guru, Mata Pelajaran
- ✅ Tahun Ajaran & Semester fleksibel
- ✅ Penugasan Guru ke Kelas & Mapel
- ✅ Penempatan Siswa ke Kelas
- ✅ Input Nilai (Harian, UTS, UAS) dengan auto-hitung
- ✅ Nilai Sikap (Spiritual & Sosial)
- ✅ Rekap Absensi
- ✅ Raport lengkap format Kurikulum Merdeka
- ✅ Cetak Raport (Print/PDF)
- ✅ Rekap & Ranking nilai per kelas
- ✅ Profil pengguna
- ✅ Flash messages
- ✅ Pagination
- ✅ Responsive design (Tailwind CSS)
