Skip to content

EsaGo adalah asisten akademik all-in-one resmi untuk mahasiswa Universitas Esa Unggul, dirancang untuk menyederhanakan kehidupan kampus Anda dari A sampai Z. Dari jadwal kuliah hingga administrasi UKT, semuanya ada di sini—ditambah kecerdasan buatan (AI) yang siap mendampingi studi Anda!

Notifications You must be signed in to change notification settings

RfadnjdExt/EsaGo

Repository files navigation

EsaGo

EsaGo adalah asisten akademik all-in-one resmi untuk mahasiswa Universitas Esa Unggul, dirancang untuk menyederhanakan kehidupan kampus Anda dari A sampai Z. Dari jadwal kuliah hingga administrasi UKT, semuanya ada di sini—ditambah kecerdasan buatan (AI) yang siap mendampingi studi Anda!

🚀 Fitur

  • Persistent Navigation Shell: Arsitektur "Single Activity" untuk perpindahan tab yang instan dan mulus tanpa reload.

  • Unified Logout System: Mekanisme logout terpusat yang membersihkan semua sesi (SSO, Siakad, Cache, Widget) hanya dengan satu ketukan, menjamin keamanan data pengguna.

  • Improved UI/UX:

    • Marquee: Teks berjalan untuk judul mata kuliah panjang.
    • Theming: Tema terang (Light Mode) yang konsisten di seluruh aplikasi.
  • Login Single Sign-On (SSO): Masuk dengan cepat dan aman menggunakan akun SSO universitas Anda.

  • Jadwal Kuliah: Lihat jadwal kelas Anda yang akan datang dalam antarmuka yang mudah digunakan.

  • Profil Mahasiswa: Akses informasi profil akademik Anda kapan saja.

  • Daftar Peserta Kelas: Lihat siapa saja yang ada di kelas Anda.

  • Widget Layar Utama: Pantau jadwal kuliah Anda langsung dari layar utama perangkat Android Anda.

  • Lupa Kata Sandi: Kemudahan memulihkan kata sandi akun Anda.

  • Integrasi E-Learning: Akses penuh ke materi kuliah dan kuis.

    • Native Kuis: Pengerjaan kuis Moodle dengan tampilan native aplikasi yang responsif.
    • Auto-Save & Submit: Jawaban tersimpan otomatis dan fitur submit yang aman.
    • Timer Sinkron: Waktu pengerjaan yang tersinkronisasi server.
  • 🤖 AI Quiz Helper (Powered by ChatGPT Streaming):

    • Event-Driven Streaming (NDJSON): Respons AI kini dipecah menjadi event granular (answer, explain_success, explain_fail) untuk feedback yang lebih kaya.
    • High Cohesion: Logika parsing streaming dipisahkan ke QuizAiParser yang teruji secara unit.
    • Auto-Selection: Opsi jawaban terpilih otomatis begitu AI mengirimkan event answer.
    • Smart Feedback: Menyimpan penjelasan detail (kenapa benar/salah) untuk ditampilkan di UI.
    • Robust Error Handling:
      • Anti-Error Sequence: Token refresh otomatis untuk mencegah error "Data outside normal sequence".
      • Flexible Parsing: Mampu menangani JSON bersih maupun yang terbungkus Markdown.
    • Result Fallback: Nilai akhir tetap muncul meskipun dosen menyembunyikan review detail.
  • Improved UI Dashboard:

    • Auto-Sliding Announcement Carousel:
      • Pengumuman ditampilkan dalam carousel interaktif yang bergeser otomatis setiap 5 detik.
      • Mendukung swipe manual dan indikator posisi (dots).
      • Idle Mode: Otomatis mengganti judul pengumuman panjang menjadi teks statis saat tidak ada interaksi selama 30 detik untuk menghemat daya.
    • Running Text (Marquee): Greeting menyapa dengan efek scrolling yang estetik (dengan Random Start).
    • Semester Calculation: Logika perhitungan minggu "pintar" yang akurat memprediksi pertemuan berikutnya.
  • Refactoring & Code Quality:

    • Renaming:
      • ProfilePage kini bernama DashboardPage untuk memperjelas fungsinya sebagai beranda utama.
      • SsoPage kini bernama LoginPage untuk intuitivitas kode (screaming architecture) dan kemudahan pencarian.
    • Widget Testing: widget_test.dart telah diperbarui untuk menguji render DashboardPage secara spesifik dengan mock data.
    • High Cohesion & Low Coupling:
      • Strong Typing: Implementasi Model MoodleTask menggantikan penggunaan Map mentah, memusatkan logika bisnis (seperti urgensi dan deadline) di dalam Model dan menjaga UI tetap bersih.
      • Type Safety: Mengurangi risiko runtime errors akibat perubahan struktur API.

🛡️ Kualitas Kode & Testing (New)

Aplikasi ini menjunjung tinggi standar Clean Code:

  • Modular Parsing: Logika parsing HTML dipisahkan sepenuhnya ke SiakadParser (High Cohesion).
  • Unit Testing:
    • schedule_logic_test.dart: Memastikan perhitungan minggu selalu akurat di berbagai tanggal simulasi.
    • announcement_parser_test.dart: Menjamin parsing pengumuman tidak rusak meski struktur HTML berubah sedikit.
    • attendance_parser_test.dart: Memverifikasi akurasi parsing tabel absensi dan perhitungan persentase.
    • student_profile_test.dart: (New) Memastikan halaman profil dan fitur Unified Logout berfungsi dengan benar (termasuk dialog konfirmasi).
    • widget_test.dart: Smoke test yang memastikan aplikasi berjalan mulus dari awal.
  • Backend Verification:
  • Backend Verification:
    • rust/src/bin/test_chatgpt.rs: Binary khusus untuk memverifikasi konektivitas dan TLS Fingerprinting secara real-world.

🌟 Fitur Baru

  • Absensi Mahasiswa (Dart Implementation):

    • High Performance Parsing: Implementasi parser HTML full-Dart (SiakadParser) yang cepat dan mudah di-maintain.
    • Statistik Lengkap: Visualisasi persentase kehadiran per mata kuliah dan total rata-rata semester.
    • Indikator Visual: Peringatan otomatis jika kehadiran kurang dari 75% atau terlalu banyak absen.
    • Semester History: Kemampuan melihat rekap absensi semester lalu.
  • Student Profile Revamp: Tampilan profil modern dengan avatar besar dan navigasi persisten.

  • Refined Experience:

    • Smart Download UI: Widget download melayang (floating) yang non-intrusif, tanpa notifikasi sistem yang mengganggu, dengan dukungan Light Mode yang elegan.
    • Pengumuman estetik dengan Infinite Marquee.
    • Navigasi "Absen" langsung dari Bottom Bar.
    • High Performance Display: Dukungan native 120Hz (High Refresh Rate) untuk scrolling yang sangat mulus di perangkat modern (seperti Xiaomi HyperOS).
    • Robust Download System:
      • Dual Notification: Notifikasi in-app (pills) yang estetik DAN notifikasi sistem Android yang persisten.
      • Smart Storage: Otomatis menangani izin ketat Android 14+ (Scoped Storage) dengan mekanisme Download-then-Copy yang aman.
  • Manajemen Tugas & Deadline (New):

    • Layout Konsisten: Kartu tugas didesain ulang agar tingginya selaras dengan informasi kehadiran, menciptakan layout dashboard yang rapi.
    • Detail Tugas Interaktif: Halaman khusus untuk melihat detail tugas, status pengumpulan, dan hitungan mundur waktu sisa secara real-time.
    • Direct Moodle Access: Integrasi tombol untuk langsung menuju halaman pengumpulan tugas di web Moodle.
  • 🚀 Performance & Stability (New):

    • Turbo Startup: Inisialisasi paralel (Rust, Downloader, Intl) memangkas waktu startup aplikasi hingga 50%.
    • Non-Blocking Validation: Pengecekan status layanan berjalan di background, membuat UI dashboard muncul instan.
    • Smart Dashboard Retry: Sistem cerdas yang otomatis me-reload halaman dashboard begitu koneksi terdeteksi pulih, tanpa perlu menunggu countdown timer manual jika tidak diperlukan.

🏗️ Arsitektur (Refactored)

Aplikasi telah direfactoring menggunakan pendekatan Clean Architecture dan Provider Pattern untuk performa yang lebih baik dan kode yang lebih rapi:

  • UI Layer (QuizAttemptPage): Hanya bertanggung jawab menampilkan widget (Stateless/Stateful Widget ringan).
  • Business Logic Layer (QuizAttemptProvider): Menangani semua logika bisnis:
    • Manajemen Timer Kuis.
    • Komunikasi API Moodle (Start, Save, Submit).
    • Streaming & Parsing respons AI.
    • caching hasil jawaban.
  • Service Layer: MoodleService dan ChatGPTService yang terinjeksi via Dependency Injection.
  • File & Permission Layer (New): FileService yang memisahkan logika Izin Android dan Path File dari UI, menciptakan arsitektur High Cohesion & Low Coupling.

ChatGPT Implementation Notes (Rust Port)

Current Architecture

  • Library: wreq v6 (Pure Rust) with Safari16 emulation to bypass Cloudflare/Bot detection.
  • Protocol: HTTP/1.1 with TLS Fingerprinting customization.
  • State: Currently Stateless/Generator Mode.
    • Suitable for "One-shot" requests (e.g., "Answer all these questions").
    • Does NOT support "Continue Conversation" (Context breakdown per turn) yet.
    • Does NOT support Image Upload yet.

Integration with Flutter (Quiz Feature)

  • The current Flutter implementation (QuizAttemptProvider) uses a Generator Pattern:
    1. Combines all questions into one massive prompt.
    2. Requests a single stream of answers in NDJSON format.
    3. Parses the stream line-by-line.
  • Compatibility: The current Rust port is fully compatible with this flow. "Continue Conversation" logic is NOT required for the current bulk-answer feature.

Future Improvements

  • Event-Driven Streaming: Plans to break down huge responses into granular events (Correct Answer, Explanation Correct, Explanation Wrong) for better UI feedback/partial loading.
  • Image Support: Porting upload_image for multimodal questions.

Setup Instructions.

🛠️ Developer Tooling & MCP Support

Project ini dilengkapi konfigurasi Model Context Protocol (MCP) untuk meningkatkan produktivitas pengembangan:

  • Puppeteer: Automasi testing dan scraping web via browser headless.
  • Git: Integrasi manajemen versi.
  • SQLite: Inspeksi langsung database lokal aplikasi.
  • Android Platform Tools: Akses ADB (Android Debug Bridge) untuk debugging perangkat fisik.

Struktur Project

  • lib/: Kode Hash Source Dart (Flutter UI & Logic).
  • rust/: Production Client. Kode backend Pure Rust untuk interaksi aman dengan ChatGPT API.
  • ChatGPT/: Reference Implementation (Python). Submodule dari repo asli untuk referensi/debugging jika terjadi API breakdown.

🛠️ Teknologi

EsaGo dibangun menggunakan Flutter, toolkit UI modern dari Google untuk membuat aplikasi yang indah dan dikompilasi secara native untuk seluler, web, dan desktop dari satu basis kode.

Ketergantungan Utama:

  • Provider: Untuk manajemen state.
  • HTTP & Cookie Jar: Untuk menangani sesi jaringan dengan server Siakad.
  • HTML: Untuk mem-parsing konten HTML yang diambil dari situs web.
  • Home Widget: Untuk menyediakan widget di layar utama Android.
  • Shared Preferences: Untuk menyimpan data sederhana di perangkat.
  • Intl: Untuk keperluan internasionalisasi dan pemformatan.

🏁 Memulai

Untuk menjalankan proyek ini secara lokal, ikuti langkah-langkah berikut:

  1. Prasyarat: Pastikan Anda telah menginstal Flutter SDK.
  2. Klon Repositori:
    git clone https://github.com/username/esago.git
    cd esago
  3. Instal Ketergantungan:
    flutter pub get

4 . Jalankan Aplikasi: flutter run ```

⚡ Efisiensi Server

Aplikasi ini dirancang untuk menjadi sangat ringan bagi server Universitas Esa Unggul.

  • Request Minim: Saat startup, aplikasi hanya mengirimkan 4-5 request HTTP (JSON/HTML ringan) untuk mengambil seluruh data profil, jadwal, dan pengumuman.
  • Beban Rendah: Dibandingkan dengan portal web konvensional yang memuat puluhan aset (gambar, CSS, JS) setiap kali halaman dibuka (bisa mencapai 20-50 request), EsaGo memangkas beban server hingga 90%.
  • Caching Cerdas: Data jadwal dan profil disimpan secara lokal (cache), sehingga request ke server hanya dilakukan saat diperlukan atau saat user melakukan refresh manual.

About

EsaGo adalah asisten akademik all-in-one resmi untuk mahasiswa Universitas Esa Unggul, dirancang untuk menyederhanakan kehidupan kampus Anda dari A sampai Z. Dari jadwal kuliah hingga administrasi UKT, semuanya ada di sini—ditambah kecerdasan buatan (AI) yang siap mendampingi studi Anda!

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published