Searching in two languages at once
the problem
Students refer to the same subject as 'Signals', 'إشارات', or a course code, often switching mid-sentence. Indexing one language means half the searches fail silently.
what I did
Every subject carries both names and its code in one searchable field, normalised on both sides. A query in either language, or a code, reaches the same subject.
A campus network you cannot rely on
the problem
Students open the app between lectures, in corridors and basements where the connection is unreliable. Every screen hitting the network makes the app feel broken in exactly the place it is used.
what I did
The plan tree and staff directory are cached aggressively and treated as slow-changing data, so the app opens instantly from cache and revalidates in the background rather than blocking on a request.
Content that must outlive its maintainer
the problem
Study plans change, staff move, and I am one volunteer. An app that needs a code release every time a course is renamed dies the moment I get busy.
what I did
All of it is content in Firebase, editable by committee members without touching the app. My job is the client; keeping the data current is theirs, which is the only arrangement that lasts.