Skip to main content

Who this is forUstaz

Working without a signal

What the app keeps on the phone, what it queues, and the parts of Sijil that need a connection.

Offline in Sijil means two specific things: an Ustaz can mark attendance, and can record a completed Hifz or Nazira unit, with no connection at all. That is the whole of the promise, and the rest of the app needs a signal. This page is that boundary in detail — what is already on the phone before the signal goes, what happens to a mark made without one, when it actually uploads, and the screens that simply say no until you are back online.

It is written for the Ustaz's phone. The parent portal is a separate app with a different offline rule, and it has a section of its own near the end.

What works with no signal

What you are doingWith no signal
Opening the register and marking attendanceWorks. The mark lands on the register at once and is held on the phone until it can be sent
Recording a completed unit on a progress trackWorks, the same way
Taking a mark backWorks while it is still on the phone and has not been sent
Reading a roster, a student's profile, this month's attendanceWorks, from the copy saved on the phone
Purani hazri — marking a day that has passedWorks. The same day rules apply, minus the shift has not started yet check, exactly as online
Setting a progress track, adding or removing one, correcting a positionOnline only — Internet ke baghair yeh kaam nahi ho sakta — online aa kar karein
Fees, the calendar, admin settings, adding a studentOnline only
The first PIN entry on a phoneOnline only. There is nothing on the device yet to check a PIN against

What is already on the phone

While the app is open and online, Sijil keeps a copy of what the register needs on the phone itself: the reference data, the classes and their shifts, the students, the calendar, and the attendance already recorded. That copy is refreshed when the app opens, the moment the phone goes from offline to online, and every five minutes while the app stays open.

Pages are handled separately from data. After a successful refresh, Sijil quietly fetches the pages themselves — the dashboard, every active class, every active shift's marking screen, and every active student's profile — at most once every fifteen minutes. This is why a class nobody opened today still opens tonight with no signal. What those pages then show comes from the phone's own copy, not from a cached reply.

A page outside that set, opened for the first time with no signal, gets a plain screen instead of a blank one: This page isn't available offline yet, and under it Reconnect to the internet, then open this page once so it can be saved for offline use. Pages you've already visited will still work.

A mark made with no signal

The phone checks the mark before it accepts it, against the same rules the server uses — no active academic year, a date outside it, an inactive class, an inactive shift, a shift that has not started yet, a holiday, a weekend day. A mark that any of those blocks is refused on the spot and nothing is queued, because a queue full of work the server is certain to reject is worse than an honest refusal at the time.

A mark that passes is written twice in one go: onto the register where the Ustaz can see it, and into the queue to be sent. Those two commit together, so a mark can never exist without its queued copy, nor a queued copy without a mark. Under it the register says where it stands — Internet aane par chala jayega.

What the phone tells you while it waits

WhereWhat it says
The banner across the topInternet band hai — internet aane par tabdeeliyan khud save ho jayengi
The badge, waiting{count} baqi — how many entries are still to be sent
The badge, sendingData milaya ja raha hai…, then Data mil gaya
The badge, something wrong{count} kaam nahi huay
The list behind itSave hone wala kaam, split into Save hone ka intezar ({count}) and Tawajjoh darkar ({count})

An entry that needs attention says why in one phrase rather than a code — Internet ka masla, Dobara login karein, Manzoor nahi hua, or Kaam nahi hua — with {count} martaba koshish beside it. Retry failed pushes them again, and refuses honestly when there is still nothing to push with: Pehle internet chalayen, phir dobara koshish karein.

When it uploads

Three things start an upload, and all three need the app to be open: opening the app while online, the phone going from offline to online, and a five-minute tick while the app stays open and connected.

What happens to an entry that does not go through depends on what went wrong, and the distinction matters:

What happenedWhat Sijil does with it
It never reached the server — no signal, no reply at allStays waiting, indefinitely, and is never counted as a failure. There is no evidence against the mark, only against the network
The server answered but could not take it — rate limit, server error, a lapsed sessionRetried, up to six attempts, then moved to Tawajjoh darkar for the Ustaz to look at
The server rejected this entry and would reject it again — a student who no longer exists, a day the calendar has since closedMoved to Tawajjoh darkar straight away. It is never silently dropped and never silently kept

The PIN with no signal

The first PIN a phone ever takes has to be checked by the server, and the app says exactly that rather than blaming the digits: PIN ghalat hai. Is phone par pehli bar internet ke saath PIN daalna zaroori hai. After that one online entry, the phone can check the PIN itself, so the register opens on a rooftop the same way it opens in the office.

That local check lasts three days. A correct PIN after seventy-two hours is not called wrong — it gets its own message: Offline waqt khatam ho gaya. Internet se jurein aur dobara PIN daalein.

The copy is a day old at most

Reference data, the classes and students, and the calendar are each treated as stale after twenty-four hours and re-pulled on the next refresh.

A stale calendar is the interesting one. It does not block marking — blocking would defeat the whole point of being offline — so the mark goes through against the calendar the phone has. The server checks it again on upload, which is where a holiday declared while the phone was away is caught: that entry comes back into Tawajjoh darkar for the Ustaz to review rather than being quietly accepted or quietly thrown away.

One screen states the same rule about itself. A progress track that was never opened online reads Yeh track offline mojood nahi — aik dafa online kholein, phir offline chalega.

Installing it on the phone

Sijil installs from the browser onto the home screen. There is no app store listing and no APK to pass around, which also means nothing to sideload and no version to chase. Where the browser offers the prompt, a small banner offers to install it, and dismissing it keeps it away for a week. On an iPhone the browser does not offer that prompt, so the same thing is done from Safari's own Share menu, Add to Home Screen.

Installing is worth doing for a second reason: an installed app is where a browser is most willing to keep the saved copy rather than clear it.

The parent's phone keeps its copy for good

The parent portal holds its own separate database, and there is no expiry in it at all. That is a decision rather than an oversight: a parent's phone only ever reads, and what it reads is one family's own record, already known to that family. Expiring it would cost the one thing the portal exists for — a parent on a dead connection opening their child's day.

The controls are elsewhere instead. A revoked session or a code re-issued to another family wipes the copy on the phone's next successful contact with the server. Ten wrong PINs lock offline unlock for fifteen minutes, the same numbers the server uses, so the app is not stricter on a train than at home. There is no background polling: it re-fetches when a parent returns to the app and the copy is more than two minutes old, and otherwise leaves a metered connection alone. The rest of that side is in The parent portal.

What offline is not

Often assumedWhere Sijil actually stands
An offline-first appIt is not. Two things work without a connection; everything else needs one
Background uploadThe app must be open for the queue to clear. Nothing syncs while it is closed
Admin work offlineFees, the calendar, students, staff and settings are all online. So is anything that changes a progress track
A phone that has never been onlineHas nothing to work from — no roster, no PIN to check, no pages. One connected session comes first
Reports offlineReports are read on the screen, and only from what the phone already holds
Screenshot to followThe marking screen with no signal: the offline banner across the top, the register filled in, and the count of entries still to be sent.
The register does not wait for the network. The network waits for the register.