EdHelfy Back to App

User Manual

A living guide that grows as EdHelfy grows. Bookmark this page — new sections are added with every release.

Dashboard

The Dashboard is your home screen — a one-glance view of everything that needs attention today. It greets you with a time-aware icon (☀️ morning, 🌤️ afternoon, 🌙 evening) and shows your institution’s name, then surfaces the day’s state through three modules.

Live Monitor tiles

The three coloured tiles at the top of the dashboard — Students, Teachers, Fees — show a live count, a sub-metric, and a status dot (green = healthy, amber = needs attention, red = action required).

  • Students — total enrolled, with “X present today” sub-metric and a dot reflecting today’s attendance rate.
  • Teachers — teacher count, “X present today” sub-metric, badge if there are pending leave or clock-edit requests.
  • Fees — collected this month, “₹X pending this month” sub-metric, dot scales with pending percentage.

Placards (click any tile)

Clicking a tile opens a detail placard with a Record / View action and inline shortcuts:

  • Students placard — class-by-class enrolment grid, today’s Present/Absent/Not-Marked breakdown. Footer shortcuts: View Students profile → and View Students Attendance →.
  • Teachers placard — today’s Present/Not-Marked/Incomplete buckets, pending leave + clock-edit requests with Accept/Reject (5-second undo strip), duration alerts. Footer shortcut: View Teachers Attendance →.
  • Fees placard — this month’s Collected vs Pending with a progress bar and per-class pending chips, plus Report and Remind buttons. Footer shortcut: View this month fees →.

Today snapshots (Live Monitor only)

The placard’s Record button generates a one-row-per-person snapshot for today — distinct from the date-range reports inside Attendance/Teachers tabs:

  • Students Today — per-student status: Present, Absent, Sick Leave (with the leave streak’s start–end span), or Holiday (with the calendar event’s name and date range). Header reads “Today, {weekday, date}”.
  • Teachers Today — same shape: per-teacher Status + Details, where Present rows show clock-in/clock-out, Leave rows show the request span + reason, and Holiday rows show the event.

Content cards

Below the Live Monitor: Posts & Announcements (write inline), Upcoming Events (next 30 days, multi-day events stay visible until they end), New Admissions (last 30 days with a delta vs the prior 30), and Low Stock (with one-tap WhatsApp order to category suppliers).

AI bar

The “Ask AI” bar at the top is the entry point to the assistant — see AI Assistant for the full workflow. Proactive nudges (overdue fees, low stock, upcoming events) appear as chips next to the input.

AI Assistant

EdHelfy ships with an AI assistant that lives on the Dashboard. Click the “Ask AI” bar or press ⌘/ (Mac) / Ctrl+/ (Windows) to open the chat. It can answer questions about your data and propose changes — you always confirm before anything is saved.

Pro plan note: Answering questions works on every plan. “Action” features (add, update, mark, generate) require the Pro plan. The chat surfaces a friendly upgrade hint when you try an action on the Basic tier.

How confirmation works

When you ask the AI to do something (“add a student”, “mark 5B present”, “print a receipt”), it proposes an action. A card appears with the extracted details and three possible buttons:

  • ✓ Confirm — runs the action and writes to your data.
  • ✗ Cancel — discards the proposal.
  • ✎️ Edit all fields (on some actions) — opens the full entity modal pre-filled with the AI’s values so you can tweak anything.

Each field also has a small pencil icon for inline edits. You can fix a wrong class or amount before confirming without leaving the chat.

Smart follow-ups (“post-flows”)

When an action is likely to need a next step, the AI offers one inline. Examples:

  • After a fee is marked Paid → “Download receipt” · “Archive” · Skip.
  • After marks are recorded → “Print report card” · “View class rank” · “WhatsApp to parent” (shown only when parent contact is on file).
  • After a new admission → “Print admission form” · “Print ID card”.
  • After class attendance is marked → “Print attendance sheet”.
  • After inventory restock/issue/return → “Print inventory report”.

What you can ask

Anything about your institution — counts, rates, who’s pending, what’s overdue. And a growing set of actions:

CategoryExamples
Fees add April tuition ₹1000 for Mirza
update Mirza's tuition status to Paid
send fee reminders to class 5B
print receipt for Mirza April tuition
consolidated receipt for Mirza
print all receipts for class 5B
Students add student Priya in class 6A
new admission Aisha in class 7B (sets isAdmission automatically)
update student Mirza to class 7A
Attendance mark Mirza present
mark class 5B present today (bulk)
mark Ms. Sharma absent (teacher attendance)
Academics set Math 85 for Mirza mid-term
print report card for Mirza mid-term
print all report cards for class 5B mid-term
Inventory add inventory item Chalk, Stationery, stock 50
restock Chalk by 20
issue 5 markers
Schedule add Math with Mr. Verma on Monday 10:00 AM for class 5B
add holiday Diwali on 12 Nov
Admin config add class 7A
add section D
add fee type Library
remove exam type Pre-Board (blocked if in use)
Institution profile update institution name to Green Valley Public School
change institution address to 42 Ring Road, Pune

Document intake (📎 upload)

Snap a photo or upload a PDF — the AI classifies the document and pre-fills the matching action card. Three types are supported today:

  • Fee receiptadd_fee prefilled (studentName, feeType, amount, month)
  • Report card / marks sheetupdate_marks prefilled (studentName, exam, subject, marks)
  • Admission formadd_student with isAdmission:true (name, class, section, DOB, parents)

How to use it:

  1. Open the AI chat (dashboard → Ask AI bar, or ⌘/ / Ctrl+/).
  2. Tap the 📎 paperclip in the chat footer.
  3. On mobile, the rear camera opens — take a clear photo. On desktop, pick a file.
  4. Wait for “Analyzing document…” — usually 3–6 seconds.
  5. The extracted action appears as a confirmation card. Tweak fields inline, tap ✎️ Edit all fields for the full modal, or ✓ Confirm to save.
Tips for a good scan: bright, even light; flat on a surface; fill the frame with the document; avoid shadows and glare. Blurry or cropped photos confuse the classifier.
Max size: 10 MB per file. Privacy: uploads go through the AI provider you’ve configured in Settings; they are not stored on EdHelfy servers.

AI-generated charts (📈 visual answers)

Ask a trend, distribution, or comparison question and the AI renders an inline chart from your live data. The chart lives inside the chat message and always reflects the latest records — the AI never invents numbers, it only picks the query.

Supported queries today:

  • Attendance trendshow attendance trend for class 5B last 30 days (line)
  • Fee collectionfee collection by month this year (bar)
  • Students per classstudents per class (bar)
  • Marks by subjectaverage marks per subject for class 5B mid-term (bar)

Charts are pure-SVG, render offline, print cleanly, and scale to any screen. No external libraries, no CSP hassle, no extra load on the app. Tap the 📈 Attendance trend chip in the Ask-AI bar for a one-tap start.

Proactive nudges

The Ask-AI bar surfaces contextual suggestions based on your current data. You’ll see chips like:

  • “💡 12 overdue fees — send reminders?”
  • “💡 Attendance pending for 3 classes”
  • “💡 No exam marks recorded yet”

Tapping a chip pre-fills a useful prompt so you don’t have to type.

Example sessions

You: “Mark class 5B present today”

AI: proposes Mark Class Attendance — 5B, today, Present (card with confirm/cancel).

You: click ✓ Confirm.

AI: “22 students marked Present for 5B (2026-04-17)” — then a follow-up offers “Print attendance sheet”.

You: “Update Mirza’s tuition to Paid”

AI: proposes Update Fee — Mirza, Tuition, Paid.

You: confirm.

AI: “Fee updated: Mirza — Tuition” + Smart Paid card: 📄 Download receipt · 📦 Archive · Skip.

Tips

Be specific. “Mark Mirza present” works because Mirza is unambiguous. If two students share a first name, add the class or use the full name.
Use “Edit all fields” for rich data. The confirmation card shows the essentials. For DOB, address, photo, parent contact — tap the button to open the full form with the AI’s values pre-filled.
Deletes are blocked. For safety, the AI won’t delete students, fees, or records. Use the relevant tab’s archive flow instead — archived records are recoverable.

Troubleshooting

  • “Student not found” — check spelling; inactive students are excluded. Re-activate from Students → Archive if needed.
  • AI didn’t propose the action I wanted — rephrase with the canonical verb: “add”, “update”, “mark”, “generate”.
  • Card says “Action expired” — the proposal was cancelled. Ask again.
  • Every response looks like upgrade prompt — you’re on the Basic plan and trying action features. Questions still work; upgrade to Pro to unlock actions.

Students

The Students tab is the roster for every learner in your institution. Each student has a full profile (name, class, section, roll, DOB, parents, contact, photo) and a history (admission date, promotions, status changes).

Add a student

  • Quick add — Students tab → + Student. Fill class/section/name and save. You can also use the FAB or ask the AI: add student Priya in class 6A.
  • New admission — toggle Admission on the form (or say new admission… to the AI). Admissions show a badge and can be printed as an admission form from the student profile.
  • Photo — tap the photo slot in the profile modal. Stored locally, synced across devices.

Promote / demote / deactivate

  • Open a student card → Promote & Deactivate dropdown. Bulk-promote by class from Students → Promote All.
  • Deactivated students move out of the roster but stay searchable in Students → Archive. Re-activate any time.
  • Promotions are logged per-student and shown on the profile (Promotion history).

Reports & printing

  • ID cards — single or bulk; layout + fields configured in Settings → ID Card.
  • Admission form — printable letterhead with parent declaration.
  • Transfer certificate (TC) — auto-numbered; fields configurable in Settings.
  • Student list report — A4 landscape class-grouped roster from Dashboard.
Tip: every student list has a search box; use AI filters like students with pending fees for quick multi-filter queries.

Attendance

Track per-day attendance for students and teachers. Marks live per class/section and support Present · Absent · Late · Leave.

Mark attendance

  • Attendance tab → pick class + section → tap each cell, or use bulk buttons for a whole class.
  • Change a date with the date picker; today is the default.
  • Ask the AI: mark class 5B present today or mark Mirza absent.

Teacher attendance

Teachers tab → Attendance sub-view. Same P/A/L/Lv semantics. Status is per-day, per-teacher.

Holidays

Holidays declared in the Calendar (Schedule tab) are excluded from attendance totals automatically. Multi-day holidays (e.g. Diwali 17–21) cover the whole range.

Reports

  • Print attendance sheet — from Dashboard or after bulk-marking via AI.
  • Attendance rate — shown on every student profile and as a dashboard tile.

Fees

Fees are per-student line items (Tuition, Transport, Exam, Admission, etc.) with states Pending · Paid · Partial · Waived.

Fee types & amounts

  • Settings → Fee Types — declare the types you use (add/remove).
  • Default amounts — per fee type, optionally per class (Tuition ₹1000 for class 5, ₹1200 for 10, etc.).
  • Recurring schedule — a type can be flagged monthly/quarterly; auto-gen uses this.

Auto-generate monthly fees

Fees tab → Auto-generate. Picks every active student, applies the default amount by class, creates Pending rows for the month. Idempotent — re-running won’t duplicate.

Smart Paid flow

Mark a fee Paid and three follow-ups appear: Download receipt · Archive · Skip. Bulk-mark a whole class’s tuition Paid in one step from the toolbar.

Archive, undo, reminders

  • Archive box — paid fees after a clean-up move here. Restore or permanently delete from one place.
  • Undo — any bulk flip can be reverted for 8 s.
  • WhatsApp reminders — from Dashboard (bulk across all outstanding) or per-student.

Receipts

  • Single receipt — from the fee row or AI: print receipt for Mirza April tuition.
  • Consolidated receipt — all fees for a student in one PDF.
  • Class-wide — one PDF per student, all classes in a single batch.

Academics

Exams, marks, report cards, and class rankings.

Exam setup

  • Settings → Exam Types — define every exam (Mid-term, Final, Unit 1, etc.).
  • Per-exam subjects — different exams can cover different subjects.
  • Pass percentage + grade ranges — configurable per institution.

Enter marks

  • Academics tab → pick class + exam → type marks into the grid. Autosaves per cell.
  • AI: set Math 85 for Mirza mid-term.
  • Skip a subject — leave blank; it won’t count toward the total.

Marksheet vs Report Card

Two related but distinct documents, each with a customizable label (Settings → Exam Settings → Report Card):

  • Marksheet (default name) — covers one exam. e.g. “Mid Term Marksheet”. Use after each individual exam closes.
  • Report Card (default name) — covers every exam in the academic session, consolidated into one transcript. Use at the end of the term/year for summary distribution.

Schools can rename these (e.g. to “Progress Report” or “Result Card”), customize signature labels (Class Teacher / Principal), toggle the signature block on or off, and choose whether to include the per-subject matrix.

Report cards & rankings

  • Per-student Marksheet (single exam) or Report Card (all exams) — from the profile or AI.
  • Bulk Marksheets / Report Cards — whole class, one PDF per student.
  • Class rank — auto-computed from totals; remark auto-selected via configurable ranges.
  • Assessment categories (Hygiene, Discipline, etc.) — configurable in Settings, scored per student per exam.
  • Inline mark editing — click any mark in the grid to edit in place. If a sync arrives mid-edit, the table waits for you to blur before refreshing — your typed value never gets wiped.

Archive

Deactivated students’ marks auto-archive into the Academics → Archive tab so report cards can still be regenerated from history.

Schedule

Timetables, calendar events, and routines live under the Schedule tab.

Timetable

  • Schedule → Routines sub-tab. Grid: rows = timing slots, columns = weekdays.
  • Per-class timetable — pick class/section from the picker.
  • Click a cell → assign subject + teacher. Reuses the teacher roster.
  • Timing slots live in Settings → edit once, every class inherits.

Calendar

  • Schedule → Calendar. Add holiday · exam · event · meeting for single day or a range.
  • Holidays automatically excluded from attendance math (see Attendance).
  • Upcoming events chip appears on the dashboard; multi-day events stay visible until they end.

Teachers

Staff roster with profiles, attendance, leave, and reports.

Profiles

Teachers tab → Timetable sub-view lists every teacher. Click + Add Teacher (or click an existing row) to open the profile form. As of 2026-05-02 the form is laid out as six sectioned cards mirroring the Add Student modal:

  • Teacher / Staff Info — Full Name, Date of Birth, Sex.
  • Employment — Designation, Department, Employee ID, Joining Date.
  • Family — Father, Mother, Spouse / Partner.
  • Contact — Phone, WhatsApp (both with country-code picker), Email.
  • Address & Photo — Address textarea + profile photo upload.
  • Qualifications & Assignment — Education, Experience, Expert Subjects (multi-select), Mentor Class & Section, CV / Resume upload.

Phone fields go through the same E.164 validation used for student parent contacts, so WhatsApp links work the same way for teachers.

Manage Teachers (settings)

Settings → Manage Teachers opens the per-teacher attendance settings (default duration, bypass duration, bypass GPS) and the archived staff list. The modal opens fullscreen with a search bar at the top — typing filters the list live without losing focus, useful when staff numbers grow past a screen.

Manage Team (roles & invites)

Settings → Manage Team shows every user (admin + invited staff) in a single list. A search bar at the top filters by name, email, or role — the same DOM-only pattern as Manage Teachers.

Attendance & leave

  • Attendance sub-view — daily grid. Same P/A/L/Lv as students.
  • Leave requests — teachers submit; admins approve/decline inline from the dashboard or the teachers tab.
  • Approvals flow to Lv marks on the relevant dates automatically.

Reports

Per-teacher report with classes taught, attendance rate, leave taken. Printable from the profile.

Inventory

Track stock, categories, issues, and suppliers.

Add & manage items

  • Categories (Uniform, Books, Stationery, …) live in Settings.
  • Per-item: name, category, stock, price, low-stock threshold.
  • Variants / sizes — items like uniforms or shoes that ship in multiple sizes are stored as sibling rows under one parent name (e.g. School Shoes with rows for S, M, L). Each variant has its own stock + history.
  • AI: add inventory item Chalk, Stationery, stock 50. For variants: add School Shoes size M, Footwear, stock 10 — the AI passes the variant tag through so it lands on the correct sibling row.

Issue / restock

  • Issue — deducts stock; logs history. AI: issue 5 markers.
  • Restock — adds to stock. AI: restock Chalk by 20. For variant items: restock School Shoes size L by 10 — the AI narrows the match by item + size so the other sizes stay untouched.
  • Every change is logged in the item’s history; clear old history in bulk from the toolbar if needed.

Supplier WhatsApp

Per-category supplier contact → one-tap “Order” button opens WhatsApp prefilled with the low-stock list.

Low-stock alert

Dashboard card surfaces every item below its threshold; bulk-order via the supplier chip.

Settings

Institution-wide configuration. Visible only to admins. Grouped into tabs:

Institution profile

  • Name, address, logo, motto, academic year.
  • Letterhead + dashboard header fields — which of {Logo, Name, Motto, Registration, Phone, Email, Website, Address} appear on printouts.

Lists

  • Classes, sections, subjects (global + per-class), exam types, fee types, inventory categories, event types.
  • Timing slots for the timetable.

Team & roles

Open SettingsTeam Management to invite, edit, or remove team members. Detailed walkthrough in the Team & roles section below.

Role Permissions (customise per institution)

Settings → Team Management🔑 Role Permissions opens a matrix where admin can tune what each role can do in this institution.

  • Admin row is locked — always full access, not editable.
  • Teacher / Accountant rows: five levels per resource — Full access, Edit own only, View own only, View all, — (no access).
  • Parent / Student rows: clamped to View own only or so cross-child and cross-student data exposure is impossible by design.
  • Changes save automatically and propagate to all signed-in users within ~1 second via realtime sync.
  • Revert a cell with the ↺ button, or reset the whole matrix to defaults from the footer.
Example uses: Restrict teacher access to Academics if exam weights should stay admin-only; grant accountant extra access to Posts; turn off bulletin visibility for students during exam week.

AI & subscription

  • Activate the EdHelfy AI proxy (usage included in your plan) or plug your own provider key.
  • Daily + monthly usage limits shown in the Ask-AI bar.

Backups & data

  • Export my data — full JSON snapshot of students/fees/academics/attendance/config.
  • Import — CSV/JSON. Preview + dedupe rules before commit.
  • Auto-backup reminder — nudges every N days from the dashboard.

Danger zone

  • Reset all data — wipes local + cloud. Requires typing a confirm phrase.
  • Delete account — GDPR; irreversible. Auto-exports a backup first.

Team & roles

EdHelfy is multi-user from day one. The first signup becomes the institution's Admin; from there the Admin invites teachers, accountants, parents, and students. Each member signs in with their own email and password and only sees what their role allows.

The five roles

  • Admin — full access. Manages classes, fees, settings, team, billing, AI configuration, and Danger Zone actions.
  • Teacher — marks attendance, enters exam marks, plans the timetable, writes routines and posts. Sees students at the read level by default; can be widened or narrowed in Role Permissions.
  • Accountant — full access to Students, Fees, Inventory. Generates receipts, runs reminders, and manages the admission pipeline. No Teachers tab, no Settings.
  • Parent — read-only view of their own child(ren)'s attendance, marks, fees, routine, and posts. Cannot see other students.
  • Student — for coaching centres, colleges, institutes and higher-ed where learners use the app themselves. Same scope as Parent (read-own attendance / marks / fees / routine / posts) plus access to the AI learning assistant.
A user can hold multiple roles at once. A typical small school has one person who is both Teacher and Accountant — both checkboxes ticked on the invite, and the app merges permissions to the most permissive level.

Inviting a team member

  1. Open SettingsTeam ManagementManage Team+ Invite Member.
  2. Enter the invitee's email (or leave blank to share the code manually via WhatsApp / verbal).
  3. Tick one or more roles. Picking Teacher reveals a Link Teacher Profile dropdown — see below.
  4. Click Send Invite. The modal shows a green ✓ when the email actually delivered, or an amber ⚠ with a reason if it failed (in which case you can copy the code and share it manually).

How the invitee signs up

Two paths, both work:

  • Email link — invitee clicks the 🚀 Join Now button in the invite email. Lands on the signup form with the code, school name, and email auto-filled.
  • Manual code entry — invitee opens the website, switches to Sign Up, and types the 8-character code into the Invite Code field at the top of the form. After ~600 ms the institution name and the assigned role(s) auto-populate (e.g. "✓ You will join ABC Public School as Teacher.").

Invite codes are single-use, expire after 30 days, and can be revoked or regenerated by the inviting Admin from the Pending Invites list. If an invite is lost, the Admin can also Resend email from the same list (⚙ menu next to the code).

Linking

Linking ties an invited user account to an existing record in the institution so the user sees their own data on first login.

  • Teachers (admin pre-link) — when inviting a Teacher, pick the corresponding teacher profile from the Link Teacher Profile dropdown. After the invitee signs up, the server binds that teacher row to their auth account, and on first login the system canonicalises their display name to the linked teacher's name. If the invitee enters a different "Your Name" during signup it gets replaced — to avoid confusion, the new code-entry signup form previews the linked teacher's name before submission.
  • Parents (admin pre-link) — when inviting a Parent, pick the corresponding student from the Link to Student dropdown (revealed when the Parent checkbox is ticked). A search box above the dropdown filters by name or class. On signup, the server binds students.parent_user_id = auth.uid() for that specific student. Multi-child families: send one invite per the picker, then siblings sharing the same parent_phone or parent_whatsapp on their student records auto-link too via contact-match.
  • Students (admin pre-link or auto-link) — when inviting a Student, the same student picker (with search) is revealed. On signup, the server binds students.student_user_id = auth.uid(). If the picker is left blank, the system falls back to auto-linking by matching the student's signup email or phone to students.email or students.phone. Multi-match is refused for security — if 2+ student rows share the same contact, the system shows an "unlinked" screen and asks for admin help.
If linking fails the user lands on a friendly fallback screen ("Your account is ready, but we couldn't match it to a student record yet"). To fix it, the Admin opens the matching student record in Students and adds the user's email or phone to the appropriate field. Realtime sync then re-runs the linker automatically — no need for the user to click "Try again", though that button is there as a fallback.

Customising what each role can do

SettingsTeam Management🔑 Role Permissions opens a matrix where the Admin tunes what each role can do in this institution:

  • Admin row is locked at full access — not editable.
  • Teacher / Accountant rows: five levels per resource — Full access, Edit own only, View own only, View all, or (no access).
  • Parent / Student rows: clamped to View own only or so cross-child / cross-student data exposure is impossible by design.
  • Changes save automatically and propagate to every signed-in device within ~1 second via realtime sync.
  • Revert a single cell with the ↺ button, or reset the whole matrix to defaults from the footer.

Editing roles after invite

From Manage Team, click Edit next to any member to add or remove roles. The system enforces a "last admin" guard — you can't remove the only remaining Admin from a school.

Top-right user dropdown

The avatar in the top-right corner shows the signed-in user's name and role(s). Multi-role users see them dot-separated (e.g. Teacher · Accountant); the Admin role is highlighted in accent colour.

Sync & cloud

EdHelfy keeps a copy of your data on every device that signs in, with the cloud as the source of truth. Most syncing is automatic — this section explains what runs in the background, how to tell what’s happening, and which control to reach for when something looks stale.

What runs automatically

  • Save — every change is uploaded to the cloud right away (no manual save button anywhere). A brief “Saving…” appears in the status bar; submit buttons disable for the second or two it takes so you can’t accidentally double-submit.
  • Realtime push — changes from another device typically arrive within 1–2 seconds; nothing to do on the receiving device.
  • Multi-tab — changes made in one tab show up in other tabs of the same browser instantly.
  • Form-draft autosave — if you start filling a form (Add Student, Add Fee, Add Item, Add Mark, Add Teacher, Institution Profile) and accidentally close the modal without saving, EdHelfy keeps your unfinished input in the tab’s memory. Reopen the same form and it offers to Restore what you typed. Drafts clear once you successfully save, when you click Restore, or when you dismiss the prompt with the × — so you never see the same stale prompt twice. Drafts older than 4 hours are silently dropped; sessionStorage means they don’t survive a browser restart (privacy: drafts on a school computer can’t leak to the next user).
  • Edit-safe auto-refresh — if you’re mid-edit (e.g. typing marks inline on the Academics page) when a sync arrives, EdHelfy holds the screen refresh until you blur the input. Your typed value never gets wiped by an incoming change.
  • Sticky filter rows on mobile — Filter and Action panels you’ve expanded stay open across auto-refresh. No more re-tapping the same filter button every time data syncs.
  • Stale-data hint — if you leave a tab open in the background for more than five minutes and come back to it, EdHelfy may show a quick “Data may be stale — Refresh?” toast so you can pull fresh data before editing.
  • Silent-death watchdog — if the realtime channel goes idle on a phone’s sleep or a flaky network, a background check (every minute) automatically reconnects and shows a quick “Reconnecting sync…” in the status bar.

For most users, the answer to “do I need to sync?” is no — just keep an eye on the dot and the status bar.

How to tell what’s happening

Two passive indicators surface the current state. You don’t click them to make sync happen — they just tell you whether anything needs your attention.

The sync dot (on your profile avatar — both devices)

A small coloured dot at the corner of your profile picture:

  • • Green — synced and live. Nothing to do.
  • • Orange — saving right now, or realtime is reconnecting.
  • • Red — offline, or a sync error. The Offline banner at the top of the app explains what to do.
  • • Grey — not yet synced this session (briefly seen right after login).

The status bar (slim strip below the top bar)

Appears only when there’s something useful to say:

  • “Saving…” (orange) while a write is uploading.
  • “Saved” (green) briefly after a successful save, then auto-hides.
  • “Reconnecting sync…” (orange) when the realtime channel briefly drops and is being re-established.
  • “Sync error — tap for details” (red, persistent) when something goes wrong. Tap it to open the Sync Log for details.

When you’re fully offline, the status bar steps aside and a separate red Offline banner takes over — see “Working offline” below.

Manual sync controls

Four ways to trigger a sync — they all do exactly the same thing (push pending writes, then pull the latest from cloud). Pick whichever is most ergonomic in the moment.

1. Tap the sync dot

The small coloured dot on your profile avatar is itself a button on every device. Tap it to force a sync.

2. The “Sync” pill (desktop only)

On screens 1024px and wider, a labelled pill button (“Synced” / “Syncing…” / “Retry”) sits in the top-right of the top bar. Click to force a sync.

3. The sync icon (mobile only)

On phones, a round refresh icon sits between the search and the notification bell in the top bar. Tap to force a sync.

4. Pull-to-refresh (mobile gesture)

  • Scroll to the top of any list and pull down. A small puck appears and follows your thumb.
  • When the puck arrow flips upward (and your phone vibrates briefly), release to refresh.
  • The puck spins while syncing, then snaps away.
Mobile gesture note (2026-05-02): horizontal swipes between tabs are disabled. Earlier builds switched tabs when you swiped left/right anywhere on the page; users were hitting it accidentally during back-gesture and table-scroll motions. Tab navigation now goes through the sidebar (☰ icon) or the bottom nav only. Pull-to-refresh and the sidebar edge-swipe still work.
Power-user tip: hold Shift (desktop) or long-press (mobile) any sync surface to open the Sync Log directly instead of triggering a sync.

The Sync Log (diagnostics)

Open via Settings → Sync → 📋 Sync Log, or by tapping a red status bar. It shows the last 50 sync events with timestamps and a health strip at the top (last sync time, realtime channel state). Buttons:

  • Retry sync now — same as tapping the sync dot, but in context. Use this when something didn’t arrive cross-device and you want to force a fresh download.
  • Full resync — re-downloads every record from cloud. Safe (no data loss). Use when changes from another device aren’t appearing even after a couple of regular syncs.
  • Clear log — empties the displayed event history. Cosmetic only; no effect on actual sync state.
Quick rule of thumb: Green dot, no bar → do nothing. Want fresher data right now → tap any sync surface (dot, pill, mobile icon, or pull-to-refresh). Red banner at top → you’re offline; reconnect or hit Retry. Persistent red status bar → tap it to open the Sync Log.

Working offline

EdHelfy needs the internet to save your changes. When your device goes offline (flight mode, dropped Wi-Fi, dead spot in the building), a red banner pulls down from the top of the screen:

“📡 Offline — changes won’t save until you reconnect” [ Retry ]

While the banner is showing:

  • You can still read everything you’ve already loaded — navigate tabs, look up student records, view fees, check attendance — the app works as a read-only view.
  • If you try to save something (add a student, mark attendance, edit a fee), the change won’t stick — you’ll get a small toast: “Offline — your change was not saved. Try again when reconnected.” The form keeps your input so you can save once you’re back online.
  • Any forms you started but didn’t finish stay safe via the form-draft autosave (see above) — reopen the form to restore.
  • The Retry button on the banner re-checks the network and triggers a sync the moment you’re back online (browsers can be slow to notice a Wi-Fi return).

When connectivity is restored, the banner auto-hides, the realtime channel reconnects, and any tabs your colleagues edited meanwhile arrive within a couple of seconds.

Why no offline queue? EdHelfy used to silently queue offline edits and replay them later. We removed that in May 2026 because silently-queued data sometimes vanished or duplicated when the queue collided with cross-device edits. The new behaviour is louder but more honest: if a save isn’t going to land, you find out immediately and can decide what to do.

Send Feedback

Bug, idea, or just a note — all welcome. Feedback shapes the roadmap, and bug reports usually get a fix within days.

Email us at support@edhelfy.com. Or from the app: Profile menu → Help & FAQ → Send Feedback.

Include when reporting a bug: what you were doing, what happened, what you expected. Screenshots help. Device + browser is useful for rare issues. We don’t need any data from your account — a paragraph is enough.