Skip to content

RfadnjdExt/EsaGo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

 
 
 

Contributors