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 doing | With no signal |
|---|---|
| Opening the register and marking attendance | Works. 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 track | Works, the same way |
| Taking a mark back | Works while it is still on the phone and has not been sent |
| Reading a roster, a student's profile, this month's attendance | Works, from the copy saved on the phone |
| Purani hazri — marking a day that has passed | Works. 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 position | Online only — Internet ke baghair yeh kaam nahi ho sakta — online aa kar karein |
| Fees, the calendar, admin settings, adding a student | Online only |
| The first PIN entry on a phone | Online 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
| Where | What it says |
|---|---|
| The banner across the top | Internet 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, sending | Data milaya ja raha hai…, then Data mil gaya |
| The badge, something wrong | {count} kaam nahi huay |
| The list behind it | Save 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 happened | What Sijil does with it |
|---|---|
| It never reached the server — no signal, no reply at all | Stays 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 session | Retried, 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 closed | Moved 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 assumed | Where Sijil actually stands |
|---|---|
| An offline-first app | It is not. Two things work without a connection; everything else needs one |
| Background upload | The app must be open for the queue to clear. Nothing syncs while it is closed |
| Admin work offline | Fees, the calendar, students, staff and settings are all online. So is anything that changes a progress track |
| A phone that has never been online | Has nothing to work from — no roster, no PIN to check, no pages. One connected session comes first |
| Reports offline | Reports are read on the screen, and only from what the phone already holds |