D
Atlas Academy ERP
Access Console

Keyboard-First Navigation & Offline Sync Guide

This document describes how to operate the keyboard-first navigation features, global Command Palette, and client-side offline synchronization behavior in the School ERP.


⌨️ 1. Keyboard-First Navigation

The ERP implements a fully keyboard-accessible interface. Administrative users can perform daily operations, search for sections, and submit data without touching a mouse.

Global Keyboard Shortcuts

Shortcut Action Scope
Ctrl + K or Cmd + K Toggle Command Palette Global (Any page)
Escape Dismiss Command Palette / Close modals Global
/ Focus search bar (when not inside an input) Global (on pages with search)
Ctrl + Enter or Cmd + Enter Submit current active form Global (Any form input focus)

Global Command Palette

Pressing Cmd + K or Ctrl + K triggers a clean, slate-styled search overlay.

  • Dynamic Scans: The palette automatically scans the sidebar navigation options. It dynamically updates options based on the active Tenant's module marketplace features and Spatie user roles, preventing unauthorized access.
  • Navigation: Type to filter, use ArrowUp and ArrowDown keys to move highlight selection, and press Enter to navigate to the selected route.

📶 2. Offline-First Synchronization

To support operational work in settings with spotty connectivity (like active classrooms or sports fields), the ERP leverages a Progressive Web App (PWA) architecture.

How it works

  1. Asset Caching: A Service Worker (sw.js) intercepts GET requests. Core CSS/JS and primary pages are cached. If the system is offline, the layout falls back to localized pages.
  2. Connectivity Status Badge: A live badge in the layout header indicates network status:
    • Online (Green): The browser is connected. Sync transactions are completed instantly.
    • Offline (Orange): Connection has dropped. Transactions are written locally.
    • Syncing (Blue): Reconnecting and pushing queued logs.
  3. IndexedDB outbox queue: Writes (e.g. logging student behavioral milestones) are intercepted when offline. Payload parameters are serialized and saved to IndexedDB (offline_erp_db.milestones_outbox).
  4. Reconciliation endpoint: When internet connection is restored:
    • The client background sync loop reads all queued items.
    • The items are batched and sent via POST to /plugins/counseling/milestones/sync.
    • On successful validation and ledger processing, local outbox logs are cleared.

Tenant Isolation Protection

Offline outbox queues are tagged with the active tenant_id and logged-in user_id. The Laravel reconciliation endpoint validates that each queued student record belongs to the active tenant scoped user session, ensuring complete multi-tenant security during asynchronous synchronization.