LEAD DEVELOPER
300-500 DAILY USERS

NOWTT

A polished, cross-platform mobile application designed to function as the ultimate central hub for students.

(Fun fact: Android rejected us 2 times, iOS 0 times)

C# ✦ .NET MAUI ✦ FIREBASE (FIRESTORE, AUTH, FCM) ✦ SQLITE ✦ ANDROID ✦ IOS ✦ WINDOWS ✦

KEY FEATURES

SCHEDULING

INTERACTIVE TIMETABLE

Dynamic calendar utilizing offline-first caching so students have access even in deep campus dead zones.

ALERTS

TARGETED NOTIFICATIONS

Custom FCM integration pushing alerts (cancelled periods, room changes) only to impacted classes to avoid notification fatigue.

ANALYTICS

GRADE DASHBOARD

Dedicated grades interface empowering students to input, contextualize, and track academic performance.

PRODUCTIVITY

HOMEWORK & TO-DO

Built-in task tracking suite to log, edit, and keep track of daily assignments or long-term projects.

ADMIN

LIVE NEWS

Live "News Pop-up" module for admin banners, bypassing App Store update delays.

DESIGN

PREMIUM UX

Built with modern UX principles featuring "Edge-to-Edge" UI, custom Poppins typography, and extensive personalized theming.

ANDROID ENGINEERING CHALLENGES

SOLVED

ELIMINATING ANR CRASHES

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.

SOLVED

TAMING THE MAUI LINKER

PROBLEM: .NET 10 aggressive linker stripped critical JSON deserialization code, crashing production Release builds.

SOLUTION: Customized .csproj MSBuild pipelines with selective linker preservation directives.

SOLVED

DUPLICATE NOTIFICATIONS

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.

IOS-SPECIFIC CHALLENGES 🍎

SOLVED

FCM RACE CONDITION

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.

SOLVED

NATIVE IOS BINDINGS

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.

ENDURED

15-MINUTE BUILD TIMES

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!