JIT
Sistem informasi tugas akhir prodi matematika
Build a Laravel 11 (PHP 8.2) web application named: “Sistem Informasi Tugas Akhir – Prodi Matematika, Fakultas Sains, Institut Teknologi Sumatera”. Requirements: - Use Laravel only (Blade + Tailwind). No Vue or React. - Database: MySQL/MariaDB. - Auth: Laravel Breeze (Blade) with email verification and password reset. - Role & permission: spatie/laravel-permission. - PDF generation: barryvdh/laravel-dompdf. - PDF preview: embedded viewer (<iframe>) using local PDF.js (no CDN). - Storage: storage/app/public with symbolic link. - All documents must be PDF, previewable and downloadable in the system. - Locale: Asia/Jakarta, id_ID. All UI text must be in Bahasa Indonesia. User Roles: 1. Mahasiswa - Register/login. - Fill title & abstract. - Choose supervisor & examiner. - Select seminar schedule (date & room). - Upload PDF drafts (proposal, thesis, revisions). - Print/preview seminar invitation (PDF). - Fill logbook bimbingan. - Print Berita Acara (proposal, TA, sidang). - Track status: Terdaftar → Proposal → TA → Sidang (Lulus). 2. Dosen - View supervisee list. - See seminar schedule (as supervisor or examiner). - Receive seminar invitations and Berita Acara (PDF). - Supervisors can print/preview logbook PDF. 3. Tim Tugas Akhir - Validate seminar submissions. - Validate logbooks. - Monitor grading submissions. - Validate Berita Acara (proposal, TA, sidang). - Replace or assign supervisors. 4. Koordinator Prodi - All Tim TA features. - Dashboard monitoring: * Active, scheduled, graduated students. * Average thesis duration. * Thesis title recap. * Lecturer workload recap (supervisor/examiner). - Export and print PDF reports. 5. Super Admin - Full access. - Manage all users, lecturers, students, titles, schedules, rooms, etc. --- Database Tables: - users (id, name, email, password) - students (user_id, nim, status_ta, judul, pembimbing_id, penguji_id) - lecturers (user_id, nidn, keahlian) - supervisors (student_id, lecturer_id, type) - examiners (student_id, lecturer_id, type) - rooms (id, nama, lokasi, kapasitas) - seminar_schedules (student_id, type, date, room_id, status) - documents (student_id, category, version, filename, path, status) - logbooks (student_id, lecturer_id, tanggal, ringkasan, status) - grades (student_id, examiner_id, komponen, skor) - audit_trails (actor_id, action, entity_type, entity_id, before, after) --- Features: - Role-based dashboard. - Seminar scheduling with room availability check. - PDF-first workflow: * Generate and store PDFs for invitations, Berita Acara, logbook, and reports. * Each version saved and tracked in documents table. * Preview with iframe using signed route. * Secure download link via signed route. - Validation workflows: * Tim TA validates or rejects with notes. * Logbook validated by supervisors and Tim TA. - Notifications (email & in-app) for approvals, schedule changes, and validations. - Monitoring & analytics for coordinator (charts, average duration, workload, export PDF). - Audit trail for all validations and changes. - Dark mode UI (Tailwind). - All labels and text in Bahasa Indonesia. --- Routing & Controllers: - StudentController, LecturerController, ScheduleController, DocumentController, LogbookController, ValidationController, ReportController, AdminController. - Named routes (students.dashboard, schedules.index, documents.preview, etc.) - Use FormRequest for validation. - Policies for each model. - Seeders for demo data (roles, users, dosen, mahasiswa, schedules, PDFs). --- PDF Templates (Blade views): - resources/views/pdf/undangan_seminar.blade.php - resources/views/pdf/berita_acara_proposal.blade.php - resources/views/pdf/berita_acara_ta.blade.php - resources/views/pdf/berita_acara_sidang.blade.php - resources/views/pdf/logbook_bimbingan.blade.php - resources/views/pdf/laporan_koordinator.blade.php Each PDF includes: - ITERA logo, NIM, Nama, Prodi, Tanggal, Ruangan, Pembimbing, Penguji. - Signature section. - QR code (simple-qrcode) for signed preview link. --- Security: - Signed routes for preview/download. - Private storage path: storage/app/private/ta/{student_id}/{category}/{version}.pdf - No direct file exposure. - MIME validation (PDF only). - Rate limiting for uploads and regenerations. - Prevent direct object reference (use UUID or ULID). --- Testing (PestPHP): - Only PDF uploads allowed (422 for others). - Generated PDFs saved and versioned correctly. - Validation workflow functional. - Room/time conflict prevented. - Coordinator PDF reports accurate. - Role permissions enforced. --- Deliverables: - Full Laravel project with migrations, models, controllers, policies, seeders. - PDF service classes (PdfService, DocumentStorageService, AuditService). - Blade UI in Bahasa Indonesia. - README with setup steps and demo accounts. - All documents are PDF, and can be previewed and downloaded in the system.

I'll help you build this comprehensive Laravel thesis management system. Let me start by reporting the capabilities and then begin the setup.

Read file

Now let me start setting up the database models and migrations. First, I'll create the main migration files:

Write file
Write file
Write file
Write file
Write file
Write file
Updated files
v1
Write file
Updated files
v2
why u stop?

I'll continue building the thesis management system. Let me create the remaining migrations:

Write file
Updated files
v3
Write file
Updated files
v4