QAJ Multiverse Portal

Admin Portal SOP Center

This is the operating manual for the current QAJ admin portal. It is built as a dashboard-linkable HTML page with role filters, process maps, module SOPs, risk checks, and direct links to the portal pages.

Portal Areas Covered19
Core Process Maps8
Primary Roles6
Critical RuleAuditNever bypass logged flows

Operating Principle

The admin portal must be treated as a live operational system. Every edit can affect students, teachers, schedules, payments, access, reports and future audits.

ThinkValidateActCheck ripple effectsDocument

Do Not Do This

  • Do not edit Supabase rows manually when a UI/ledger workflow exists.
  • Do not grant full access to a user because one button is missing.
  • Do not delete used schedules/time blocks/payments/classes without understanding history.
  • Do not generate dues before completion/payment rules are checked.

Access Group SOP

Use this as the first layer before deciding which SOPs a user should see.

Access GroupPurposeAllowed SOP Scope
Super Admin / QBeeFull system owner. Can manage users, access, payments, academic/admin modules and emergency fixes.All modules, SQL-aware maintenance, final approvals, access control.
AdminOperational owner. Handles intake, scheduling, classes, payments if granted, resources, tasks and messages.Students, teachers, courses, batches, individual, teacher times, classes, messages, resources, tasks, selected finance.
Head MuallimaAcademic oversight. Reviews classes, observations, exams, comments and teacher/student academic progress.Head Muallima, classes review, messages, tasks, selected students/teachers/classes.
Teacher / MuallimaTeaching user. Submits class entries, views own students/batches, messages, resources and profile in teacher portal.Teacher portal, own entries, own calendar/times where permitted, messages/resources/policies.
Finance / Non-staff accountLimited operator account for specific payment/admin tasks without full admin visibility.Only selected finance/access actions: allocation, receipt review, blocked account review, reports, etc.
Student / FamilyStudent portal user. Views classes/resources/messages/payments according to family/account rules.Student portal only, not admin portal, unless specially created as staff/non-staff admin account.

Core Process Maps

These are the end-to-end workflows that connect multiple modules. Train users from these first, then send them into individual SOPs.

New Student Intake β†’ Admission β†’ Login β†’ Class Assignment

Registration arrives in Student IntakeAdmin reviews full intake popup and attachmentsAccept or reject with reasonIf accepted, create Student DB row and family groupingCreate login in User ManagementAssign to Individual class or BatchCreate/confirm schedulesPayments fee rule/dues begin from active class status

Teacher Intake β†’ DB β†’ Eligibility β†’ Time β†’ Class Ownership

Teacher intake/profile verifiedTeacher added/updated in Teacher DBCourse/level eligibility savedTeacher time blocks createdTeacher assigned to individual student or batchSchedules/classes generatedTeacher submits entriesHead/admin reviews performance and completion

Course/Level β†’ Batch/Individual Structure

Course is created as individual or groupLevels are created and sortedHead teacher assignedIndividual courses use direct student-teacher assignmentGroup courses use batches and batch studentsSchedules and payments derive from the final structure

Schedule β†’ Class Session β†’ Entry β†’ Month Completion

Teacher time blocks define ownershipSchedules create class sessionsTeacher/admin submits entryReschedules preserve original quota logicReports count done/pending/future/moved/rescheduled/absentMonth completion finalizes academic monthPayment dues/teacher salary generation uses completion data

Receipt β†’ Allocation Ledger β†’ Student Access

Student/family uploads receipt or admin adds receiptReceipt enters pending poolAdmin opens Allocation DeskReceipt is matched to oldest/selected family duesAllocation saves used amount and remaining creditDue shows paid/partially paid/openWrong receipt can be rejected with reasonCancellation restores due/receipt balance through ledger logic

Access Group β†’ Account β†’ Permission β†’ Action

Create linked or standalone accountAssign role/profileOpen Access ControlApply preset or manual feature setSave permissionsUser logs in and sees only allowed modulesSensitive actions still require DB/RLS/function support

Academic Observation β†’ Comment/Exam/Task/Message

Head Muallima reviews class/student/teacher signalsObservation or academic comment is recordedExam request/result is opened if neededTask is created for follow-upMessage thread informs relevant actorResolution is tracked through task/class/exam state

Zoom Verification β†’ Class Review

Admin opens Zoom DashboardSelects month/teacher/entity/classChecks requirement and meeting existenceReviews participants, join delays and recordingsFlags issue or uses admin controlClass entry remains the official academic record

Daily Admin Routine

1Open Admin Launcher and verify logged-in profile.
2Check notifications, pending hub and urgent messages.
3Review today’s classes, missed entries and pending month completion items.
4Check student intake and teacher intake queues.
5Review payment receipts/allocation/blocked accounts only if you own finance access.
6Handle task dashboard and overdue actions.
7End the day by checking what changed and what must be followed tomorrow.

Weekly Control Routine

1Review teacher eligibility, time blocks and active assignments.
2Audit batches and student membership changes.
3Review Head Muallima comments/exams/risk items.
4Review resource library/category relevance.
5Check payments: dues, receipts, allocations, teacher salary preview and blocked accounts.
6Confirm access control for any new staff/non-staff users.
7Back up/commit portal changes through the approved Git workflow.

Module SOPs

Search or filter by role from the left. Each module includes purpose, inputs, outputs, process, risk checks and direct links.

🏠

index.html

Admin Command / Launcher

Main landing point for the admin portal, command dock, online users, finance shortcuts, notifications, global search, and module navigation.

super_adminadminhead_teachernon_staff
Owner / Access

QBee / Super Admin owns the full launcher. Admins and approved staff/non-staff accounts only see permitted cards and actions.

Inputs / Source Data
  • Logged-in Supabase session
  • qaj_user_profiles
  • qaj_admin_feature_permissions
  • Presence and notification records
  • Module page files
Outputs / Result
  • Correct module link opened
  • User routed to allowed section
  • Restricted actions hidden/blocked
  • Dashboard cards visible by permission
Direct Links
Standard Process
1Login through the admin portal.
2Auth guard verifies Supabase session and active user profile.
3Dashboard UI loads the current user, permission map, presence, pending hub, quick finance, search and notifications.
4User selects a module card, command dock item, or finance shortcut.
5Access control layer decides whether the page/action can open.
6If allowed, the destination page opens. If blocked, user stays restricted.
Checks Before Saving / Approving
  • After adding any new module, add it to launcher + access control groups.
  • Never rely only on hiding a button; access must also be enforced by guard/RLS/function logic.
  • Make sure dashboard links are relative so the portal works on GitHub/Netlify/static hosting.
🧭

dashboard.html

QBee Dashboard

High-level operational view for students, teachers, batches, payments, classes, resources, tasks, and messages.

super_adminadminhead_teacher
Owner / Access

QBee and senior admins. Head Muallima may use academic and observation-related views if granted.

Inputs / Source Data
  • Students, teachers, batches, courses, levels
  • Class sessions and attendance
  • Payment dues, receipts, sponsorships and unblocks
  • Academic comments and exams
  • User presence
Outputs / Result
  • Profile/detail views
  • Operational KPIs
  • Clickable records and action shortcuts
  • Printable current profile when needed
Direct Links
Standard Process
1Open Dashboard from the launcher.
2Click Refresh Data to reload all key datasets.
3Use top filters by area: All, Students, Teachers, Batches, Payments, Classes, Resources, Tasks, Messages.
4Search or click a KPI/card to inspect related records.
5Use direct action links to open the correct module when updates are required.
Checks Before Saving / Approving
  • Dashboard is for visibility and routing, not heavy data editing.
  • If a KPI looks wrong, inspect the source module before making DB changes.
  • Use month filters carefully for payment/class statistics.
πŸŽ“

students.html

Students

Manage student database, intake registrations, family grouping, student cards, admission from intake, status changes, and deletion logs.

super_adminadminhead_teacher
Owner / Access

Admin handles intake/admission and data correction. Head Muallima may view academic/student info depending on access.

Inputs / Source Data
  • qaj_course_registrations intake records
  • qajp5_student_db
  • qaj_courses and qaj_course_levels
  • Batch and individual assignment records
  • Registration files, receipts and audio links
Outputs / Result
  • New or updated student record
  • Accepted/rejected/deleted intake status
  • Family/account grouping
  • Student card view
  • In-class status synchronization
Direct Links
Standard Process
1Open Students and load Student DB or Intake view.
2Review new intake registrations and inspect the full registration detail popup.
3For admission, verify name, contact, WhatsApp, email, age, location, course choices, parent/family relationship and attached files.
4Generate or confirm SID.
5Use family suggestions to connect siblings/parent accounts where relevant.
6Admit to Student DB, or reject with a clear reason.
7For existing students, open student card or edit modal, update only verified details, and save.
8For deletions, use the delete modal so the action is logged instead of silently removing records.
Checks Before Saving / Approving
  • Do not create duplicate SIDs.
  • Check family phone/email before setting family groups.
  • Keep rejected intake records separated; do not reuse old rejected data blindly.
  • Student status must match real class status before payments/classes rely on it.
πŸ‘©β€πŸ«

teachers.html

Teachers

Manage teacher database, teacher intake, eligibility, course qualifications, head teacher assignments, contact links, and teacher cards.

super_adminadminhead_teacher
Owner / Access

Admin maintains teacher profile/status. Head Muallima may review teaching and academic suitability.

Inputs / Source Data
  • qajp5_teacher_db
  • qajp5_teacher_intake
  • qaj_teacher_course_qualifications
  • qaj_course_head_teachers
  • qaj_courses and levels
Outputs / Result
  • Teacher profile
  • Active/on-leave/resigned/inactive state
  • Course/level eligibility
  • Head teacher assignment
  • WhatsApp/email contact actions
Direct Links
Standard Process
1Open Teachers and load the teacher database.
2Search/filter teacher by name, TID, contact, status or eligibility.
3Open teacher card for full details.
4For new teacher intake, review intake data then approve to DB after verification.
5Set staff category and status correctly.
6Open eligibility section and select course/level/role qualifications.
7Assign head teacher responsibility only through the course/head teacher flow.
8Save and recheck the teacher appears in courses, batches, individual assignment and teacher times.
Checks Before Saving / Approving
  • A teacher cannot be scheduled correctly until eligibility and status are right.
  • Do not mark resigned teachers active just to make a dropdown show them.
  • Changing eligibility can affect batches, individual assignment, schedules, Zoom and salary rules.
πŸ“š

courses.html

Courses & Levels

Manage course catalog, course kind, eligibility mode, course levels, head teacher, and batch prefixes.

super_adminadminhead_teacher
Owner / Access

Super Admin/Admin. Head teacher can guide academic structure but should not casually alter production course codes.

Inputs / Source Data
  • qaj_courses
  • qaj_course_levels
  • qaj_course_head_teachers
  • Teacher DB
Outputs / Result
  • Active course list
  • Levels with sort order
  • Head teacher assignment
  • Batch prefix rules for group courses
Direct Links
Standard Process
1Open Courses and load course records.
2Add or edit a course only after confirming whether it is Individual or Group.
3For Individual courses, do not use a batch prefix.
4For Group courses, assign a clean batch prefix such as QAB/BIS/QYH.
5Assign head teacher from active/on-leave qualified staff.
6Select a course to manage levels.
7Add/edit levels with clear code, name, sort order and active status.
8Recheck Batches and Individual Classes after course/level changes.
Checks Before Saving / Approving
  • THAJ/individual logic is different from group courses.
  • Changing a code/prefix can affect batch generation and historical reports.
  • Do not delete active levels used by students/batches. Prefer deactivation if already used.
πŸ‘₯

batches.html

Batches

Manage group course batches, schedules, teachers, locations, merged batches and batch students.

super_adminadminhead_teacher
Owner / Access

Admin manages batch creation/structure. Head Muallima may review class/academic structure if permitted.

Inputs / Source Data
  • qaj_batches
  • qaj_batch_students
  • qaj_batch_teachers
  • qaj_batch_schedule_slots
  • qaj_teacher_time_blocks
  • locations
  • courses/levels
  • student/teacher DB
Outputs / Result
  • Active batch
  • Batch teacher list
  • Batch students
  • Schedule slots
  • Linked teacher time blocks
  • Past student list
Direct Links
Standard Process
1Open Batches and load active batches.
2Search by batch code, course, level, day/time, merged batch, student name or SID.
3Add batch: choose course, level, mode, location, schedule and notes.
4Assign qualified teachers with correct role/eligibility.
5Select matching teacher time block groups for schedule ownership.
6Bulk add students only after confirming they belong to that course/level/group.
7Remove selected students using the provided action, not manual DB deletion.
8Use Save Locations for reusable location data.
9Review past students separately when needed.
Checks Before Saving / Approving
  • Group courses use batches; individual THAJ-style assignment must not be forced into batch logic.
  • Teacher time blocks are the ownership source; avoid schedule changes without checking teacher availability/time usage.
  • Batch changes ripple into classes, month completion, dues generation, teacher salary and Zoom.
πŸ§‘β€πŸŽ“

individual.html

Individual Classes

Assign individual-course students to eligible teachers using teacher time blocks, manage active/past assignments, and transfer assignments safely.

super_adminadminhead_teacher
Owner / Access

Admin creates/updates assignments. Head Muallima may view academic load and student-teacher matching if allowed.

Inputs / Source Data
  • qaj_individual_class_assignments
  • qaj_teacher_time_blocks
  • qaj_teacher_course_qualifications
  • students, teachers, courses, levels
  • qaj_class_sessions for conflict/history checks
Outputs / Result
  • Active individual assignment
  • Teacher-student-course-level link
  • One or two time blocks depending on course days per week
  • Assignment transfer or end history
Direct Links
Standard Process
1Open Individual Classes and load the app.
2Search or choose an eligible teacher.
3Click Add Student Assignment.
4Select unassigned active student, course, level and eligible teacher role.
5Select available teacher time block(s). If the course needs two weekly classes, select two blocks.
6Submit assignment and confirm it appears under teacher active students.
7For changes, open the assignment detail and transfer/end only through the provided modal.
8If stale time blocks exist, release stale blocks via the built-in flow before reassigning.
Checks Before Saving / Approving
  • Do not assign an already-assigned student twice.
  • Do not use unavailable/utilized teacher time blocks.
  • Transfers affect schedules, class sessions, payment generation and teacher workload.
⏱️

teacher-times.html

Teacher Times

Manage teacher availability/time blocks and inspect used/unused blocks across individual and group classes.

super_adminadminhead_teacher
Owner / Access

Admin controls time ownership. Teacher availability data should be verified with teachers before changes.

Inputs / Source Data
  • qaj_teacher_time_blocks
  • teacher DB
  • teacher eligibility
  • individual assignments
  • batches
  • students
  • courses and levels
Outputs / Result
  • Available time blocks
  • Utilized blocks linked to student/batch
  • Teacher time table
  • Day-based availability view
  • Block details
Direct Links
Standard Process
1Open Teacher Times and load teachers.
2Use the day panel and filters to view all available slots by day, course type, course, level/role or teacher.
3Open a teacher card to inspect their blocks.
4Add time block with day, start time, duration and source notes.
5Edit/reactivate/deactivate/delete only when the block is not actively used.
6Use utilized detail popup to see which student/batch owns the time.
7Bulk select unused blocks only after filtering carefully.
Checks Before Saving / Approving
  • Teacher time blocks represent ownership, not just availability.
  • Avoid overlapping blocks.
  • Do not delete utilized blocks tied to active assignments/sessions.
  • Time changes ripple into classes, Zoom, payments and reports.
πŸ“

classes.html

Classes & Entries

Review schedules, submit/admin quick entries, manage individual/group class records, exams, comments, monthly reports, schedule creation, and month completion.

super_adminadminhead_teacherteacher
Owner / Access

Teachers submit entries in teacher portal. Admin/head teacher review, correct and complete month workflows.

Inputs / Source Data
  • qaj_class_sessions
  • qaj_session_student_attendance
  • qaj_session_resources
  • qaj_teacher_time_blocks
  • assignments, batches, students, teachers
  • exam requests/results
  • academic comments
  • month completion logs
Outputs / Result
  • Submitted class entries
  • Attendance rows
  • Resource links
  • Exam requests/results
  • Academic comments
  • Monthly reports/PDF
  • Month completion records
Direct Links
Standard Process
1Open Classes and click View Classes.
2Choose Individual or Group mode.
3Select teacher/student or course/batch.
4Use month selector to inspect the month.
5Open a class box to see schedule details and entry status.
6Submit Quick Entry only when the real class outcome is verified.
7Use Exam Requests and Comments from the top actions.
8Use monthly report for teacher/batch summary.
9Use Create Schedules from the upgrade flow when schedules are missing.
10Use Month Completion only after checking required completed/rescheduled/missing counts.
11Use Remove Schedules only for controlled cleanup; never as a casual fix.
Checks Before Saving / Approving
  • Original scheduled sessions are the quota backbone. Rescheduled sessions must be traced back properly.
  • Class outcomes must separate student responsibility vs teacher responsibility.
  • Future sessions should not be counted as missing.
  • Month completion affects dues and teacher payments.
πŸŒ™

head-muallima.html

Head Muallima

Academic oversight dashboard for observations, comments, exam requests/results, risk visibility and course/teacher/student review.

super_adminadminhead_teacher
Owner / Access

Head Muallima owns academic observation and escalation. Admin supports system/data corrections.

Inputs / Source Data
  • qaj_academic_comments
  • qaj_exam_requests
  • qaj_exam_results
  • qaj_class_sessions
  • qaj_user_profiles
  • student/teacher/course/batch data
Outputs / Result
  • Academic risk view
  • Observation details
  • Exam/admin follow-up
  • Linked actions to Classes, Messages and Tasks
Direct Links
Standard Process
1Open Head Muallima and refresh dashboard.
2Select month/course/teacher filters as needed.
3Review risk indicators, pending exams, comments and observation items.
4Open related class/message/task link for follow-up.
5Use Messages for communication and Tasks for assigned action.
6Do not treat early sparse observations as final judgement without context.
Checks Before Saving / Approving
  • Observation data quality depends on the head teacher’s entry habit.
  • β€œInform to Management” type columns are not the main decision point in the current logic.
  • Academic findings should create traceable tasks/messages, not only verbal reminders.
πŸ’³

payments.html

Payments / Finance Control

Manage family dues, receipts, allocations, sponsorships, blocked/unblocked accounts, old pending dues, admin receipts, fee rules, dues generation and teacher payments.

super_adminadminfinancenon_staff
Owner / Access

Finance/admin users with explicit access. Non-staff finance accounts can be granted selected actions through Access Control.

Inputs / Source Data
  • qaj_student_payment_dues
  • qaj_student_payment_submissions
  • qaj_payment_allocations
  • qaj_payment_fee_rules
  • qaj_student_fee_rule_overrides
  • qaj_student_sponsorships
  • qaj_student_payment_unblocks
  • qaj_teacher_salary_rules
  • qaj_teacher_salary_monthly_view
  • month completion records
  • students, batches, assignments, locations
Outputs / Result
  • Generated monthly dues
  • Approved/rejected receipts
  • Receipt allocation ledger
  • Available family credit
  • Blocked/unblocked student accounts
  • Teacher salary preview/payment status
  • Fund transfer PDF/control
Direct Links
Standard Process
1Open Admin Payments or Payments dashboard.
2Use Generate Dues only after class/month completion status is understood.
3Check pending/hold/completed groups before generating.
4Review fee rule match, sponsorship, discount and teacher payable estimate before saving due.
5For receipts, open Receipt/Allocation Desk.
6Select receipt pool and allocate to oldest/selected dues, including family/sibling dues when applicable.
7Reject wrong receipts with a required reason.
8Cancel allocations only through the provided action so due/receipt balance is restored.
9Use Blocked Accounts to review access restrictions and unblocks.
10Use Teacher Payments to inspect previous/current month logic, payable/non-payable rows, split rules and transfer status.
11Generate fund transfer PDF from the current finance module, not an older cached page.
Checks Before Saving / Approving
  • Receipt month is reference only; allocations can cross months if ledger allows.
  • One receipt can pay multiple dues and leave future credit.
  • Do not directly edit DB amounts after allocation; use UI actions or dedicated SQL after understanding ledger impact.
  • Teacher payment exclusions/non-payable rows must stay visible with reason.
  • Payment changes are high-risk because they affect student access and teacher salary.
πŸ’¬

messages.html

Messages / Feed

Admin communication center for conversations, feed posts, groups, comments, likes, urgent messages, and task-linked communication.

super_adminadminhead_teacherteacherstudent
Owner / Access

Admin/QBee manages official communication. Teachers/students interact within allowed actor scope.

Inputs / Source Data
  • qaj_messages
  • qaj_message_groups
  • qaj_message_group_members
  • qaj_feed_posts
  • qaj_feed_comments
  • qaj_feed_likes
  • qaj_admin_tasks
  • profiles, teachers, students, courses
Outputs / Result
  • Conversation threads
  • Feed posts/comments
  • Unread counts
  • Group messages
  • Linked task messages
Direct Links
Standard Process
1Open Messages and load app.
2Choose Conversation or Feed mode.
3Filter by all/unread/urgent/groups/admin as needed.
4Open a conversation card and reply in the chat panel.
5Create new message or group only for a valid audience.
6For feed, open thread, comment/like, and use moderation options where available.
7Use Messages for traceable follow-up from Head Muallima, Tasks, Classes and Payments.
Checks Before Saving / Approving
  • Actor identity must match current profile role.
  • Do not create duplicate conversations for the same purpose if an existing thread exists.
  • Urgent communication should be followed with a task when action is required.
πŸ“¦

resources.html

Resources

Manage resource categories, files/links, featured resources, audience targeting and course/level eligibility access.

super_adminadminhead_teacherteacherstudent
Owner / Access

Admin uploads/manages resources. Academic leads decide audience/category rules.

Inputs / Source Data
  • qaj_resources
  • qaj_resource_categories
  • qaj_courses
  • qaj_course_levels
  • File/link delivery details
Outputs / Result
  • Resource library
  • Category rules
  • Audience access summary
  • Featured resources
  • Course/level eligibility pills
Direct Links
Standard Process
1Open Resources and load app.
2Choose Resources or Categories view.
3Create/edit category with audience and eligibility rules.
4Create/edit resource, choose delivery type, upload file or paste link.
5Select audience: students, teachers, course-specific or level-specific groups.
6Preview access summary before saving.
7Open resource detail to confirm file/link opens correctly.
8Delete only if not needed; prefer deactivation/status handling if future audit is required.
Checks Before Saving / Approving
  • Resource button problems often come from link/file/open behavior on mobile; test on phone after upload.
  • Eligibility rules must match course/level codes.
  • Avoid duplicate resources; use category and search before adding.
βœ…

task-management.html

Task Management

Create, assign, track and auto-complete operational tasks connected to teachers, students, sessions, assignments and monthly workflows.

super_adminadminhead_teacherteacher
Owner / Access

Admin/Head Muallima create follow-up tasks. Teachers complete assigned actions where allowed.

Inputs / Source Data
  • qaj_tasks
  • teachers/students
  • class sessions
  • individual assignments
  • batches
  • teacher time blocks
Outputs / Result
  • Open/in-progress/completed tasks
  • Auto-completed workflow tasks
  • Action URLs
  • Template tasks
Direct Links
Standard Process
1Open Tasks and load data.
2Filter by status/search to find current work.
3Open task detail to inspect target record and action URL.
4Create task: select type, assignee, target table/record, due date, completion rule and payload.
5For workflow tasks, sync monthly workflow tasks.
6Run auto completion check to close tasks where source record shows done.
7Use manual completion only when the task is truly finished and cannot be auto-verified.
Checks Before Saving / Approving
  • A task without a target/action is weak; link it to a record where possible.
  • Overdue tasks should be escalated, not ignored.
  • Auto-completion rules must match real table fields.
πŸ”

user-management.html

User Management

Create and manage portal login accounts for teachers, students, staff, admins and standalone/non-staff users; reset passwords and share credentials.

super_adminadmin
Owner / Access

Super Admin/Admin only. This is identity-level control and should be treated as sensitive.

Inputs / Source Data
  • qaj_portal_user_accounts
  • qaj_user_profiles
  • teacher DB
  • student DB
  • Supabase Edge Function qaj-admin-users
Outputs / Result
  • Portal account
  • qaj.local login email
  • Temporary password
  • Linked profile role
  • Credential WhatsApp share text
  • Disabled/enabled account state
Direct Links
Standard Process
1Open User Management and load accounts.
2Review Total/Teacher/Student/Disabled summary.
3Search or filter existing accounts first.
4Check Missing People to find active teachers/students without accounts.
5Click Create Login.
6Choose account type: teacher/student/admin/staff/non-staff standalone as required.
7For linked accounts, select the person. For standalone accounts, use a clear username and role.
8Generate temporary password, create account, and copy/share credentials securely.
9Use Reset Password when needed.
10Use Edit Role carefully; role changes affect access and visibility.
11Disable accounts instead of deleting when history matters.
Checks Before Saving / Approving
  • Username/email format is qaj.local internally.
  • Do not give finance/admin access through role alone; use Access Control features too.
  • Non-staff accounts must have the minimum possible permissions.
πŸ›‘οΈ

admin-access.html

Access Control

Control what each admin/staff/non-staff account can see and do, including module access, finance actions, approvals, allocations, generation and sensitive tools.

super_adminadmin
Owner / Access

Super Admin is final owner. Admin may manage only if explicitly trusted.

Inputs / Source Data
  • qaj_admin_feature_permissions
  • qaj_portal_user_accounts
  • Feature groups and dependency map
Outputs / Result
  • Per-account permission set
  • Preset-based access
  • Locked critical features
  • Saved feature permissions
Direct Links
Standard Process
1Open Access Control and load app.
2Select account from the account list.
3Use role filter to narrow admins/accounts/teachers.
4Apply a preset only if it matches the person’s real job.
5Open feature groups and tick only needed access.
6Respect locked/dependent features.
7Save access and reload once to confirm persistence.
8For non-staff finance operators, grant only specific finance actions such as receipt allocation or blocked account review, not full admin power.
Checks Before Saving / Approving
  • UI permission is not security by itself; RLS and Edge Function rules must support it.
  • Approvals, allocations, due generation, teacher salary and access management are high-risk features.
  • Never grant β€œOpen All” permanently unless the person is truly Super Admin level.
πŸŽ₯

zoom-dashboard.html

Zoom Dashboard

Visibility/control dashboard for Zoom class readiness, teacher connection status, meeting records, participants, recordings, and Zoom requirements per teacher/student/class.

super_adminadminhead_teacher
Owner / Access

Admin controls Zoom requirement and health. Teachers connect their Zoom where implemented.

Inputs / Source Data
  • qaj_class_sessions
  • qaj_class_meetings
  • qaj_class_meeting_participants
  • qaj_class_recordings
  • qaj_zoom_teacher_admin_controls
  • qaj_zoom_student_access_controls
  • qaj_zoom_class_controls
  • attendance/resources/session data
Outputs / Result
  • Zoom readiness KPIs
  • Teacher cards
  • Student/batch class cards
  • Meeting/participant/recording detail
  • Admin control flags
Direct Links
Standard Process
1Open Zoom Dashboard and load control room.
2Select view/month/date range.
3Select teacher, then student/batch/class.
4Check whether Zoom is required, disabled, missing or healthy.
5Inspect meeting start time, due time, teacher delay, first student join, student delay and recordings.
6Use admin controls to force disable/require Zoom only with clear reason.
7If SQL tables are missing, install the provided Zoom SQL before expecting full dashboard operation.
Checks Before Saving / Approving
  • This dashboard is visibility/control first; OAuth approval/meeting automation may be separate.
  • Temporary allowed links may work but should not become the permanent architecture.
  • Zoom data must not replace teacher class entry; it supports verification.
☎️

qaj-google-contacts-students.js

Google Contacts Sync

Sync/prepare student contact records for Google Contacts using smart naming, phone normalization and sync logs.

super_adminadmin
Owner / Access

Admin user with Google/Edge Function access.

Inputs / Source Data
  • Student rows loaded directly
  • Google Contacts Edge Function
  • Refresh token settings SQL
  • Sync logs/contact rows
Outputs / Result
  • Merged contact view
  • Sync status
  • Google contact create/update actions
  • Debug/log view
Direct Links
Standard Process
1Open the Students section where the contacts tool is injected.
2Load student rows and contact rows.
3Review merged rows and status.
4Filter rows needing create/update.
5Trigger sync only after confirming phone/name format.
6Check logs after sync.
Checks Before Saving / Approving
  • Do not sync dirty student data; fix Student DB first.
  • Phone numbers must be normalized before pushing to Google.
  • If refresh token settings are missing, run the SQL/settings setup first.
πŸ“²

admin-profile.html

Profile, Notifications, PWA

Handle current user profile, bank details/profile data, notifications, online presence, service worker and install behavior.

super_adminadminhead_teacherteacherstudentnon_staff
Owner / Access

Every user keeps own profile clean. Admin monitors notification/presence system.

Inputs / Source Data
  • qaj_user_profiles
  • admin-current-user.js
  • admin-notifications.js
  • admin-online-presence.js
  • service-worker.js
  • manifest.webmanifest
  • pwa-register.js
Outputs / Result
  • Updated profile/bank details
  • Password change
  • Notification badge/list
  • Online status
  • Installable PWA shell
Direct Links
Standard Process
1Open My Profile from the launcher.
2Update profile fields and save.
3Update bank details if relevant and save separately.
4Use Change Password for credential updates.
5Use notification bell to review unread alerts.
6Use Install button when available to install the app on device.
7Hard refresh or clear service worker cache after major deployments if stale UI appears.
Checks Before Saving / Approving
  • Bank details are sensitive; restrict visibility where possible.
  • Service worker cache can show old portal versions; bump versions or hard refresh after replacements.
  • Notifications are not guaranteed instant unless realtime/subscription setup is fully active.

Emergency / Mistake Recovery SOP

When Something Looks Wrong

1Stop changing related records. Do not keep clicking fixes.
2Identify the exact module, account, SID/TID/batch/month/payment receipt/due/session affected.
3Take screenshots of the UI and browser console error.
4Check whether the issue is UI cache/service worker, permission/RLS, missing SQL table, stale JS patch, or real data corruption.
5Use the official UI reversal action if available: cancel allocation, reject receipt, disable account, deactivate block, remove schedule safely.
6Only run SQL/manual fixes after confirming schema, constraints, triggers, RLS and affected rows.

Common Causes

  • Old cached JS from service worker/browser.
  • Access granted in UI but missing RLS/Edge Function permission.
  • Patch loaded in wrong order, especially in Payments.
  • Missing SQL migration table/view/RPC.
  • Month selector using wrong month logic.
  • Manual DB edit bypassing audit/ledger logic.

Dashboard Link Snippet

Place this file in the same folder as your admin portal files, then add a card/link in your dashboard or launcher.

<a class="app-card" href="qaj-admin-sop-center.html">
  <div class="icon">πŸ“˜</div>
  <h2>SOP Center</h2>
  <p>Admin processes, access-group SOPs, module guides and process maps.</p>
</a>
↑ Top