<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8"> 

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>EduTrack — Complete User Guide</title>

<style>

/* ── Reset & Base ──────────────────────────────────────── */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}

html{font-size:16px;scroll-behavior:smooth;}

body{font-family:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;background:#f3f6fc;color:#1e2a3e;line-height:1.5;}

h1,h2,h3,h4,.toc,.cover .subtitle{letter-spacing:-0.01em;}

p{margin-bottom:1rem;}

ul,ol:not(.steps){padding-left:1.5rem;margin:0.5rem 0 1rem;}

li{margin-bottom:0.3rem;}

a{color:#1a7b68;text-decoration:none;}

a:hover{text-decoration:underline;}



/* Container */

.container{max-width:1100px;margin:0 auto;padding:2rem 2rem 2.5rem;background:white;border-radius:2rem;box-shadow:0 20px 35px -12px rgba(0,0,0,0.08);margin-bottom:3rem;}



/* Cover */

.cover{min-height:85vh;background:linear-gradient(125deg,#0b2b3f 0%,#134b6b 45%,#1b7a5c 100%);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 2rem;text-align:center;color:white;border-radius:0 0 3rem 3rem;margin-bottom:2rem;position:relative;box-shadow:0 15px 30px -10px rgba(0,0,0,0.2);}

.cover .logo-ring{width:110px;height:110px;border-radius:50%;background:rgba(255,255,255,0.12);backdrop-filter:blur(2px);border:2px solid rgba(255,255,255,0.5);display:flex;align-items:center;justify-content:center;font-size:3.2rem;margin-bottom:1.8rem;box-shadow:0 8px 18px rgba(0,0,0,0.2);}

.cover h1{font-size:3.8rem;font-weight:800;letter-spacing:-0.02em;margin-bottom:0.5rem;background:linear-gradient(135deg,#ffffff,#e0f0fa);background-clip:text;-webkit-background-clip:text;color:transparent;}

.cover .subtitle{font-size:1.45rem;font-weight:500;opacity:0.92;margin-bottom:0.6rem;}

.cover .tagline{font-size:1rem;opacity:0.8;margin-bottom:2.2rem;}

.cover .meta{font-size:0.85rem;opacity:0.7;margin-top:2rem;border-top:1px solid rgba(255,255,255,0.2);padding-top:1.5rem;}

.cover .badge{display:inline-block;background:rgba(255,255,255,0.18);border:1px solid rgba(255,255,255,0.35);border-radius:40px;padding:0.4rem 1.5rem;font-size:0.8rem;font-weight:500;letter-spacing:0.3px;margin-bottom:1rem;backdrop-filter:blur(2px);}



/* TOC */

.toc{background:#ffffff;border:1px solid #e9edf2;border-radius:1.5rem;padding:2rem 2rem 2rem 2.5rem;margin-bottom:2.8rem;box-shadow:0 5px 15px rgba(0,0,0,0.02);}

.toc h2{font-size:1.1rem;font-weight:700;color:#1a6d5e;margin-bottom:1.25rem;text-transform:uppercase;letter-spacing:1px;border-left:4px solid #1a6d5e;padding-left:1rem;}

.toc ol{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:0.4rem 1rem;padding-left:0;list-style:none;}

.toc li{margin:0.3rem 0;font-size:0.88rem;}

.toc a{color:#2c5a6e;text-decoration:none;font-weight:500;transition:color 0.2s;border-bottom:1px dotted transparent;}

.toc a:hover{color:#117f6b;border-bottom-color:#117f6b;}

.toc .section-group{font-weight:700;color:#1f3b4c;margin-top:0.5rem;font-size:0.85rem;letter-spacing:0.3px;grid-column:1/-1;padding-top:0.5rem;}



/* Section intro */

.section-intro{background:linear-gradient(115deg,#eef4fa 0%,#ffffff 100%);border-left:6px solid #1f846b;border-radius:1.2rem;padding:1.8rem 2rem;margin:3rem 0 2rem;box-shadow:0 2px 6px rgba(0,0,0,0.02);}

.section-intro .section-num{font-size:0.7rem;font-weight:600;text-transform:uppercase;letter-spacing:1.5px;color:#1f846b;margin-bottom:0.4rem;}

.section-intro h2{font-size:1.8rem;font-weight:700;color:#0c4e41;margin-bottom:0.5rem;}

.section-intro p{font-size:0.95rem;color:#2c4c5e;}



/* Module titles */

h2.module-title{font-size:1.65rem;font-weight:700;color:#195d6b;margin:2.5rem 0 0.8rem;padding-bottom:0.5rem;border-bottom:3px solid #dce5ec;display:inline-block;width:auto;}

h3.sub-title{font-size:1.2rem;font-weight:600;color:#2c5a6e;margin:1.8rem 0 0.8rem;letter-spacing:-0.2px;}



/* Role badges */

.role-badge{display:inline-block;padding:0.2rem 0.8rem;border-radius:30px;font-size:0.7rem;font-weight:600;margin:0 2px 4px 0;background:#eef2f5;color:#2c3e50;}

.role-admin{background:#fef2e0;color:#b85b14;}

.role-head{background:#e2edf7;color:#1a5d9c;}

.role-teacher{background:#e0f2e9;color:#1b6e4b;}

.role-account{background:#f3e5f5;color:#7b2c8b;}

.role-parent{background:#eaeef5;color:#3b6e8f;}

.role-registrar{background:#feedd9;color:#aa6f20;}

.role-ai{background:#fdf2ff;color:#6d28d9;}

.role-cashier{background:#fff0f6;color:#be185d;}



/* Steps */

.steps{counter-reset:step;list-style:none;padding:0;margin:1rem 0 1.6rem;}

.steps li{counter-increment:step;display:flex;gap:1rem;margin-bottom:1rem;align-items:flex-start;}

.steps li::before{content:counter(step);min-width:28px;height:28px;background:#1f846b;color:white;border-radius:30px;font-size:0.8rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:2px;box-shadow:0 2px 6px rgba(0,0,0,0.05);}



/* Callouts */

.callout{border-left:5px solid;border-radius:1rem;padding:1rem 1.5rem;margin:1.5rem 0;font-size:0.9rem;background:#ffffff;box-shadow:0 1px 3px rgba(0,0,0,0.02),0 0 0 1px #f0f2f5 inset;}

.callout-tip{border-color:#2b9348;background:#f6fef9;}

.callout-warn{border-color:#e67e22;background:#fff8ed;}

.callout-info{border-color:#2c7da0;background:#f1f9fe;}

.callout-ai{border-color:#7c3aed;background:#faf5ff;}

.callout strong{font-weight:700;}



/* Tables */

table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:0.88rem;border-radius:1rem;overflow:hidden;box-shadow:0 1px 2px rgba(0,0,0,0.03);}

th{background:#1f5e6e;color:white;padding:0.9rem 1rem;text-align:left;font-weight:600;}

td{padding:0.8rem 1rem;border-bottom:1px solid #e9edf2;vertical-align:top;background-color:#ffffff;}

tr:nth-child(even) td{background-color:#fafcfe;}

td strong{color:#1f6d5c;}



/* Field grid */

.field-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:0.9rem;margin:1rem 0 1.5rem;}

.field-item{background:#fbfdff;border:1px solid #e2e9f0;border-radius:1rem;padding:0.8rem 1rem;font-size:0.85rem;transition:0.1s;}

.field-item .label{font-weight:700;color:#1f4e5c;display:block;margin-bottom:0.2rem;}

.field-item .hint{color:#5e7c8c;font-size:0.75rem;}

.field-required .label::after{content:" *";color:#e05252;}



/* Code */

code{background:#eef2f7;color:#c7493c;padding:0.2rem 0.4rem;border-radius:8px;font-size:0.8rem;font-family:'SF Mono','JetBrains Mono',monospace;}



hr{border:none;border-top:1px solid #e2e8f0;margin:2.5rem 0;}



.footer{text-align:center;color:#6e8e9e;font-size:0.75rem;padding:2rem 0 1rem;border-top:1px solid #eef2f8;margin-top:3rem;}



/* Feature grid for module overviews */

.feat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:0.8rem;margin:1rem 0 1.5rem;}

.feat-card{background:#f7fbff;border:1px solid #dce8f0;border-radius:0.75rem;padding:0.9rem 1rem;border-left:3px solid #1f846b;}

.feat-card.orange{border-left-color:#e67e22;}

.feat-card.purple{border-left-color:#7c3aed;}

.feat-card h4{font-size:0.88rem;font-weight:700;color:#1f4e5c;margin-bottom:0.25rem;}

.feat-card p{font-size:0.78rem;color:#4a6878;margin-bottom:0;line-height:1.4;}



/* Responsive */

@media (max-width:700px){

  .container{padding:1.5rem;}

  .cover h1{font-size:2.5rem;}

  h2.module-title{font-size:1.4rem;}

  .toc ol{grid-template-columns:1fr;}

}

@media print{

  body{background:white;font-size:11pt;color:black;}

  .cover{background:#1e4a6e;color:white;-webkit-print-color-adjust:exact;print-color-adjust:exact;border-radius:0;}

  .container{box-shadow:none;padding:0.2in;max-width:100%;}

  .toc,.callout,.section-intro{break-inside:avoid;box-shadow:none;}

  .no-print{display:none;}

  a{text-decoration:none;color:black;}

  .toc a{color:#0f5b4b;}

  .page-break{page-break-before:always;}

}

</style>

</head>

<body>



<!-- COVER -->

<div class="cover">

  <div class="logo-ring">🎓</div>

  <div class="badge">School Management System</div>

  <h1>EduTrack</h1>

  <p class="subtitle">Complete User Guide</p>

  <p class="tagline">Step-by-step instructions for every feature, every module, and every role</p>

  <div class="meta">

    For Administrators · Headteachers · Registrars · Teachers · Accountants · Cashiers · Parents<br>

    Version 2.0 &nbsp;·&nbsp; 2025 &nbsp;·&nbsp; Oric Network Limited

  </div>

</div>



<!-- TABLE OF CONTENTS -->

<div class="container">

<div class="toc">

  <h2>Table of Contents</h2>

  <ol>

    <li class="section-group">Getting Started</li>

    <li><a href="#login">1. Logging In &amp; Out</a></li>

    <li><a href="#nav">2. Navigating the System</a></li>

    <li><a href="#dashboard-overview">3. Dashboard Overview</a></li>

    <li><a href="#profile">4. Your Profile &amp; Password</a></li>



    <li class="section-group">Administration</li>

    <li><a href="#settings">5. System Settings</a></li>

    <li><a href="#users">6. User Accounts</a></li>

    <li><a href="#classes">7. Classes &amp; Subjects</a></li>

    <li><a href="#staff">8. Staff Management</a></li>

    <li><a href="#students">9. Students</a></li>

    <li><a href="#parents-link">10. Linking Parent Accounts</a></li>



    <li class="section-group">Finance</li>

    <li><a href="#fees">11. Fee Structures</a></li>

    <li><a href="#payments">12. Recording Payments</a></li>

    <li><a href="#express">13. Express Fee Collection (QR)</a></li>

    <li><a href="#online-pay">14. Online Payments</a></li>

    <li><a href="#expenses">15. Expenses</a></li>

    <li><a href="#coupons">16. Discount Coupons</a></li>



    <li class="section-group">Academic</li>

    <li><a href="#attendance">17. Attendance Register</a></li>

    <li><a href="#timetable">18. Timetable</a></li>

    <li><a href="#exams">19. Exams &amp; AI Question Generator</a></li>

    <li><a href="#terminal-reports">20. Terminal Report Cards</a></li>

    <li><a href="#reports">21. Financial Reports</a></li>



    <li class="section-group">Communication</li>

    <li><a href="#communication">22. Announcements &amp; Messages</a></li>

    <li><a href="#alerts">23. Alerts &amp; SMS</a></li>



    <li class="section-group">AI &amp; Analytics</li>

    <li><a href="#ai-agent">24. RBC AI Agent</a></li>

    <li><a href="#ai-analytics">25. AI Analytics &amp; Forecasting</a></li>

    <li><a href="#at-risk">26. At-Risk Student Detection</a></li>



    <li class="section-group">Parent Portal</li>

    <li><a href="#portal-login">27. Logging into the Parent Portal</a></li>

    <li><a href="#portal-fees">28. Viewing &amp; Paying Fees</a></li>

    <li><a href="#portal-info">29. Attendance, Results &amp; Timetable</a></li>

    <li><a href="#portal-offline">30. Offline Mode &amp; PWA Install</a></li>



    <li class="section-group">Canteen Module</li>

    <li><a href="#canteen-setup">31. Canteen Setup &amp; Sessions</a></li>

    <li><a href="#canteen-scanner">32. Canteen Scanner</a></li>

    <li><a href="#canteen-cook">33. Cook's Dashboard</a></li>

    <li><a href="#canteen-reports">34. Canteen Reports</a></li>



    <li class="section-group">Data &amp; Reference</li>

    <li><a href="#migration">35. Importing Data (CSV / Excel)</a></li>

    <li><a href="#roles">36. Roles &amp; Permissions Matrix</a></li>

    <li><a href="#tips">37. Troubleshooting &amp; FAQ</a></li>

  </ol>

</div>



<!-- ══════════ PART 1: GETTING STARTED ══════════ -->

<div class="section-intro">

  <div class="section-num">Part 1</div>

  <h2>Getting Started</h2>

  <p>Signing in, navigating the system, understanding your dashboard, and keeping your account secure.</p>

</div>



<h2 class="module-title" id="login">1. Logging In &amp; Logging Out</h2>

<p>EduTrack is fully web-based. Open any browser (Chrome, Edge, or Firefox) and go to your school's EduTrack URL.</p>

<h3 class="sub-title">How to Log In</h3>

<ol class="steps">

  <li>Type your <strong>Username</strong> in the first field.</li>

  <li>Type your <strong>Password</strong> in the second field.</li>

  <li>Click the <strong>Log In</strong> button.</li>

  <li>The system takes you directly to your role-specific dashboard.</li>

</ol>

<div class="callout callout-info"><strong>First time?</strong> Your username and password are created by the school administrator. Ask your admin if you have not received your login details.</div>



<h3 class="sub-title">Forgot Your Password?</h3>

<ol class="steps">

  <li>Click <strong>Forgot Password?</strong> on the login page.</li>

  <li>Enter the email address linked to your account.</li>

  <li>Check your email for a reset link and follow the instructions.</li>

</ol>

<div class="callout callout-warn"><strong>No email reset?</strong> Ask the system administrator to reset your password directly in User Management.</div>



<h3 class="sub-title">How to Log Out</h3>

<ol class="steps">

  <li>Click your name in the top-right corner of any page.</li>

  <li>Click <strong>Logout</strong> from the dropdown menu.</li>

</ol>

<div class="callout callout-tip"><strong>Tip:</strong> Always log out when using a shared or public computer. Sessions expire automatically after a period of inactivity.</div>



<h2 class="module-title" id="nav">2. Navigating the System</h2>

<p>After logging in you will see three main areas:</p>

<ul>

  <li><strong>Top bar</strong> — School logo, your name, notification bell, and quick logout.</li>

  <li><strong>Left sidebar</strong> — Main navigation. Only modules your role can access are shown. Canteen section appears only when the Canteen Module is active.</li>

  <li><strong>Main area</strong> — The content of the page you have selected.</li>

</ul>

<div class="callout callout-tip"><strong>Mobile tip:</strong> On phones the sidebar collapses. Tap the ☰ icon at the top-left to open it. EduTrack is fully mobile-responsive.</div>



<h2 class="module-title" id="dashboard-overview">3. Dashboard Overview</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-head">Headteacher</span> <span class="role-badge role-account">Accountant / Cashier</span></p>

<p>The dashboard is your school's live command centre. It updates in real time as payments are recorded and attendance is taken.</p>

<div class="feat-grid">

  <div class="feat-card"><h4>💰 Financial Summary</h4><p>Total fees collected this term, total outstanding, total expenses, and net revenue. Breakdown by class.</p></div>

  <div class="feat-card"><h4>🎓 Student Count</h4><p>Total active students across all classes. Quick link to the Students module.</p></div>

  <div class="feat-card"><h4>✅ Today's Attendance</h4><p>Percentage of students present today. Alert if a class register has not been taken.</p></div>

  <div class="feat-card orange"><h4>⚠️ AI Alerts</h4><p>At-risk students flagged by the AI, overdue fees, and important system notifications.</p></div>

  <div class="feat-card"><h4>📈 Collection Trend</h4><p>Monthly fee collection chart for the current term. Helps spot collection patterns.</p></div>

  <div class="feat-card purple"><h4>🤖 AI Quick Actions</h4><p>Premium: type a command to the AI Agent directly from the dashboard. "Send reminders to Form 2."</p></div>

</div>

<div class="callout callout-info"><strong>Note:</strong> The financial figures on the dashboard are based on the <strong>current academic year and term</strong> set in System Settings. If figures seem off, verify that the current year is set correctly.</div>



<h2 class="module-title" id="profile">4. Your Profile &amp; Changing Your Password</h2>

<p><em>Accessible by:</em> All logged-in staff</p>

<h3 class="sub-title">Update Your Profile</h3>

<ol class="steps">

  <li>Click your name in the top-right corner, then click <strong>My Profile</strong>.</li>

  <li>Edit your <strong>Full Name</strong>, <strong>Email</strong>, or <strong>Phone</strong> in the Profile Information tab.</li>

  <li>Click <strong>Update Profile</strong> to save.</li>

</ol>

<h3 class="sub-title">Change Your Password</h3>

<ol class="steps">

  <li>Go to <strong>My Profile</strong> → click the <strong>Change Password</strong> tab.</li>

  <li>Enter your <strong>Current Password</strong>.</li>

  <li>Enter and confirm your <strong>New Password</strong> (minimum 8 characters).</li>

  <li>Click <strong>Change Password</strong>.</li>

</ol>



<!-- ══════════ PART 2: ADMINISTRATION ══════════ -->

<div class="section-intro page-break">

  <div class="section-num">Part 2</div>

  <h2>Administration &amp; Management</h2>

  <p>System setup, user accounts, classes, staff, students, and parent linking.</p>

</div>



<h2 class="module-title" id="settings">5. System Settings</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin only</span></p>

<h3 class="sub-title">School Information</h3>

<ol class="steps">

  <li>Click <strong>Settings</strong> in the menu → <strong>School Information</strong> tab.</li>

  <li>Fill in or update: School Name, Address, Phone, Email.</li>

  <li>To change the school logo, click <strong>Choose File</strong>, pick a square PNG or JPG, then <strong>Save Settings</strong>.</li>

</ol>

<h3 class="sub-title">Academic Year &amp; Term</h3>

<ol class="steps">

  <li>Click the <strong>Academic Settings</strong> tab.</li>

  <li>Set the <strong>Current Academic Year</strong> (e.g., <code>2024-2025</code>) and the <strong>Current Term</strong>.</li>

  <li>Click <strong>Save Settings</strong>. All new fees, reports, and attendance records will use this year and term.</li>

</ol>

<div class="callout callout-warn"><strong>Important:</strong> Update the Academic Year at the start of every new school year. Fees, classes, and reports are all linked to this setting.</div>

<h3 class="sub-title">Payment Gateways</h3>

<ol class="steps">

  <li>Click the <strong>Payment Gateways</strong> tab.</li>

  <li>Enter your <strong>Paystack Public Key</strong> and <strong>Secret Key</strong> (from your Paystack dashboard).</li>

  <li>Enter your <strong>Hubtel Client ID</strong> and <strong>Client Secret</strong> if using Hubtel MoMo.</li>

  <li>Click <strong>Save Settings</strong>.</li>

</ol>

<h3 class="sub-title">Online Payment Settlement</h3>

<ol class="steps">

  <li>Select your bank from the <strong>Bank</strong> dropdown.</li>

  <li>Enter your school's <strong>Bank Account Number</strong>.</li>

  <li>Click <strong>Verify Account</strong> — the account name auto-fills.</li>

  <li>Click <strong>Save Settlement Account</strong>.</li>

</ol>

<div class="callout callout-tip"><strong>Result:</strong> Every online payment is automatically settled into your school's bank account. No manual transfers needed.</div>

<h3 class="sub-title">SMS Settings (Hubtel)</h3>

<ol class="steps">

  <li>Click the <strong>SMS Settings</strong> tab.</li>

  <li>Enter your <strong>Hubtel Client ID</strong> and <strong>Client Secret</strong> for the SMS service.</li>

  <li>Enter a <strong>Sender Name</strong> (e.g., your school name — max 11 characters).</li>

  <li>Click <strong>Save Settings</strong>. Test by sending a test SMS to your own number.</li>

</ol>

<h3 class="sub-title">AI Settings (Premium)</h3>

<ol class="steps">

  <li>Click the <strong>AI Settings</strong> tab.</li>

  <li>Enter your API keys for the AI providers you want active: <strong>Claude (Anthropic)</strong>, <strong>Groq</strong>, <strong>Gemini</strong>, or <strong>OpenAI</strong>.</li>

  <li>The system uses the providers in priority order: Claude → Groq → Gemini → OpenAI. If one fails, it falls over to the next automatically.</li>

  <li>Click <strong>Save Settings</strong>.</li>

</ol>



<h2 class="module-title" id="users">6. User Accounts</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin only</span></p>

<h3 class="sub-title">Add a New Staff User</h3>

<ol class="steps">

  <li>Go to <strong>User Management</strong> in the menu and click <strong>Add New User</strong>.</li>

  <li>Fill in the required fields:</li>

</ol>

<div class="field-grid">

  <div class="field-item field-required"><span class="label">Username</span><span class="hint">Unique login name, e.g. john.mensah</span></div>

  <div class="field-item field-required"><span class="label">Password</span><span class="hint">Temporary — share privately with the user</span></div>

  <div class="field-item field-required"><span class="label">Full Name</span><span class="hint">Display name in the system</span></div>

  <div class="field-item field-required"><span class="label">Email</span><span class="hint">For notifications &amp; password resets</span></div>

  <div class="field-item"><span class="label">Phone</span><span class="hint">Optional contact number</span></div>

  <div class="field-item field-required"><span class="label">Role</span><span class="hint">Admin / Headteacher / Registrar / Teacher (Tutor) / Accountant / Cashier / Supervisor / Director</span></div>

</div>

<ol class="steps" start="3"><li>Click <strong>Add User</strong>.</li></ol>

<h3 class="sub-title">Reset a Password</h3>

<ol class="steps">

  <li>Find the user in the list and click <strong>Edit</strong>.</li>

  <li>Type a new password in the Password field and click <strong>Save</strong>.</li>

</ol>

<h3 class="sub-title">Deactivate a User</h3>

<ol class="steps">

  <li>Click <strong>Edit</strong> next to the user, untick the <strong>Active</strong> checkbox, click <strong>Save</strong>.</li>

</ol>

<div class="callout callout-info"><strong>Note:</strong> You cannot delete your own account. Another administrator must do it.</div>



<h2 class="module-title" id="classes">7. Classes &amp; Subjects</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-head">Headteacher</span> <span class="role-badge role-registrar">Registrar</span></p>

<h3 class="sub-title">Add a Class</h3>

<ol class="steps">

  <li>Go to <strong>Classes</strong> → click <strong>Add Class</strong>.</li>

  <li>Fill in: Class Name (e.g. Basic 4), Class Level, Class Teacher (optional), Capacity, Academic Year.</li>

  <li>Click <strong>Save Class</strong>.</li>

</ol>

<h3 class="sub-title">Add a Subject</h3>

<ol class="steps">

  <li>Go to <strong>Subjects</strong> → click <strong>Add Subject</strong>.</li>

  <li>Enter the Subject Name (e.g., Mathematics) and a unique Subject Code (e.g., MATH).</li>

  <li>Click <strong>Save Subject</strong>.</li>

</ol>



<h2 class="module-title" id="staff">8. Staff Management</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-head">Headteacher</span></p>

<h3 class="sub-title">Add a New Staff Member</h3>

<ol class="steps">

  <li>Go to <strong>Staff</strong> → click <strong>Add Staff</strong>.</li>

  <li>Fill in Personal Information: Full Name, Sex, Date of Birth, Nationality, Marital Status.</li>

  <li>Fill in Professional information: Qualifications, Registration Number, Rank, Subject, Class Assigned.</li>

  <li>Fill in Contact details: Phone, Email, Residential Address.</li>

  <li>Fill in Government records: SSNIT Number, TIN Number, Bank Name, Bank Account.</li>

  <li>Upload a Staff Photo (optional but recommended).</li>

  <li>Click <strong>Save Staff</strong>.</li>

</ol>

<div class="callout callout-info"><strong>Auto Login:</strong> Adding a Teacher or Tutor automatically creates their login account. The username and temporary password are shown on-screen — write them down and share them privately.</div>



<h2 class="module-title" id="students">9. Students</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-head">Headteacher</span> <span class="role-badge role-registrar">Registrar</span></p>

<h3 class="sub-title">Enroll a New Student</h3>

<ol class="steps">

  <li>Go to <strong>Students</strong> → click <strong>Add Student</strong>.</li>

  <li>Fill in required fields:</li>

</ol>

<div class="field-grid">

  <div class="field-item field-required"><span class="label">First Name</span><span class="hint">Student's given name</span></div>

  <div class="field-item field-required"><span class="label">Last Name</span><span class="hint">Student's family name</span></div>

  <div class="field-item field-required"><span class="label">Class</span><span class="hint">Select from active classes</span></div>

  <div class="field-item field-required"><span class="label">At least one phone</span><span class="hint">Father's, Mother's, or Emergency contact</span></div>

  <div class="field-item"><span class="label">Date of Birth</span><span class="hint">Recommended for report cards</span></div>

  <div class="field-item"><span class="label">Sex</span><span class="hint">Male / Female</span></div>

  <div class="field-item"><span class="label">Parent / Guardian Info</span><span class="hint">Name, Occupation, Phone, Address</span></div>

  <div class="field-item"><span class="label">Student Photo</span><span class="hint">JPG or PNG, max 2 MB</span></div>

</div>

<ol class="steps" start="3">

  <li>Click <strong>Save Student</strong>. The system auto-generates a Student ID (e.g., <code>STU001</code>).</li>

  <li>If the Canteen Module is active, the system also auto-generates a permanent <strong>Identity QR token</strong> for this student.</li>

</ol>

<div class="callout callout-warn"><strong>Required:</strong> Every student must have at least one contact phone number. The system will not save without it.</div>

<h3 class="sub-title">Mark a Student Inactive (Withdrawn)</h3>

<ol class="steps">

  <li>Click <strong>Edit</strong> on the student's row.</li>

  <li>Change <strong>Status</strong> to <strong>Inactive</strong> and click <strong>Save Student</strong>.</li>

</ol>

<div class="callout callout-tip"><strong>Tip:</strong> Inactive students are hidden from class lists but their records, payment history, and attendance are fully preserved.</div>



<h2 class="module-title" id="parents-link">10. Linking Parent Accounts</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-registrar">Registrar</span></p>

<ol class="steps">

  <li>Go to <strong>Parent Accounts</strong> → click <strong>Link Parent Account</strong>.</li>

  <li>Select the Student — the parent's name and phone auto-fill from the student record.</li>

  <li>Confirm or correct the Guardian Full Name and Phone Number. <strong>The phone number is the parent's login username.</strong></li>

  <li>Set a temporary Password and share it privately with the parent.</li>

  <li>Click <strong>Save Parent Account</strong>.</li>

</ol>

<div class="callout callout-info"><strong>Multiple children:</strong> Create a separate link for each child. The system groups them together when the parent logs in to the Parent Portal.</div>



<!-- ══════════ PART 3: FINANCE ══════════ -->

<div class="section-intro page-break">

  <div class="section-num">Part 3</div>

  <h2>Finance</h2>

  <p>Fee structures, recording payments, express QR collection, online payments, expenses, and coupons.</p>

</div>



<h2 class="module-title" id="fees">11. Fee Structures</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-account">Accountant / Cashier</span></p>

<p>Fee structures define what each class owes. You must set these up before recording any payments.</p>

<h3 class="sub-title">Add a Fee Structure</h3>

<ol class="steps">

  <li>Go to <strong>Fees</strong> → click <strong>Add Fee Structure</strong>.</li>

  <li>Fill in: Class Name, Fee Type (e.g. Tuition, Feeding Fee, Exam Fee), Amount (GHS), Due Date, Academic Year.</li>

  <li>Click <strong>Add Fee Structure</strong>.</li>

</ol>

<div class="callout callout-tip"><strong>Tip:</strong> Add multiple fee types per class (Tuition + Feeding + Exam Fee etc.). Each is a separate entry. Feeding/canteen fee types automatically trigger Canteen Module entitlements when paid.</div>



<h2 class="module-title" id="payments">12. Recording Payments (Standard)</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-account">Accountant / Cashier</span></p>

<h3 class="sub-title">Record a Cash / Bank Payment</h3>

<ol class="steps">

  <li>Go to <strong>Fees</strong> → click <strong>Record Payment</strong>.</li>

  <li>Select the <strong>Student</strong>, the <strong>Fee Type</strong> being paid, the <strong>Amount Paid</strong>, <strong>Payment Date</strong>, and <strong>Payment Method</strong> (Cash, Cheque, Bank Transfer, Mobile Money, Card).</li>

  <li>Enter a <strong>Transaction / Receipt ID</strong> if available.</li>

  <li>Optionally apply a <strong>Coupon</strong> code for a discount.</li>

  <li>Click <strong>Record Payment</strong>.</li>

</ol>

<div class="callout callout-tip"><strong>Auto-SMS:</strong> An SMS confirmation is automatically sent to the parent: "We have received ₵[amount] towards [Fee Type] for [Student Name]."</div>

<h3 class="sub-title">Edit or Correct a Payment</h3>

<ol class="steps">

  <li>Find the payment in the payments list.</li>

  <li>Click <strong>Edit</strong>, correct the amount, date, or method, then click <strong>Save</strong>.</li>

</ol>



<h2 class="module-title" id="express">13. Express Fee Collection (QR Scanner)</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-account">Accountant / Cashier</span> <span class="role-badge role-registrar">Registrar</span></p>

<p>Express Collection (<code>fees_express.php</code>) eliminates the morning fee desk queue. Instead of searching for a student, you scan their QR code and the system loads their record instantly.</p>



<div class="callout callout-ai"><strong>Canteen Module Required:</strong> Express Collection is part of the Canteen Module add-on. It requires students to have Identity QR tokens generated (done automatically on enrollment or via Canteen → Generate Identity QRs).</div>



<h3 class="sub-title">How to Use Express Collection</h3>

<ol class="steps">

  <li>Click <strong>Express Collection</strong> in the Fees section of the menu.</li>

  <li>The camera viewfinder opens automatically. Point your device camera at the student's QR code (from their parent portal, printed ID card, or student ID).</li>

  <li>The student's photo, name, class, and outstanding fees load instantly.</li>

  <li>Tap the <strong>fee type</strong> button (feeding/canteen fees are highlighted in green and listed first).</li>

  <li>Select the payment method: <strong>Cash</strong>, <strong>Mobile Money</strong>, or <strong>Bank Transfer</strong>. For MoMo: choose MTN / Vodafone / AirtelTigo.</li>

  <li>Click <strong>Record Payment</strong>. A green confirmation screen appears for 2 seconds then auto-resets.</li>

</ol>

<div class="callout callout-info"><strong>No QR?</strong> Use the <strong>5-digit Student ID</strong> fallback input below the camera. Type the student's ID number and press Enter.</div>

<div class="callout callout-tip"><strong>Also in fees.php:</strong> A "Scan QR" button has been added to the standard Fees page. Clicking it opens a camera modal that scans the QR and populates the student search field automatically.</div>



<h2 class="module-title" id="online-pay">14. Online Payments (Paystack / Hubtel)</h2>

<p><em>Initiated by:</em> <span class="role-badge role-parent">Parent</span> via Parent Portal, or <span class="role-badge role-admin">Admin / Accountant</span> on behalf of a student</p>

<h3 class="sub-title">How a Parent Pays Online</h3>

<ol class="steps">

  <li>Parent logs into the <strong>Parent Portal</strong> and clicks <strong>Fees</strong>.</li>

  <li>Finds an outstanding fee and clicks <strong>Pay Online</strong>.</li>

  <li>Ticks the fees to pay and selects payment method: Card, MTN MoMo, Vodafone Cash, or AirtelTigo Money.</li>

  <li>Enters name and phone number, then clicks <strong>Proceed to Payment</strong>.</li>

  <li>Completes payment on the Paystack / Hubtel checkout screen.</li>

  <li>Returns to EduTrack and sees a confirmation with a receipt number.</li>

</ol>

<div class="callout callout-tip"><strong>Auto-settlement:</strong> If the school's bank account is configured in Settings, money settles directly into the account after each transaction — no manual transfer needed.</div>



<h2 class="module-title" id="expenses">15. Expenses</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-account">Accountant / Cashier</span></p>

<ol class="steps">

  <li>Go to <strong>Expenses</strong> → click <strong>Add Expense</strong>.</li>

  <li>Enter the Date, Category, Description, Amount (GHS), Payment Method, and optional Vendor name.</li>

  <li>Click <strong>Save Expense</strong>. The dashboard's Total Expenses figure updates immediately.</li>

</ol>



<h2 class="module-title" id="coupons">16. Discount Coupons</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin only</span></p>

<ol class="steps">

  <li>Go to <strong>Settings</strong> → scroll to <strong>Coupons Management</strong> → click <strong>Add Coupon</strong>.</li>

  <li>Enter a unique Coupon Code (e.g., STAFF2025), Description, Discount Type (Fixed Amount or Percentage), Discount Value, and Usage Limit (0 = unlimited).</li>

  <li>Click <strong>Save Coupon</strong>.</li>

</ol>

<p>When recording a payment, the cashier or parent enters this coupon code to apply the discount automatically.</p>



<!-- ══════════ PART 4: ACADEMIC ══════════ -->

<div class="section-intro page-break">

  <div class="section-num">Part 4</div>

  <h2>Academic</h2>

  <p>Attendance, timetable, AI exam generation, terminal report cards, and financial reports.</p>

</div>



<h2 class="module-title" id="attendance">17. Attendance Register</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-head">Headteacher</span> <span class="role-badge role-registrar">Registrar</span> <span class="role-badge role-teacher">Teacher (Tutor)</span></p>

<h3 class="sub-title">Taking the Daily Register</h3>

<ol class="steps">

  <li>Go to <strong>Attendance</strong> → <strong>Take Register</strong> tab.</li>

  <li>Select the Class and Date (today is pre-selected), then click <strong>Load</strong>.</li>

  <li>For each student click: <strong>Present</strong> (green), <strong>Absent</strong> (red), <strong>Late</strong> (orange), or <strong>Excused</strong> (purple).</li>

  <li>Add an optional Note for any student.</li>

  <li>Click <strong>Save Register</strong>.</li>

</ol>

<div class="callout callout-tip"><strong>Quick fill:</strong> Click <strong>All Present</strong> to mark everyone present at once, then change only the absent or late students. This is much faster for large classes.</div>

<h3 class="sub-title">View &amp; Export Past Records</h3>

<ol class="steps">

  <li>Click the <strong>View Records</strong> tab.</li>

  <li>Filter by Class, Date Range, and Status.</li>

  <li>Click <strong>Export CSV</strong> or <strong>Export PDF</strong>.</li>

</ol>

<h3 class="sub-title">SMS Absentee Alerts</h3>

<ol class="steps">

  <li>Click the <strong>SMS Absentees</strong> tab.</li>

  <li>Select the Class and Date, then click <strong>Send SMS</strong>. Parents of all absent students receive an automatic text message.</li>

</ol>



<h2 class="module-title" id="timetable">18. Timetable</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-head">Headteacher</span> <span class="role-badge role-registrar">Registrar</span></p>

<ol class="steps">

  <li>Go to <strong>Timetable</strong> → select a Class and Academic Year.</li>

  <li>For each period slot, assign a Subject, Teacher, Start Time, and End Time.</li>

  <li>Click <strong>Save Timetable</strong>.</li>

</ol>

<p>Teachers see their own timetable after logging in. Parents see their child's timetable in the Parent Portal.</p>

<div class="callout callout-info"><strong>Conflict detection:</strong> The system automatically warns you if a teacher has been assigned to two classes at the same time.</div>



<h2 class="module-title" id="exams">19. Exams &amp; AI Question Generator</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-head">Headteacher</span> <span class="role-badge role-teacher">Teacher</span></p>



<h3 class="sub-title">Generate an Exam Paper (Manual Question Bank)</h3>

<ol class="steps">

  <li>Go to <strong>Exams Generator</strong> → select Subject, Class, Term, and Exam Type.</li>

  <li>Set the number of questions and difficulty mix (Easy / Medium / Hard).</li>

  <li>Click <strong>Generate Exam</strong>. The system selects questions from the question bank.</li>

  <li>Review the paper and click <strong>Download PDF</strong> to print.</li>

</ol>



<h3 class="sub-title">AI Question Generation from PDF (Growth / Premium)</h3>

<ol class="steps">

  <li>Go to <strong>Exams Generator</strong> → click the <strong>AI Generate</strong> tab.</li>

  <li>Upload any textbook, past paper, or study material as a PDF.</li>

  <li>Select the Subject, Class, number of questions (up to 50), and type (MCQ / Essay / Mixed).</li>

  <li>Click <strong>Generate with AI</strong>. In under 60 seconds, the AI produces a full exam paper.</li>

  <li>Review and edit the questions if needed, then click <strong>Save to Question Bank</strong> and/or <strong>Download PDF</strong>.</li>

</ol>

<div class="callout callout-ai"><strong>AI Tip:</strong> The AI generates questions at three difficulty levels. Upload past BECE papers to build a Ghana-specific question bank quickly.</div>



<h3 class="sub-title">Import Questions from CSV</h3>

<ol class="steps">

  <li>Go to <strong>Exams Generator</strong> → <strong>Question Bank</strong> → click <strong>Import CSV</strong>.</li>

  <li>Download the CSV template, fill it in (one question per row), and save as CSV.</li>

  <li>Click <strong>Choose File</strong>, select your CSV, then click <strong>Upload &amp; Import</strong>.</li>

</ol>

<table>

  <tr><th>Column</th><th>What to Enter</th><th>Required?</th></tr>

  <tr><td><code>subject_code</code></td><td>Must match an existing subject code, e.g. MATH</td><td>Yes</td></tr>

  <tr><td><code>class_name</code></td><td>e.g. JHS 2</td><td>Yes</td></tr>

  <tr><td><code>question_type</code></td><td><code>mcq</code> or <code>essay</code></td><td>Yes</td></tr>

  <tr><td><code>question</code></td><td>The question text</td><td>Yes</td></tr>

  <tr><td><code>option_a</code> to <code>option_d</code></td><td>MCQ answer choices</td><td>MCQ only</td></tr>

  <tr><td><code>correct_answer</code></td><td>a, b, c, or d</td><td>MCQ only</td></tr>

  <tr><td><code>marks</code></td><td>Points value</td><td>Yes</td></tr>

  <tr><td><code>difficulty</code></td><td>easy, medium, or hard</td><td>Yes</td></tr>

</table>



<h2 class="module-title" id="terminal-reports">20. Terminal Report Cards</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-head">Headteacher</span> <span class="role-badge role-teacher">Teacher</span> (Growth / Premium plans)</p>



<h3 class="sub-title">Enter Student Scores</h3>

<ol class="steps">

  <li>Go to <strong>Reports</strong> (or <strong>Terminal Reports</strong>) in the menu.</li>

  <li>Select the Class, Subject, Term, and Academic Year.</li>

  <li>For each student, enter the <strong>Class Score</strong> (continuous assessment) and the <strong>Exam Score</strong>.</li>

  <li>The system calculates the <strong>Total Score</strong>, <strong>Grade</strong> (A1–F9), and <strong>Position</strong> automatically using the GES weighting you configured (typically 30% class, 70% exam).</li>

  <li>Click <strong>Save Scores</strong>.</li>

</ol>

<div class="callout callout-info"><strong>Score weighting:</strong> The class/exam percentage split (30/70 or custom) is set in Settings → Academic Settings. This applies to all report cards.</div>



<h3 class="sub-title">Generate and Print Report Cards</h3>

<ol class="steps">

  <li>Once all scores are entered for a class and term, click <strong>Generate Report Cards</strong>.</li>

  <li>Review the preview — each card shows the student's scores for all subjects, class position, teacher remarks, headteacher remarks, and the school logo.</li>

  <li>Click <strong>Download PDF (All Students)</strong> to download a batch PDF of all report cards for that class.</li>

  <li>Or click <strong>Download PDF</strong> on an individual student's card to print just that one.</li>

</ol>

<div class="callout callout-tip"><strong>Tip:</strong> Report cards automatically include the student's photo, class position out of total students, aggregate score, and promotion status. The school logo from Settings appears in the header of every card.</div>

<div class="callout callout-ai"><strong>AI remarks (Premium):</strong> The AI Agent can draft personalised teacher remarks for each student based on their scores and attendance record. Go to AI Agent and type "Draft remarks for Basic 5".</div>



<h2 class="module-title" id="reports">21. Financial Reports</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-head">Headteacher</span> <span class="role-badge role-account">Accountant</span></p>

<table>

  <tr><th>Report Type</th><th>What It Shows</th></tr>

  <tr><td><strong>Fee Collections</strong></td><td>Every payment within a date range with student name, fee type, amount, method, and totals.</td></tr>

  <tr><td><strong>Outstanding Fees</strong></td><td>Every student with total fee, amount paid, and outstanding balance. Filter by class.</td></tr>

  <tr><td><strong>Class Collections Summary</strong></td><td>Expected vs. collected per class with collection percentage.</td></tr>

  <tr><td><strong>Expense Summary</strong></td><td>All expenses grouped by category within a date range.</td></tr>

  <tr><td><strong>Financial Reconciliation</strong></td><td>Income vs. expense — net surplus or deficit for any period.</td></tr>

</table>

<p>All reports can be <strong>exported as CSV</strong> (for Excel) or <strong>PDF</strong> (for printing) using the buttons at the top of each report.</p>



<!-- ══════════ PART 5: COMMUNICATION ══════════ -->

<div class="section-intro page-break">

  <div class="section-num">Part 5</div>

  <h2>Communication</h2>

  <p>Announcements, internal staff messages, and bulk SMS alerts to parents.</p>

</div>



<h2 class="module-title" id="communication">22. Announcements &amp; Internal Messages</h2>

<p><em>Accessible by:</em> All staff. Announcements created by <span class="role-badge role-admin">Admin</span> <span class="role-badge role-head">Headteacher</span> <span class="role-badge role-registrar">Registrar</span></p>

<h3 class="sub-title">Post an Announcement</h3>

<ol class="steps">

  <li>Go to <strong>Communication</strong> → <strong>Announcements</strong> tab → click <strong>New Announcement</strong>.</li>

  <li>Enter a Title and write the Message.</li>

  <li>Set the Target Audience: All Staff, Teachers Only, Admins Only, etc.</li>

  <li>Tick <strong>Pin</strong> to keep it at the top of the list.</li>

  <li>Click <strong>Publish</strong>.</li>

</ol>

<h3 class="sub-title">Send an Internal Message</h3>

<ol class="steps">

  <li>Go to <strong>Communication</strong> → <strong>Inbox</strong> → click <strong>Compose</strong>.</li>

  <li>Select the Recipient, enter a Subject and Message, then click <strong>Send</strong>.</li>

  <li>Unread messages have a blue dot. Click <strong>Reply</strong> to respond.</li>

</ol>



<h2 class="module-title" id="alerts">23. Alerts &amp; SMS Notifications</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-head">Headteacher</span> <span class="role-badge role-account">Accountant</span></p>

<h3 class="sub-title">Send a Targeted Alert</h3>

<ol class="steps">

  <li>Go to <strong>Alerts</strong> → select Alert Type: Fee Reminder, Attendance Alert, Event Notification, or Custom Message.</li>

  <li>Select who to send to: Individual Student, Entire Class, or All Students.</li>

  <li>Compose the Message. Use <code>{student_name}</code>, <code>{class}</code>, and <code>{date}</code> as placeholders.</li>

  <li>Select Delivery Method: SMS, In-App Notification, or Both.</li>

  <li>Click <strong>Send Alert</strong>.</li>

</ol>

<div class="callout callout-info"><strong>SMS requires:</strong> A valid Hubtel SMS API key in Settings and a phone number on the student/parent record in Ghanaian format (e.g., 0244123456).</div>



<!-- ══════════ PART 6: AI & ANALYTICS ══════════ -->

<div class="section-intro page-break">

  <div class="section-num">Part 6</div>

  <h2>AI &amp; Analytics</h2>

  <p>The AI Agent, analytics dashboard, at-risk detection, and scheduled AI tasks — Premium plan features.</p>

</div>



<h2 class="module-title" id="ai-agent">24. RBC AI Agent</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-head">Headteacher</span> <span class="role-badge role-account">Accountant</span> — <span class="role-badge role-ai">Premium plan</span></p>

<p>The RBC AI Agent lets you control the system using plain English. Instead of navigating menus, you type what you want done and the AI executes it.</p>

<h3 class="sub-title">How to Use the AI Agent</h3>

<ol class="steps">

  <li>Click <strong>AI Agent</strong> in the left menu (or use the chat icon on the Dashboard).</li>

  <li>Type your request in the chat box and press Enter or click Send.</li>

  <li>The AI responds, takes the action, and confirms what it did.</li>

</ol>



<h3 class="sub-title">What You Can Ask the AI Agent</h3>

<table>

  <tr><th>Example Command</th><th>What the AI Does</th></tr>

  <tr><td>"Send fee reminders to all JHS 3 parents"</td><td>Sends SMS fee reminders to every parent with an outstanding balance in JHS 3.</td></tr>

  <tr><td>"How many students have not paid tuition in Basic 5?"</td><td>Queries the database and returns a list with outstanding amounts.</td></tr>

  <tr><td>"Generate exam questions for Science, Basic 6, 20 MCQs"</td><td>Uses AI to generate 20 multiple-choice science questions for Basic 6.</td></tr>

  <tr><td>"What is our total collection for this term?"</td><td>Returns total fees collected, broken down by class and fee type.</td></tr>

  <tr><td>"Draft report card remarks for JHS 2"</td><td>Generates personalised teacher remarks for each student based on scores.</td></tr>

  <tr><td>"Record canteen for Basic 6 today"</td><td>Creates canteen entitlements for all Basic 6 students in today's session.</td></tr>

  <tr><td>"Send canteen reminder SMS to Basic 4 parents"</td><td>SMSes all Basic 4 parents reminding them about today's canteen session.</td></tr>

  <tr><td>"Who are the at-risk students this term?"</td><td>Lists students flagged by the at-risk detection model with their scores and attendance.</td></tr>

</table>

<div class="callout callout-ai"><strong>AI Fallover:</strong> The Agent uses Claude (Anthropic) by default. If Claude is unavailable, it automatically falls over to Groq → Gemini → OpenAI. This means the Agent is always available.</div>



<h2 class="module-title" id="ai-analytics">25. AI Analytics &amp; Revenue Forecasting</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-head">Headteacher</span> <span class="role-badge role-account">Accountant</span> — <span class="role-badge role-ai">Premium plan</span></p>

<p>Go to <strong>AI Analytics</strong> in the menu to access the following dashboards:</p>

<div class="feat-grid">

  <div class="feat-card purple"><h4>📈 Revenue Forecast</h4><p>Predicts next month's fee income using historical collection patterns. Helps plan school expenditure with confidence.</p></div>

  <div class="feat-card purple"><h4>📊 Collection Trends</h4><p>Month-by-month fee collection performance. Identifies terms or classes with consistently low collection rates.</p></div>

  <div class="feat-card purple"><h4>🎓 Academic Performance</h4><p>Class-by-class average scores across terms. Spot subjects or classes where student performance is declining.</p></div>

  <div class="feat-card purple"><h4>✅ Attendance Patterns</h4><p>Identifies students and classes with chronically low attendance. Weekly and monthly attendance trend charts.</p></div>

  <div class="feat-card purple"><h4>⏰ Scheduled Reports</h4><p>Configure AI to automatically send weekly feeding summaries, Friday analytics reports, and term-end summaries.</p></div>

  <div class="feat-card purple"><h4>💬 AI Parent Letters</h4><p>Generate personalised letters to parents about their child's performance, attendance, or fees — drafted by AI, reviewed by staff.</p></div>

</div>



<h3 class="sub-title">Setting Up Scheduled AI Reports</h3>

<ol class="steps">

  <li>Go to <strong>AI Analytics</strong> → <strong>Scheduled Tasks</strong> tab.</li>

  <li>Enable the reports you want: Weekly Feeding Summary, Friday Analytics, Weekly At-Risk Report.</li>

  <li>Set the delivery time (e.g., every Monday at 7am) and recipients (Admin, Headteacher, etc.).</li>

  <li>Click <strong>Save Schedule</strong>. The cron job runs automatically from that point.</li>

</ol>



<h2 class="module-title" id="at-risk">26. At-Risk Student Detection</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-head">Headteacher</span> <span class="role-badge role-teacher">Teacher</span> — <span class="role-badge role-ai">Premium plan</span></p>

<p>The At-Risk Detection system monitors attendance patterns and score trends continuously. It flags students who are likely to underperform in upcoming exams — typically 3–4 weeks before the exam date.</p>

<h3 class="sub-title">Viewing At-Risk Students</h3>

<ol class="steps">

  <li>Go to <strong>AI Analytics</strong> → <strong>At-Risk Detection</strong> tab.</li>

  <li>The system shows a list of flagged students with their risk score, the factors contributing to the flag (e.g., attendance below 75%, score decline over 3 weeks), and recommended actions.</li>

  <li>Click on any student to see their full attendance and score trend chart.</li>

  <li>Use the <strong>Send Alert to Parent</strong> button to send an immediate SMS to the parent.</li>

</ol>

<div class="callout callout-ai"><strong>How it works:</strong> The model uses attendance rate, score trend (improving/declining), peer comparison, and fee payment regularity as risk signals. Students with 3+ consecutive absent records are automatically flagged.</div>



<!-- ══════════ PART 7: PARENT PORTAL ══════════ -->

<div class="section-intro page-break">

  <div class="section-num">Part 7</div>

  <h2>Parent Portal</h2>

  <p>A separate, mobile-first PWA where parents check fees, attendance, results, and pay online — even offline.</p>

</div>



<h2 class="module-title" id="portal-login">27. Logging into the Parent Portal</h2>

<p>The Parent Portal is at a different URL from the staff system. Ask the school for the Parent Portal link.</p>

<ol class="steps">

  <li>Open the Parent Portal link in your browser.</li>

  <li>Enter your <strong>Phone Number</strong> (your username — the same number registered with the school).</li>

  <li>Enter your <strong>Password</strong> (given to you by the school).</li>

  <li>Click <strong>Log In</strong>.</li>

</ol>

<div class="callout callout-warn"><strong>Cannot log in?</strong> Contact the school office. They will verify that a Parent Account has been created for your phone number and can reset your password.</div>



<h2 class="module-title" id="portal-fees">28. Viewing &amp; Paying Fees</h2>

<h3 class="sub-title">View Your Child's Fee Statement</h3>

<ol class="steps">

  <li>Click <strong>Fees</strong> in the menu. If you have more than one child, select the child from the dropdown at the top.</li>

  <li>The Fee Breakdown table shows every fee with the amount, amount paid, and outstanding balance.</li>

  <li>Three summary cards show Total Fees, Total Paid, and Total Outstanding at a glance.</li>

</ol>

<h3 class="sub-title">Pay a Fee Online</h3>

<ol class="steps">

  <li>Find an Unpaid or Partial fee and click <strong>Pay Online</strong>.</li>

  <li>On the checkout page, tick all fees you want to pay and select your payment method (Card or Mobile Money).</li>

  <li>Enter your name and phone number, then click <strong>Proceed to Payment</strong>.</li>

  <li>Complete payment on the Paystack screen. You will see a confirmation page after.</li>

</ol>

<h3 class="sub-title">View Receipts</h3>

<p>Scroll down the Fees page to the <strong>Payment History</strong> table. Click <strong>View Receipt</strong> to open or print a receipt for any payment.</p>



<h2 class="module-title" id="portal-info">29. Attendance, Results &amp; Timetable</h2>

<h3 class="sub-title">Dashboard</h3>

<p>After logging in, the dashboard shows a summary for each child: their class, outstanding fees, upcoming exams, attendance summary, and recent notifications.</p>

<h3 class="sub-title">Attendance</h3>

<ol class="steps">

  <li>Click <strong>Attendance</strong> in the menu.</li>

  <li>The attendance summary shows your child's present, absent, late, and excused counts for the current term. A colour-coded calendar shows each day's status.</li>

</ol>

<h3 class="sub-title">Exam Results</h3>

<ol class="steps">

  <li>Click <strong>Results</strong> in the menu.</li>

  <li>Select the Term. All subject scores, grades, class position, and teacher remarks are shown.</li>

</ol>

<h3 class="sub-title">Timetable</h3>

<p>Click <strong>Timetable</strong> to see your child's weekly class timetable.</p>



<h2 class="module-title" id="portal-offline">30. Offline Mode &amp; PWA Install</h2>

<p>The Parent Portal is a Progressive Web App (PWA). This means it can be installed on a phone's home screen and used even without an internet connection.</p>

<h3 class="sub-title">Install on Android (Chrome)</h3>

<ol class="steps">

  <li>Open the Parent Portal in Chrome on your Android phone.</li>

  <li>Tap the three-dot menu (⋮) at the top right.</li>

  <li>Tap <strong>Add to Home screen</strong>.</li>

  <li>Tap <strong>Add</strong>. The app icon appears on your home screen.</li>

</ol>

<h3 class="sub-title">Install on iPhone (Safari)</h3>

<ol class="steps">

  <li>Open the Parent Portal in Safari.</li>

  <li>Tap the <strong>Share</strong> button (box with upward arrow) at the bottom.</li>

  <li>Scroll down and tap <strong>Add to Home Screen</strong>.</li>

  <li>Tap <strong>Add</strong>.</li>

</ol>

<div class="callout callout-tip"><strong>Offline access:</strong> Once installed, the portal loads instantly even without internet. Fee balances, attendance, and QR codes (if Canteen Module is active) are available offline. The app syncs automatically when internet is restored.</div>



<!-- ══════════ PART 8: CANTEEN MODULE ══════════ -->

<div class="section-intro page-break">

  <div class="section-num">Part 8</div>

  <h2>Canteen Module</h2>

  <p>Eliminate morning queues with QR scanning. The Canteen Module is a paid add-on (GHS 80/month) available on any plan.</p>

</div>

<div class="callout callout-ai"><strong>Add-on Required:</strong> The Canteen Module must be active. Go to <strong>Canteen → Settings</strong> to activate your trial or verify your subscription. If the module is inactive, all canteen pages redirect to the Upgrade page.</div>



<h2 class="module-title" id="canteen-setup">31. Canteen Setup &amp; Sessions</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-head">Headteacher</span></p>

<h3 class="sub-title">Understanding the Two Queue Problem</h3>

<p>The Canteen Module eliminates two separate morning queues:</p>

<table>

  <tr><th>Queue</th><th>Without EduTrack</th><th>With EduTrack</th></tr>

  <tr><td><strong>Queue 1 — Fee Desk</strong></td><td>Cashier searches name → types data → saves → prints receipt (~45 sec)</td><td>QR scan at Express Collection → 2–3 seconds</td></tr>

  <tr><td><strong>Queue 2 — Canteen Window</strong></td><td>Staff searches → verifies → saves → prints coupon → hands over (~60 sec)</td><td>QR scan at Canteen Scanner → 2–3 seconds</td></tr>

</table>



<h3 class="sub-title">Create a Canteen Session</h3>

<ol class="steps">

  <li>Go to <strong>Canteen → Setup</strong> in the menu.</li>

  <li>Click <strong>Create Session</strong> and fill in: Session Name (Breakfast / Lunch / Supper), Date, Start Time, End Time, Price per Meal, and Classes enrolled.</li>

  <li>Click <strong>Save Session</strong>. The system automatically generates a session pass QR token for every enrolled student in the selected classes who has an active feeding fee payment.</li>

</ol>

<div class="callout callout-tip"><strong>Quick Setup:</strong> Click the <strong>Quick Setup</strong> button to create today's Breakfast and Lunch sessions for all enrolled classes in one click, using your default settings.</div>

<div class="callout callout-info"><strong>Auto-entitlement:</strong> When a feeding or canteen fee payment is recorded (via Express Collection or the standard Fees page), the system automatically generates a session pass for that student for today's active session — no manual entry needed.</div>



<h3 class="sub-title">Generate Student Identity QR Tokens</h3>

<ol class="steps">

  <li>Go to <strong>Canteen → Settings → Student ID Cards</strong> tab.</li>

  <li>Click <strong>Generate Missing Identity QR Tokens</strong>. The system creates permanent QR tokens for all students who don't have one yet.</li>

  <li>New students automatically receive a token upon enrollment.</li>

</ol>

<div class="callout callout-info"><strong>Two QR types:</strong> There are two different QR codes. The <strong>Identity QR</strong> (permanent, in parent portal and on printed ID) is used only at the fee desk. The <strong>Session Pass QR</strong> (generated daily, expires at midnight) is used only at the canteen scanner. They cannot be swapped — each scanner rejects the other's QR.</div>



<h2 class="module-title" id="canteen-scanner">32. Canteen Scanner</h2>

<p><em>Accessible by:</em> Staff PIN login (no EduTrack account required) or any valid EduTrack session</p>

<p>The canteen scanner (<code>canteen/scanner.php</code>) runs on any phone or tablet positioned at the canteen window. Staff do not need a full EduTrack login — they use a 4-digit PIN set in Canteen Settings.</p>

<h3 class="sub-title">Log In to the Scanner</h3>

<ol class="steps">

  <li>Open the scanner URL on the canteen device: <code>yourschool.com/canteen/scanner.php</code>.</li>

  <li>Enter the 4-digit scanner PIN and tap <strong>Enter</strong>.</li>

</ol>

<h3 class="sub-title">Scan a Student's Session Pass QR</h3>

<ol class="steps">

  <li>Point the camera at the student's Session Pass QR (shown in the parent portal or on a printed card).</li>

  <li>On success: a white overlay shows the student's photo, name, class, and a green <strong>✓ CONFIRMED</strong> banner. It auto-dismisses after 3 seconds.</li>

  <li>On double scan: amber overlay — "Already confirmed at [time]".</li>

  <li>On invalid/tampered token: red overlay — "Invalid canteen pass".</li>

  <li>On expired token: red overlay — "Canteen pass has expired".</li>

</ol>

<div class="callout callout-info"><strong>No QR?</strong> Use the <strong>5-digit Student ID</strong> numeric input below the camera. Type the ID and tap Confirm.</div>

<h3 class="sub-title">Offline Mode</h3>

<p>On the first daily load, the scanner downloads a signed cache of all today's entitlements. If the internet drops mid-session, the scanner keeps working — confirmations are stored in the device and synced automatically when connectivity is restored. The header shows an <strong>OFFLINE MODE</strong> amber badge when working offline.</p>



<h2 class="module-title" id="canteen-cook">33. Cook's Dashboard</h2>

<p><em>Accessible by:</em> 4-digit Cook PIN (separate from scanner PIN, set in Canteen Settings)</p>

<p>The cook's dashboard (<code>canteen/cook_dashboard.php</code>) shows real-time meal confirmation numbers without requiring a full EduTrack login. Share the URL with your cook.</p>

<div class="feat-grid">

  <div class="feat-card"><h4>🍽️ Big Confirmed Number</h4><p>Large display showing meals confirmed so far (e.g. "68 of 92 enrolled"). Updates every 30 seconds.</p></div>

  <div class="feat-card"><h4>📊 Per-Class Table</h4><p>Class | Enrolled | Confirmed | Still Expected | % Done. Rows turn green (≥80%), amber (40–79%), or red (&lt;40% past halfway).</p></div>

  <div class="feat-card orange"><h4>📈 Arrival Rate Bars</h4><p>15-minute interval arrival charts showing peak windows. Helps the cook plan food preparation timing.</p></div>

  <div class="feat-card"><h4>🔮 Projected Total</h4><p>AI-calculated projected final meal count based on current arrival rate trend.</p></div>

</div>



<h2 class="module-title" id="canteen-reports">34. Canteen Reports</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin</span> <span class="role-badge role-head">Headteacher</span> <span class="role-badge role-account">Accountant</span></p>

<p>Go to <strong>Canteen → Reports</strong> for the following:</p>

<table>

  <tr><th>Report</th><th>Contents</th></tr>

  <tr><td><strong>Daily Meal Report</strong></td><td>Per session: enrolled, confirmed, absent, revenue, and verification method breakdown (% QR / manual).</td></tr>

  <tr><td><strong>Student Attendance</strong></td><td>Per student: sessions enrolled, confirmed, absent, absence rate, longest absence streak.</td></tr>

  <tr><td><strong>Financial Reconciliation</strong></td><td>Fees collected (payments table) vs. meals confirmed (scanner) — flags discrepancies.</td></tr>

  <tr><td><strong>Express Collection Stats</strong></td><td>Payments via QR express vs. standard, and estimated time saved.</td></tr>

</table>

<p>All reports export as <strong>PDF</strong> or <strong>CSV</strong>.</p>



<!-- ══════════ PART 9: DATA ══════════ -->

<div class="section-intro page-break">

  <div class="section-num">Part 9</div>

  <h2>Data Import</h2>

  <p>Move your existing records into EduTrack in bulk using CSV files.</p>

</div>



<h2 class="module-title" id="migration">35. Importing Data from Excel / CSV</h2>

<p><em>Accessible by:</em> <span class="role-badge role-admin">Admin only</span></p>

<p>EduTrack can import large numbers of records from CSV files (created in Microsoft Excel or Google Sheets). Go to <strong>Data Migration</strong> in the menu.</p>



<h3 class="sub-title">Import Students</h3>

<ol class="steps">

  <li>Go to <strong>Data Migration</strong> → select <strong>Students</strong>.</li>

  <li>Download the <strong>CSV Template</strong> and open it in Excel.</li>

  <li>Fill in one student per row without changing the column headers.</li>

  <li>Save as CSV (File → Save As → CSV UTF-8).</li>

  <li>Back in EduTrack, click <strong>Choose File</strong>, select your CSV, then click <strong>Import</strong>.</li>

  <li>A summary shows how many records were imported and any rows with errors.</li>

</ol>

<div class="callout callout-warn"><strong>Important:</strong> Column headers must match the template exactly. Key required columns: <code>first_name, last_name, class, sex, date_of_birth</code> plus at least one phone number column.</div>

<table>

  <tr><th>Column</th><th>What to Enter</th></tr>

  <tr><td><code>first_name</code> *</td><td>Student's first name</td></tr>

  <tr><td><code>last_name</code> *</td><td>Student's last/family name</td></tr>

  <tr><td><code>class</code> *</td><td>Class name — must match exactly as set up in EduTrack</td></tr>

  <tr><td><code>sex</code></td><td>Male or Female</td></tr>

  <tr><td><code>date_of_birth</code></td><td>Format: YYYY-MM-DD e.g. 2012-05-15</td></tr>

  <tr><td><code>father_phone</code> or <code>mother_phone</code></td><td>At least one phone number required</td></tr>

  <tr><td><code>email</code></td><td>Parent email (for receipts)</td></tr>

  <tr><td><code>parent_name</code></td><td>Parent / guardian full name</td></tr>

</table>



<h3 class="sub-title">Import Staff</h3>

<ol class="steps">

  <li>Go to <strong>Data Migration</strong> → select <strong>Staff</strong> → download and fill in the Staff CSV Template.</li>

  <li>Required columns: <code>full_name, phone, email, reg_no, class_assigned, subject_to_teach</code>.</li>

  <li>Upload the file and click <strong>Import</strong>.</li>

</ol>



<h3 class="sub-title">Import Payments</h3>

<ol class="steps">

  <li>Go to <strong>Data Migration</strong> → select <strong>Payments</strong> → download and fill in the Payments CSV Template.</li>

  <li>Required columns: <code>student_id, fee_type, amount_paid, payment_date, payment_method</code>.</li>

  <li>Upload and import.</li>

</ol>

<div class="callout callout-tip"><strong>Order matters:</strong> Always import <strong>students first</strong>, then payments. Payments reference student records — if a student does not exist yet, the payment row will fail.</div>



<!-- ══════════ PART 10: REFERENCE ══════════ -->

<div class="section-intro page-break">

  <div class="section-num">Part 10</div>

  <h2>Reference</h2>

  <p>Roles and permissions matrix, and answers to common questions.</p>

</div>



<h2 class="module-title" id="roles">36. Roles &amp; Permissions Matrix</h2>

<p>Every user is assigned a Role. Your role determines which menus and actions you can access.</p>

<table>

  <tr><th>Module</th><th>Admin</th><th>Headteacher</th><th>Registrar</th><th>Tutor (Teacher)</th><th>Accountant / Cashier</th><th>Parent</th></tr>

  <tr><td><strong>Dashboard</strong></td><td>✅ Full</td><td>✅ Full</td><td>—</td><td>—</td><td>✅ Finance only</td><td>—</td></tr>

  <tr><td><strong>Students</strong></td><td>✅ Full</td><td>✅ Full</td><td>✅ Full</td><td>View only</td><td>—</td><td>Own child only</td></tr>

  <tr><td><strong>Classes &amp; Subjects</strong></td><td>✅</td><td>✅</td><td>✅</td><td>View</td><td>—</td><td>—</td></tr>

  <tr><td><strong>Staff</strong></td><td>✅</td><td>✅</td><td>—</td><td>—</td><td>—</td><td>—</td></tr>

  <tr><td><strong>Fees &amp; Payments</strong></td><td>✅</td><td>View</td><td>—</td><td>—</td><td>✅ Full</td><td>View own</td></tr>

  <tr><td><strong>Express Collection</strong></td><td>✅</td><td>—</td><td>✅</td><td>—</td><td>✅</td><td>—</td></tr>

  <tr><td><strong>Expenses</strong></td><td>✅</td><td>View</td><td>—</td><td>—</td><td>✅</td><td>—</td></tr>

  <tr><td><strong>Online Payments</strong></td><td>✅</td><td>View</td><td>—</td><td>—</td><td>✅</td><td>Pay only</td></tr>

  <tr><td><strong>Attendance</strong></td><td>✅</td><td>✅</td><td>✅</td><td>✅ Own class</td><td>—</td><td>View own child</td></tr>

  <tr><td><strong>Timetable</strong></td><td>✅</td><td>✅</td><td>✅</td><td>View</td><td>—</td><td>View own child</td></tr>

  <tr><td><strong>Exams / Question Gen</strong></td><td>✅</td><td>✅</td><td>—</td><td>✅</td><td>—</td><td>—</td></tr>

  <tr><td><strong>Terminal Reports</strong></td><td>✅</td><td>✅</td><td>—</td><td>✅ Own class</td><td>—</td><td>View own child</td></tr>

  <tr><td><strong>Financial Reports</strong></td><td>✅</td><td>✅</td><td>—</td><td>—</td><td>✅</td><td>—</td></tr>

  <tr><td><strong>Communication</strong></td><td>✅ Full</td><td>✅ Full</td><td>✅ Full</td><td>✅ Full</td><td>—</td><td>Limited</td></tr>

  <tr><td><strong>Alerts / SMS</strong></td><td>✅</td><td>✅</td><td>—</td><td>—</td><td>✅</td><td>—</td></tr>

  <tr><td><strong>AI Agent</strong></td><td>✅ Premium</td><td>✅ Premium</td><td>—</td><td>—</td><td>✅ Premium</td><td>—</td></tr>

  <tr><td><strong>AI Analytics</strong></td><td>✅ Premium</td><td>✅ Premium</td><td>—</td><td>—</td><td>✅ Premium</td><td>—</td></tr>

  <tr><td><strong>Canteen Setup</strong></td><td>✅</td><td>✅</td><td>—</td><td>—</td><td>—</td><td>—</td></tr>

  <tr><td><strong>Canteen Scanner</strong></td><td>✅</td><td>✅</td><td>—</td><td>—</td><td>—</td><td>QR pass only</td></tr>

  <tr><td><strong>Canteen Reports</strong></td><td>✅</td><td>✅</td><td>—</td><td>—</td><td>✅</td><td>—</td></tr>

  <tr><td><strong>Settings</strong></td><td>✅</td><td>—</td><td>—</td><td>—</td><td>—</td><td>—</td></tr>

  <tr><td><strong>User Management</strong></td><td>✅</td><td>—</td><td>—</td><td>—</td><td>—</td><td>—</td></tr>

  <tr><td><strong>Data Import</strong></td><td>✅</td><td>—</td><td>—</td><td>—</td><td>—</td><td>—</td></tr>

</table>



<h2 class="module-title" id="tips">37. Troubleshooting &amp; Common Questions</h2>



<h3 class="sub-title">Common Questions</h3>



<p><strong>Q: I can't see a module in the menu.</strong><br>

A: Your user role does not include access to that module, or the module is not included in your school's plan. Contact your administrator to check your role assignment or upgrade your plan.</p>



<p><strong>Q: I added a fee structure but cannot record a payment for it.</strong><br>

A: The student must be enrolled in the same class the fee structure is linked to, and their status must be Active. Also verify the fee is for the current Academic Year (check Settings → Academic Settings).</p>



<p><strong>Q: A parent says they did not receive an SMS.</strong><br>

A: (1) Verify a phone number is entered on the student record. (2) Verify the Hubtel SMS API key is configured in Settings. (3) Check the phone number is in Ghanaian format (0244123456). (4) Check your Hubtel SMS credit balance.</p>



<p><strong>Q: The online payment succeeded but the student's fee shows as Unpaid.</strong><br>

A: The payment gateway callback may have been delayed. Wait 5–10 minutes and refresh. If still unpaid, check the admin panel's online payments log. As a last resort, record the payment manually using the transaction reference from Paystack/Hubtel.</p>



<p><strong>Q: I imported students from CSV but some rows failed.</strong><br>

A: Download the error report shown after import. Common causes: (1) Class name does not match exactly (e.g., "JHS2" vs "JHS 2"). (2) Date in wrong format — use YYYY-MM-DD. (3) No phone number in any contact field.</p>



<p><strong>Q: The parent portal shows "No fees found."</strong><br>

A: The fee structure must be for the class the student is currently enrolled in, and the Academic Year must match the current year set in Settings.</p>



<p><strong>Q: The AI Agent says "AI service unavailable."</strong><br>

A: Check that at least one AI API key is entered in Settings → AI Settings. The system tries all four providers in order. If all keys are missing or expired, the Agent cannot function.</p>



<p><strong>Q: The canteen scanner says "Invalid canteen pass" when scanning from the parent portal.</strong><br>

A: Confirm the parent is scanning the <strong>Session Pass QR</strong> (the one that shows "Canteen Pass — [Session Name] · Today") and not the permanent Identity QR (which is only for the fee desk). They look different in the parent portal and have different titles.</p>



<p><strong>Q: Can I undo a payment I recorded by mistake?</strong><br>

A: Yes. Go to the payments list, click Edit to correct it, or Delete to remove it entirely. Deleted payments cannot be recovered — double-check before deleting.</p>



<p><strong>Q: How do I change the current academic year?</strong><br>

A: Only an Admin can do this. Go to Settings → Academic Settings → update Current Academic Year → Save Settings.</p>



<h3 class="sub-title">Quick Reference Rules</h3>

<ul>

  <li>A student must have at least <strong>one contact phone number</strong>.</li>

  <li>Fees must be set up for a class <strong>before</strong> payments can be recorded against it.</li>

  <li>Attendance can only be marked for <strong>today or past dates</strong> — not future dates.</li>

  <li>The <strong>Academic Year</strong> in Settings affects all reports, fees, and class assignments.</li>

  <li>Parent Portal login uses the parent's <strong>phone number</strong> as the username.</li>

  <li>CSV imports must use the <strong>exact column names</strong> from the downloaded template.</li>

  <li>Online payment settlement requires the school's <strong>bank account to be configured</strong> in Settings.</li>

  <li>The Canteen Module requires <strong>students to have Identity QR tokens</strong> — generate them in Canteen → Settings → Student ID Cards.</li>

  <li>AI features (Agent, Analytics, At-Risk) are available on the <strong>Premium plan only</strong>.</li>

  <li>The Canteen Module is a <strong>separate add-on</strong> available on any plan for GHS 80/month.</li>

</ul>



<hr>

<div class="footer">

  EduTrack School Management System &nbsp;·&nbsp; Complete User Guide v2.0 &nbsp;·&nbsp; Oric Network Limited, Accra, Ghana<br>

  For technical support: WhatsApp <strong>+233 537 793 106</strong> · <strong>info@oricnetwork.com</strong> · Mon–Sat 8am–6pm

</div>

</div>



</body>

</html>

