INTERACTIVE TIMETABLE
Dynamic calendar utilizing offline-first caching so students have access even in deep campus dead zones.
Dynamic calendar utilizing offline-first caching so students have access even in deep campus dead zones.
Custom FCM integration pushing alerts (cancelled periods, room changes) only to impacted classes to avoid notification fatigue.
Dedicated grades interface empowering students to input, contextualize, and track academic performance.
Built-in task tracking suite to log, edit, and keep track of daily assignments or long-term projects.
Live "News Pop-up" module for admin banners, bypassing App Store update delays.
Built with modern UX principles featuring "Edge-to-Edge" UI, custom Poppins typography, and extensive personalized theming.
PROBLEM: Missing multithreading architecture and reliance on older Android SDK 12.0 caused the app to freeze and crash.
SOLUTION: Re-architected with proper multithreading and bumped SDK version, eliminating resource blocking.
PROBLEM: .NET 10 aggressive linker stripped critical JSON deserialization code, crashing production Release builds.
SOLUTION: Customized .csproj MSBuild pipelines with selective linker preservation directives.
PROBLEM: As students changed classes, device tokens persisted in legacy Firebase groups causing spam.
SOLUTION: Designed a robust server handshake flow in FcmService to tear down previous relationships server-side.
PROBLEM: Requesting an FCM token immediately after native APNs permissions consistently failed and returned null.
SOLUTION: Designed a resilient asynchronous polling mechanism with Task.Delay to wait for the APNs backbone.
PROBLEM: MAUI's linker over-optimized the payload, severing heavy native Objective-C/Swift Firebase bindings.
SOLUTION: Re-engineered iOS MSBuild definitions to disable linking on Firebase components and integrate static registrars.
PROBLEM: iOS compiling took 900+ seconds per build due to Apple's mandatory LLVM optimizations and outdated hardware restrictions.
RESOLUTION: We ultimately couldn't fix this natively due to hardware limitations. We were simply forced to endure and patiently wait through every agonizing 15-minute build cycle to finish the project!