[{"data":1,"prerenderedAt":1235},["ShallowReactive",2],{"navigation_docs_en":3,"-en-devops-development-setup":696,"-en-devops-development-setup-surround":1230},[4],{"title":5,"path":6,"stem":7,"children":8,"page":35},"En","\u002Fen","en",[9,36,102,159,210,253,295,326,357,385,412,432,452,479,514,533,556,583,606,628,653,672],{"title":10,"icon":11,"path":12,"stem":13,"children":14,"page":35},"Guides","i-lucide-book-open","\u002Fen\u002Fguides","en\u002F01.guides",[15,20,25,30],{"title":16,"path":17,"stem":18,"icon":19},"Getting Started","\u002Fen\u002Fguides\u002Fgetting-started","en\u002F01.guides\u002F01.getting-started","i-lucide-rocket",{"title":21,"path":22,"stem":23,"icon":24},"Documentation Directory","\u002Fen\u002Fguides\u002Fdirectory","en\u002F01.guides\u002F02.directory","i-lucide-folder-tree",{"title":26,"path":27,"stem":28,"icon":29},"Role-Based Access","\u002Fen\u002Fguides\u002Frole-based-access","en\u002F01.guides\u002F03.role-based-access","i-lucide-users",{"title":31,"path":32,"stem":33,"icon":34},"Support, Error Reporting & Feature Requests","\u002Fen\u002Fguides\u002Fsupport-error-reporting","en\u002F01.guides\u002F04.support-error-reporting","i-lucide-life-buoy",false,{"title":37,"icon":38,"path":39,"stem":40,"children":41,"page":35},"Director Guide","i-lucide-building-2","\u002Fen\u002Fdirector","en\u002F02.director",[42,47,52,57,62,67,72,77,82,87,92,97],{"title":43,"path":44,"stem":45,"icon":46},"Director Dashboard Overview","\u002Fen\u002Fdirector\u002Foverview","en\u002F02.director\u002F01.overview","i-lucide-layout-dashboard",{"title":48,"path":49,"stem":50,"icon":51},"Student Risk Engine & Early Warnings","\u002Fen\u002Fdirector\u002Fstudent-risk","en\u002F02.director\u002F02.student-risk","i-lucide-alert-triangle",{"title":53,"path":54,"stem":55,"icon":56},"Siren & School Bell System","\u002Fen\u002Fdirector\u002Fsiren-management","en\u002F02.director\u002F03.siren-management","i-lucide-bell-ring",{"title":58,"path":59,"stem":60,"icon":61},"Exam Seating & Hall Allocation","\u002Fen\u002Fdirector\u002Fexam-seating","en\u002F02.director\u002F04.exam-seating","i-lucide-grid",{"title":63,"path":64,"stem":65,"icon":66},"Reports, Analytics & Data Health","\u002Fen\u002Fdirector\u002Freports-analytics","en\u002F02.director\u002F05.reports-analytics","i-lucide-bar-chart-3",{"title":68,"path":69,"stem":70,"icon":71},"School Transport & Bus Routes","\u002Fen\u002Fdirector\u002Ftransport","en\u002F02.director\u002F06.transport","i-lucide-bus",{"title":73,"path":74,"stem":75,"icon":76},"School Settings & Policies","\u002Fen\u002Fdirector\u002Fschool-settings","en\u002F02.director\u002F07.school-settings","i-lucide-sliders",{"title":78,"path":79,"stem":80,"icon":81},"Subscription & Billing","\u002Fen\u002Fdirector\u002Fsubscription-billing","en\u002F02.director\u002F08.subscription-billing","i-lucide-credit-card",{"title":83,"path":84,"stem":85,"icon":86},"Credentials & Login Slips","\u002Fen\u002Fdirector\u002Fcredentials-management","en\u002F02.director\u002F09.credentials-management","i-lucide-key-round",{"title":88,"path":89,"stem":90,"icon":91},"Teacher Performance & Evaluation","\u002Fen\u002Fdirector\u002Fteacher-evaluation","en\u002F02.director\u002F10.teacher-evaluation","i-lucide-trophy",{"title":93,"path":94,"stem":95,"icon":96},"PTA Parent Presentation Generator","\u002Fen\u002Fdirector\u002Fparent-presentation","en\u002F02.director\u002F11.parent-presentation","i-lucide-presentation",{"title":98,"path":99,"stem":100,"icon":101},"Data Consistency & Health Audit","\u002Fen\u002Fdirector\u002Fdata-consistency","en\u002F02.director\u002F12.data-consistency","i-lucide-stethoscope",{"title":103,"icon":11,"path":104,"stem":105,"children":106,"page":35},"Teacher Guide","\u002Fen\u002Fteacher","en\u002F03.teacher",[107,111,116,121,126,131,136,141,146,150,155],{"title":108,"path":109,"stem":110,"icon":46},"Teacher Dashboard Overview","\u002Fen\u002Fteacher\u002Foverview","en\u002F03.teacher\u002F01.overview",{"title":112,"path":113,"stem":114,"icon":115},"Attendance Marking","\u002Fen\u002Fteacher\u002Fattendance-marking","en\u002F03.teacher\u002F02.attendance-marking","i-lucide-check-circle-2",{"title":117,"path":118,"stem":119,"icon":120},"Gradebook & Continuous Assessments","\u002Fen\u002Fteacher\u002Fgradebook-entry","en\u002F03.teacher\u002F03.gradebook-entry","i-lucide-award",{"title":122,"path":123,"stem":124,"icon":125},"Lesson Plans & Assignments","\u002Fen\u002Fteacher\u002Flessons-assignments","en\u002F03.teacher\u002F04.lessons-assignments","i-lucide-book-marked",{"title":127,"path":128,"stem":129,"icon":130},"Student Discipline & Behavior Logs","\u002Fen\u002Fteacher\u002Fdiscipline","en\u002F03.teacher\u002F05.discipline","i-lucide-shield-alert",{"title":132,"path":133,"stem":134,"icon":135},"AI Teaching Copilot","\u002Fen\u002Fteacher\u002Fai-copilot","en\u002F03.teacher\u002F06.ai-copilot","i-lucide-sparkles",{"title":137,"path":138,"stem":139,"icon":140},"Risk & Analytics","\u002Fen\u002Fteacher\u002Frisk-analytics","en\u002F03.teacher\u002F07.risk-analytics","i-lucide-chart-line",{"title":142,"path":143,"stem":144,"icon":145},"Early Childhood & KG Care","\u002Fen\u002Fteacher\u002Fearly-childhood-kg","en\u002F03.teacher\u002F08.early-childhood-kg","i-lucide-baby",{"title":147,"path":148,"stem":149,"icon":125},"Curriculum & Textbook Units","\u002Fen\u002Fteacher\u002Fcurriculum-syllabus","en\u002F03.teacher\u002F09.curriculum-syllabus",{"title":151,"path":152,"stem":153,"icon":154},"Period Swaps & AI Substitution","\u002Fen\u002Fteacher\u002Fperiod-swaps","en\u002F03.teacher\u002F10.period-swaps","i-lucide-arrow-left-right",{"title":156,"path":157,"stem":158,"icon":29},"Homeroom & Class Teacher Workspace","\u002Fen\u002Fteacher\u002Fhomeroom-management","en\u002F03.teacher\u002F11.homeroom-management",{"title":160,"icon":161,"path":162,"stem":163,"children":164,"page":35},"Registrar Guide","i-lucide-user-check","\u002Fen\u002Fregistrar","en\u002F04.registrar",[165,169,174,179,183,187,192,197,201,205],{"title":166,"path":167,"stem":168,"icon":46},"Registrar Overview","\u002Fen\u002Fregistrar\u002Foverview","en\u002F04.registrar\u002F01.overview",{"title":170,"path":171,"stem":172,"icon":173},"Student Enrollment","\u002Fen\u002Fregistrar\u002Fenroll-student","en\u002F04.registrar\u002F02.enroll-student","i-lucide-user-plus",{"title":175,"path":176,"stem":177,"icon":178},"Bulk Import & Provisioning","\u002Fen\u002Fregistrar\u002Fbulk-import","en\u002F04.registrar\u002F03.bulk-import","i-lucide-file-spreadsheet",{"title":180,"path":181,"stem":182,"icon":29},"Student Management","\u002Fen\u002Fregistrar\u002Fstudent-management","en\u002F04.registrar\u002F04.student-management",{"title":184,"path":185,"stem":186,"icon":81},"Student ID Cards","\u002Fen\u002Fregistrar\u002Fid-cards","en\u002F04.registrar\u002F05.id-cards",{"title":188,"path":189,"stem":190,"icon":191},"Generate Report Cards","\u002Fen\u002Fregistrar\u002Freport-cards","en\u002F04.registrar\u002F06.report-cards","i-lucide-file-text",{"title":193,"path":194,"stem":195,"icon":196},"Grade Promotion Engine","\u002Fen\u002Fregistrar\u002Fpromotion","en\u002F04.registrar\u002F07.promotion","i-lucide-trending-up",{"title":198,"path":199,"stem":200,"icon":29},"Staff Management","\u002Fen\u002Fregistrar\u002Fstaff-management","en\u002F04.registrar\u002F08.staff-management",{"title":202,"path":203,"stem":204,"icon":120},"Custom Certificate & Transcript Builder","\u002Fen\u002Fregistrar\u002Fcertificate-templates","en\u002F04.registrar\u002F09.certificate-templates",{"title":206,"path":207,"stem":208,"icon":209},"School-Leaving Clearance & Transfer Certificates","\u002Fen\u002Fregistrar\u002Fschool-leaving-clearance","en\u002F04.registrar\u002F10.school-leaving-clearance","i-lucide-file-check",{"title":211,"icon":81,"path":212,"stem":213,"children":214,"page":35},"Finance Guide","\u002Fen\u002Ffinance","en\u002F05.finance",[215,219,224,229,234,239,244,248],{"title":216,"path":217,"stem":218,"icon":46},"Finance Dashboard Overview","\u002Fen\u002Ffinance\u002Foverview","en\u002F05.finance\u002F01.overview",{"title":220,"path":221,"stem":222,"icon":223},"Fee Structures","\u002Fen\u002Ffinance\u002Ffee-structures","en\u002F05.finance\u002F02.fee-structures","i-lucide-list-checks",{"title":225,"path":226,"stem":227,"icon":228},"Installment Plans","\u002Fen\u002Ffinance\u002Finstallment-plans","en\u002F05.finance\u002F03.installment-plans","i-lucide-calendar-clock",{"title":230,"path":231,"stem":232,"icon":233},"Discount Policies","\u002Fen\u002Ffinance\u002Fdiscounts","en\u002F05.finance\u002F04.discounts","i-lucide-tag",{"title":235,"path":236,"stem":237,"icon":238},"Recording a Payment","\u002Fen\u002Ffinance\u002Frecord-payment","en\u002F05.finance\u002F05.record-payment","i-lucide-circle-dollar-sign",{"title":240,"path":241,"stem":242,"icon":243},"Payment Receipts","\u002Fen\u002Ffinance\u002Freceipts","en\u002F05.finance\u002F06.receipts","i-lucide-receipt",{"title":245,"path":246,"stem":247,"icon":51},"Overdue Fee Reports","\u002Fen\u002Ffinance\u002Foverdue-reports","en\u002F05.finance\u002F07.overdue-reports",{"title":249,"path":250,"stem":251,"icon":252},"Staff Payroll & Salaries","\u002Fen\u002Ffinance\u002Fpayroll","en\u002F05.finance\u002F08.payroll","i-lucide-wallet",{"title":254,"icon":255,"path":256,"stem":257,"children":258,"page":35},"Parent & Student Guide","i-lucide-heart-handshake","\u002Fen\u002Fparent","en\u002F06.parent",[259,263,268,272,276,281,286,291],{"title":260,"path":261,"stem":262,"icon":46},"Parent Dashboard Overview","\u002Fen\u002Fparent\u002Foverview","en\u002F06.parent\u002F01.overview",{"title":264,"path":265,"stem":266,"icon":267},"Parent Attendance Monitoring","\u002Fen\u002Fparent\u002Fattendance","en\u002F06.parent\u002F02.attendance","i-lucide-calendar-check",{"title":269,"path":270,"stem":271,"icon":196},"Viewing Grades","\u002Fen\u002Fparent\u002Fgrades","en\u002F06.parent\u002F03.grades",{"title":273,"path":274,"stem":275,"icon":191},"Report Cards","\u002Fen\u002Fparent\u002Freport-cards","en\u002F06.parent\u002F04.report-cards",{"title":277,"path":278,"stem":279,"icon":280},"Student Portal","\u002Fen\u002Fparent\u002Fstudent-portal","en\u002F06.parent\u002F05.student-portal","i-lucide-graduation-cap",{"title":282,"path":283,"stem":284,"icon":285},"Student Timetable","\u002Fen\u002Fparent\u002Ftimetable","en\u002F06.parent\u002F06.timetable","i-lucide-clock",{"title":287,"path":288,"stem":289,"icon":290},"School Bookstore & Uniform Orders","\u002Fen\u002Fparent\u002Funiform-bookstore","en\u002F06.parent\u002F07.uniform-bookstore","i-lucide-shopping-bag",{"title":292,"path":293,"stem":294,"icon":130},"Behavior, Merit Awards & Pastoral Care","\u002Fen\u002Fparent\u002Fdiscipline-merits","en\u002F06.parent\u002F08.discipline-merits",{"title":296,"icon":280,"path":297,"stem":298,"children":299,"page":35},"Student Guide","\u002Fen\u002Fstudent","en\u002F07.student",[300,304,309,313,317,322],{"title":301,"path":302,"stem":303,"icon":46},"Student Portal Overview","\u002Fen\u002Fstudent\u002Foverview","en\u002F07.student\u002F01.overview",{"title":305,"path":306,"stem":307,"icon":308},"Online Examination Portal","\u002Fen\u002Fstudent\u002Fonline-exams","en\u002F07.student\u002F02.online-exams","i-lucide-monitor-check",{"title":310,"path":311,"stem":312,"icon":191},"Assignments & Digital Lessons","\u002Fen\u002Fstudent\u002Fassignments","en\u002F07.student\u002F03.assignments",{"title":314,"path":315,"stem":316,"icon":120},"Grades & Terminal Report Cards","\u002Fen\u002Fstudent\u002Fgrades-report-cards","en\u002F07.student\u002F04.grades-report-cards",{"title":318,"path":319,"stem":320,"icon":321},"Computer-Based Testing (CBT) & Exam Proctoring","\u002Fen\u002Fstudent\u002Fcbt-examination-guide","en\u002F07.student\u002F05.cbt-examination-guide","i-lucide-monitor-play",{"title":323,"path":324,"stem":325,"icon":71},"School Bus & Transport Tracking","\u002Fen\u002Fstudent\u002Ftransport","en\u002F07.student\u002F06.transport",{"title":327,"icon":280,"path":328,"stem":329,"children":330,"page":35},"Academic Management","\u002Fen\u002Facademic","en\u002F08.academic",[331,336,341,345,349,353],{"title":332,"path":333,"stem":334,"icon":335},"Academic Years & Terms","\u002Fen\u002Facademic\u002Facademic-years","en\u002F08.academic\u002F01.academic-years","i-lucide-calendar",{"title":337,"path":338,"stem":339,"icon":340},"Classes & Sections","\u002Fen\u002Facademic\u002Fclasses-sections","en\u002F08.academic\u002F02.classes-sections","i-lucide-shapes",{"title":342,"path":343,"stem":344,"icon":11},"Subjects & Lessons","\u002Fen\u002Facademic\u002Fsubjects","en\u002F08.academic\u002F03.subjects",{"title":346,"path":347,"stem":348,"icon":285},"Timetables","\u002Fen\u002Facademic\u002Ftimetable","en\u002F08.academic\u002F04.timetable",{"title":350,"path":351,"stem":352,"icon":280},"Academic Overview","\u002Fen\u002Facademic\u002Facademic-overview","en\u002F08.academic\u002F05.academic-overview",{"title":354,"path":355,"stem":356,"icon":125},"Curriculum Framework","\u002Fen\u002Facademic\u002Fcurriculum-mapping","en\u002F08.academic\u002F06.curriculum-mapping",{"title":358,"icon":359,"path":360,"stem":361,"children":362,"page":35},"Examinations","i-lucide-pen-tool","\u002Fen\u002Fexams","en\u002F09.exams",[363,367,372,377,381],{"title":364,"path":365,"stem":366,"icon":359},"Examinations & Continuous Assessments","\u002Fen\u002Fexams\u002Fexams-assessments","en\u002F09.exams\u002F01.exams-assessments",{"title":368,"path":369,"stem":370,"icon":371},"Exam Setup & Configuration","\u002Fen\u002Fexams\u002Fexam-setup","en\u002F09.exams\u002F02.exam-setup","i-lucide-settings-2",{"title":373,"path":374,"stem":375,"icon":376},"Online Computer-Based Testing System","\u002Fen\u002Fexams\u002Fonline-exams-system","en\u002F09.exams\u002F03.online-exams-system","i-lucide-laptop",{"title":378,"path":379,"stem":380,"icon":120},"National & Regional Exams","\u002Fen\u002Fexams\u002Fnational-examinations","en\u002F09.exams\u002F04.national-examinations",{"title":382,"path":383,"stem":384,"icon":61},"Exam Seating & Hall Generator","\u002Fen\u002Fexams\u002Fexam-seating-halls","en\u002F09.exams\u002F05.exam-seating-halls",{"title":386,"icon":387,"path":388,"stem":389,"children":390,"page":35},"Inventory & Store Guide","i-lucide-boxes","\u002Fen\u002Finventory","en\u002F10.inventory",[391,395,400,404,408],{"title":392,"path":393,"stem":394,"icon":46},"Inventory & Store Management Overview","\u002Fen\u002Finventory\u002Foverview","en\u002F10.inventory\u002F01.overview",{"title":396,"path":397,"stem":398,"icon":399},"Managing Catalog & Categories","\u002Fen\u002Finventory\u002Fitems-categories","en\u002F10.inventory\u002F02.items-categories","i-lucide-tags",{"title":401,"path":402,"stem":403,"icon":154},"Stock In, Stock Out & Requisitions","\u002Fen\u002Finventory\u002Fstock-transactions","en\u002F10.inventory\u002F03.stock-transactions",{"title":405,"path":406,"stem":407,"icon":290},"School Uniform & Book Store","\u002Fen\u002Finventory\u002Fschool-store","en\u002F10.inventory\u002F04.school-store",{"title":409,"path":410,"stem":411,"icon":290},"Bookstore & Uniform Sales","\u002Fen\u002Finventory\u002Fbookstore-uniforms","en\u002F10.inventory\u002F05.bookstore-uniforms",{"title":413,"icon":414,"path":415,"stem":416,"children":417,"page":35},"Academic Supervisor Guide","i-lucide-clipboard-check","\u002Fen\u002Fsupervisor","en\u002F11.supervisor",[418,422,427],{"title":419,"path":420,"stem":421,"icon":46},"Academic Supervision Overview","\u002Fen\u002Fsupervisor\u002Foverview","en\u002F11.supervisor\u002F01.overview",{"title":423,"path":424,"stem":425,"icon":426},"Lesson Plan Approvals & Feedback","\u002Fen\u002Fsupervisor\u002Flesson-plan-reviews","en\u002F11.supervisor\u002F02.lesson-plan-reviews","i-lucide-file-check-2",{"title":428,"path":429,"stem":430,"icon":431},"Classroom Observations & Rubrics","\u002Fen\u002Fsupervisor\u002Fclassroom-observations","en\u002F11.supervisor\u002F03.classroom-observations","i-lucide-clipboard-signature",{"title":433,"icon":434,"path":435,"stem":436,"children":437,"page":35},"Communication","i-lucide-message-circle","\u002Fen\u002Fcommunication","en\u002F12.communication",[438,443,447],{"title":439,"path":440,"stem":441,"icon":442},"School Announcements & Broadcasts","\u002Fen\u002Fcommunication\u002Fannouncements","en\u002F12.communication\u002F01.announcements","i-lucide-megaphone",{"title":444,"path":445,"stem":446,"icon":434},"Communication Overview","\u002Fen\u002Fcommunication\u002Fcommunication-overview","en\u002F12.communication\u002F02.communication-overview",{"title":448,"path":449,"stem":450,"icon":451},"Digital Communication Book","\u002Fen\u002Fcommunication\u002Fcommunication-book","en\u002F12.communication\u002F03.communication-book","i-lucide-book-heart",{"title":453,"icon":135,"path":454,"stem":455,"children":456,"page":35},"AI Intelligence Suite","\u002Fen\u002Fai","en\u002F13.ai",[457,462,466,470,474],{"title":458,"path":459,"stem":460,"icon":461},"Interactive AI Assistant","\u002Fen\u002Fai\u002Foverview","en\u002F13.ai\u002F01.overview","i-lucide-bot",{"title":463,"path":464,"stem":465,"icon":135},"Autonomous Background Autopilots","\u002Fen\u002Fai\u002Fautonomous-autopilot","en\u002F13.ai\u002F02.autonomous-autopilot",{"title":467,"path":468,"stem":469,"icon":461},"Timetable Substitution Watchdog","\u002Fen\u002Fai\u002Ftimetable-watchdog","en\u002F13.ai\u002F03.timetable-watchdog",{"title":471,"path":472,"stem":473,"icon":255},"Empathetic Parent Dialogue","\u002Fen\u002Fai\u002Fparent-empathy-dialogue","en\u002F13.ai\u002F04.parent-empathy-dialogue",{"title":475,"path":476,"stem":477,"icon":478},"AI Configuration & Settings","\u002Fen\u002Fai\u002Fai-settings","en\u002F13.ai\u002F05.ai-settings","i-lucide-wrench",{"title":480,"icon":481,"path":482,"stem":483,"children":484,"page":35},"Platform Features","i-lucide-settings","\u002Fen\u002Fplatform","en\u002F14.platform",[485,490,495,500,505,509],{"title":486,"path":487,"stem":488,"icon":489},"Language & Localisation","\u002Fen\u002Fplatform\u002Flanguage","en\u002F14.platform\u002F01.language","i-lucide-languages",{"title":491,"path":492,"stem":493,"icon":494},"Ethiopian & Gregorian Calendar","\u002Fen\u002Fplatform\u002Fcalendar","en\u002F14.platform\u002F02.calendar","i-lucide-calendar-days",{"title":496,"path":497,"stem":498,"icon":499},"Offline Mode (PWA)","\u002Fen\u002Fplatform\u002Foffline","en\u002F14.platform\u002F03.offline","i-lucide-wifi-off",{"title":501,"path":502,"stem":503,"icon":504},"Notifications","\u002Fen\u002Fplatform\u002Fnotifications","en\u002F14.platform\u002F04.notifications","i-lucide-bell",{"title":506,"path":507,"stem":508,"icon":504},"Siren \u002F Bell Management","\u002Fen\u002Fplatform\u002Fsiren-management","en\u002F14.platform\u002F05.siren-management",{"title":510,"path":511,"stem":512,"icon":513},"User Profile, 2FA & Account Security","\u002Fen\u002Fplatform\u002Fuser-profile-security","en\u002F14.platform\u002F06.user-profile-security","i-lucide-shield-check",{"title":515,"icon":516,"path":517,"stem":518,"children":519,"page":35},"School Owner & Executive Guide","i-lucide-crown","\u002Fen\u002Fowner","en\u002F15.owner",[520,524,529],{"title":521,"path":522,"stem":523,"icon":46},"School Owner Executive Overview","\u002Fen\u002Fowner\u002Foverview","en\u002F15.owner\u002F01.overview",{"title":525,"path":526,"stem":527,"icon":528},"Multi-Branch & Campus Comparison","\u002Fen\u002Fowner\u002Fmulti-branch","en\u002F15.owner\u002F02.multi-branch","i-lucide-network",{"title":530,"path":531,"stem":532,"icon":528},"Inter-Branch Operations & Consolidation","\u002Fen\u002Fowner\u002Fbranch-transfers-consolidation","en\u002F15.owner\u002F03.branch-transfers-consolidation",{"title":534,"icon":535,"path":536,"stem":537,"children":538,"page":35},"School Operations","i-lucide-building","\u002Fen\u002Foperations","en\u002F16.operations",[539,543,547,551],{"title":540,"path":541,"stem":542,"icon":71},"Transport & Fleet Management","\u002Fen\u002Foperations\u002Ftransport","en\u002F16.operations\u002F01.transport",{"title":544,"path":545,"stem":546,"icon":494},"School Events & Calendar Planner","\u002Fen\u002Foperations\u002Fevents-calendar","en\u002F16.operations\u002F02.events-calendar",{"title":548,"path":549,"stem":550,"icon":513},"Data Quality & Security Logs","\u002Fen\u002Foperations\u002Fdata-quality-audit","en\u002F16.operations\u002F03.data-quality-audit",{"title":552,"path":553,"stem":554,"icon":555},"Timetable Auto-Assignment Engine","\u002Fen\u002Foperations\u002Ftimetable-engine","en\u002F16.operations\u002F04.timetable-engine","i-lucide-cpu",{"title":557,"icon":558,"path":559,"stem":560,"children":561,"page":35},"Mobile App Guide","i-lucide-smartphone","\u002Fen\u002Fmobile","en\u002F17.mobile",[562,566,570,574,579],{"title":563,"path":564,"stem":565,"icon":558},"Mobile App Overview","\u002Fen\u002Fmobile\u002Foverview","en\u002F17.mobile\u002F01.overview",{"title":567,"path":568,"stem":569,"icon":11},"Teacher Mobile Experience","\u002Fen\u002Fmobile\u002Fteacher-mobile","en\u002F17.mobile\u002F02.teacher-mobile",{"title":571,"path":572,"stem":573,"icon":255},"Parent Mobile Experience","\u002Fen\u002Fmobile\u002Fparent-mobile","en\u002F17.mobile\u002F03.parent-mobile",{"title":575,"path":576,"stem":577,"icon":578},"QR & Barcode Attendance Scanning","\u002Fen\u002Fmobile\u002Fqr-attendance","en\u002F17.mobile\u002F04.qr-attendance","i-lucide-qr-code",{"title":580,"path":581,"stem":582,"icon":499},"Mobile Offline Sync Engine","\u002Fen\u002Fmobile\u002Foffline-sync","en\u002F17.mobile\u002F05.offline-sync",{"title":584,"icon":585,"path":586,"stem":587,"children":588,"page":35},"Documents & Compliance","i-lucide-folder-archive","\u002Fen\u002Fdocuments","en\u002F18.documents",[589,593,597,601],{"title":590,"path":591,"stem":592,"icon":585},"Documents & Compliance Overview","\u002Fen\u002Fdocuments\u002Foverview","en\u002F18.documents\u002F01.overview",{"title":594,"path":595,"stem":596,"icon":513},"Student Compliance Tracking","\u002Fen\u002Fdocuments\u002Fstudent-compliance","en\u002F18.documents\u002F02.student-compliance",{"title":598,"path":599,"stem":600,"icon":161},"Parent Uploads & Review Queue","\u002Fen\u002Fdocuments\u002Fparent-submissions","en\u002F18.documents\u002F03.parent-submissions",{"title":602,"path":603,"stem":604,"icon":605},"Institutional Policies & Handbooks","\u002Fen\u002Fdocuments\u002Finstitutional-policies","en\u002F18.documents\u002F04.institutional-policies","i-lucide-files",{"title":607,"icon":130,"path":608,"stem":609,"children":610,"page":35},"Super Admin & Platform Operations","\u002Fen\u002Fsuperadmin","en\u002F19.superadmin",[611,615,619,623],{"title":612,"path":613,"stem":614,"icon":46},"Super Admin Overview","\u002Fen\u002Fsuperadmin\u002Foverview","en\u002F19.superadmin\u002F01.overview",{"title":616,"path":617,"stem":618,"icon":535},"Tenant Provisioning","\u002Fen\u002Fsuperadmin\u002Ftenant-management","en\u002F19.superadmin\u002F02.tenant-management",{"title":620,"path":621,"stem":622,"icon":81},"Subscriptions & Billing","\u002Fen\u002Fsuperadmin\u002Fsubscriptions-billing","en\u002F19.superadmin\u002F03.subscriptions-billing",{"title":624,"path":625,"stem":626,"icon":627},"System Monitoring","\u002Fen\u002Fsuperadmin\u002Fsystem-monitoring","en\u002F19.superadmin\u002F04.system-monitoring","i-lucide-activity",{"title":629,"icon":630,"path":631,"stem":632,"children":633,"page":35},"DevOps & Deployment","i-lucide-server","\u002Fen\u002Fdevops","en\u002F20.devops",[634,638,643,648],{"title":635,"path":636,"stem":637,"icon":528},"Deployment Architecture","\u002Fen\u002Fdevops\u002Foverview","en\u002F20.devops\u002F01.overview",{"title":639,"path":640,"stem":641,"icon":642},"Production Docker Runbook","\u002Fen\u002Fdevops\u002Fdocker-deployment","en\u002F20.devops\u002F02.docker-deployment","i-lucide-box",{"title":644,"path":645,"stem":646,"icon":647},"Development Setup","\u002Fen\u002Fdevops\u002Fdevelopment-setup","en\u002F20.devops\u002F03.development-setup","i-lucide-code-2",{"title":649,"path":650,"stem":651,"icon":652},"Backups & Disaster Recovery","\u002Fen\u002Fdevops\u002Fbackup-disaster-recovery","en\u002F20.devops\u002F04.backup-disaster-recovery","i-lucide-database-backup",{"title":654,"icon":513,"path":655,"stem":656,"children":657,"page":35},"Security & Compliance","\u002Fen\u002Fsecurity","en\u002F21.security",[658,663,668],{"title":659,"path":660,"stem":661,"icon":662},"Security Architecture","\u002Fen\u002Fsecurity\u002Foverview","en\u002F21.security\u002F01.overview","i-lucide-shield",{"title":664,"path":665,"stem":666,"icon":667},"Data Privacy & Compliance","\u002Fen\u002Fsecurity\u002Fdata-privacy-compliance","en\u002F21.security\u002F02.data-privacy-compliance","i-lucide-lock",{"title":669,"path":670,"stem":671,"icon":513},"File Upload Hardening","\u002Fen\u002Fsecurity\u002Ffile-upload-hardening","en\u002F21.security\u002F03.file-upload-hardening",{"title":673,"icon":555,"path":674,"stem":675,"children":676,"page":35},"Hardware & Integrations","\u002Fen\u002Fintegrations","en\u002F22.integrations",[677,682,686,691],{"title":678,"path":679,"stem":680,"icon":681},"Integrations Overview","\u002Fen\u002Fintegrations\u002Foverview","en\u002F22.integrations\u002F01.overview","i-lucide-layers",{"title":683,"path":684,"stem":685,"icon":56},"Smart Siren & Bell","\u002Fen\u002Fintegrations\u002Fsmart-siren-iot","en\u002F22.integrations\u002F02.smart-siren-iot",{"title":687,"path":688,"stem":689,"icon":690},"RFID & NFC Smart Kiosk","\u002Fen\u002Fintegrations\u002Frfid-nfc-kiosk","en\u002F22.integrations\u002F03.rfid-nfc-kiosk","i-lucide-contact",{"title":692,"path":693,"stem":694,"icon":695},"Messaging Gateways","\u002Fen\u002Fintegrations\u002Fmessaging-gateways","en\u002F22.integrations\u002F04.messaging-gateways","i-lucide-messages-square",{"id":697,"title":698,"body":699,"description":1223,"extension":1224,"links":1225,"meta":1226,"navigation":1227,"path":645,"seo":1228,"stem":646,"__hash__":1229},"docs_en\u002Fen\u002F20.devops\u002F03.development-setup.md","Local Development & Developer Environment Setup",{"type":700,"value":701,"toc":1214},"minimark",[702,706,710,713,718,726,802,805,856,858,862,865,870,896,900,1011,1016,1020,1074,1079,1081,1085,1210],[703,704,698],"h1",{"id":705},"local-development-developer-environment-setup",[707,708,709],"p",{},"This guide details how software engineers and school technical teams can run YeneSchool in a local development environment with instant hot-reloading and debug tooling.",[711,712],"hr",{},[714,715,717],"h2",{"id":716},"_1-quick-start-with-docker-dev-stack","1. Quick Start with Docker Dev Stack",[707,719,720,721,725],{},"The fastest path to a running development environment is ",[722,723,724],"code",{},"docker-compose.dev.yml",". It boots isolated dev volumes so you never mix dev and production databases:",[727,728,733],"pre",{"className":729,"code":730,"language":731,"meta":732,"style":732},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Clone the repository\ngit clone https:\u002F\u002Fgithub.com\u002Fyour-org\u002FYeneSchool-School-Management-System.git\ncd YeneSchool-School-Management-System\n\n# Start dev stack with live file mounting and hot reload\ndocker compose -f docker-compose.dev.yml up --build\n","bash","",[722,734,735,744,758,768,775,781],{"__ignoreMap":732},[736,737,740],"span",{"class":738,"line":739},"line",1,[736,741,743],{"class":742},"sHwdD","# Clone the repository\n",[736,745,747,751,755],{"class":738,"line":746},2,[736,748,750],{"class":749},"sBMFI","git",[736,752,754],{"class":753},"sfazB"," clone",[736,756,757],{"class":753}," https:\u002F\u002Fgithub.com\u002Fyour-org\u002FYeneSchool-School-Management-System.git\n",[736,759,761,765],{"class":738,"line":760},3,[736,762,764],{"class":763},"s2Zo4","cd",[736,766,767],{"class":753}," YeneSchool-School-Management-System\n",[736,769,771],{"class":738,"line":770},4,[736,772,774],{"emptyLinePlaceholder":773},true,"\n",[736,776,778],{"class":738,"line":777},5,[736,779,780],{"class":742},"# Start dev stack with live file mounting and hot reload\n",[736,782,784,787,790,793,796,799],{"class":738,"line":783},6,[736,785,786],{"class":749},"docker",[736,788,789],{"class":753}," compose",[736,791,792],{"class":753}," -f",[736,794,795],{"class":753}," docker-compose.dev.yml",[736,797,798],{"class":753}," up",[736,800,801],{"class":753}," --build\n",[707,803,804],{},"Once booting completes:",[806,807,808,820,829,838],"ul",{},[809,810,811,815,816,819],"li",{},[812,813,814],"strong",{},"Frontend App",": Accessible at ",[722,817,818],{},"http:\u002F\u002Flocalhost:8000"," (live hot reload on edit).",[809,821,822,815,825,828],{},[812,823,824],{},"Backend API",[722,826,827],{},"http:\u002F\u002Flocalhost:8001"," (NestJS watcher).",[809,830,831,815,834,837],{},[812,832,833],{},"Swagger API Docs",[722,835,836],{},"http:\u002F\u002Flocalhost:8001\u002Fapi\u002Fdocs",".",[809,839,840,843,844,847,848,851,852,855],{},[812,841,842],{},"PostgreSQL",": Bound to host port ",[722,845,846],{},"5433"," (username: ",[722,849,850],{},"lemari",", database: ",[722,853,854],{},"lemarisms",").",[711,857],{},[714,859,861],{"id":860},"_2-manual-setup-without-docker-for-node-services","2. Manual Setup (Without Docker for Node Services)",[707,863,864],{},"If you prefer running Node services directly on your host machine while running PostgreSQL and Redis in Docker:",[866,867,869],"h3",{"id":868},"step-1-start-database-redis","Step 1: Start Database & Redis",[727,871,873],{"className":729,"code":872,"language":731,"meta":732,"style":732},"docker compose -f docker-compose.dev.yml up -d postgres redis\n",[722,874,875],{"__ignoreMap":732},[736,876,877,879,881,883,885,887,890,893],{"class":738,"line":739},[736,878,786],{"class":749},[736,880,789],{"class":753},[736,882,792],{"class":753},[736,884,795],{"class":753},[736,886,798],{"class":753},[736,888,889],{"class":753}," -d",[736,891,892],{"class":753}," postgres",[736,894,895],{"class":753}," redis\n",[866,897,899],{"id":898},"step-2-configure-start-backend","Step 2: Configure & Start Backend",[727,901,903],{"className":729,"code":902,"language":731,"meta":732,"style":732},"cd backend\nnpm install\n\n# Copy development environment config\ncp .env.example .env\n\n# Run Prisma database migrations\nnpx prisma migrate dev\n\n# Seed test schools, demo students, and staff accounts\nnpx prisma db seed\n\n# Start NestJS development server with watch mode\nnpm run start:dev\n",[722,904,905,912,920,924,929,940,944,950,965,970,976,989,994,1000],{"__ignoreMap":732},[736,906,907,909],{"class":738,"line":739},[736,908,764],{"class":763},[736,910,911],{"class":753}," backend\n",[736,913,914,917],{"class":738,"line":746},[736,915,916],{"class":749},"npm",[736,918,919],{"class":753}," install\n",[736,921,922],{"class":738,"line":760},[736,923,774],{"emptyLinePlaceholder":773},[736,925,926],{"class":738,"line":770},[736,927,928],{"class":742},"# Copy development environment config\n",[736,930,931,934,937],{"class":738,"line":777},[736,932,933],{"class":749},"cp",[736,935,936],{"class":753}," .env.example",[736,938,939],{"class":753}," .env\n",[736,941,942],{"class":738,"line":783},[736,943,774],{"emptyLinePlaceholder":773},[736,945,947],{"class":738,"line":946},7,[736,948,949],{"class":742},"# Run Prisma database migrations\n",[736,951,953,956,959,962],{"class":738,"line":952},8,[736,954,955],{"class":749},"npx",[736,957,958],{"class":753}," prisma",[736,960,961],{"class":753}," migrate",[736,963,964],{"class":753}," dev\n",[736,966,968],{"class":738,"line":967},9,[736,969,774],{"emptyLinePlaceholder":773},[736,971,973],{"class":738,"line":972},10,[736,974,975],{"class":742},"# Seed test schools, demo students, and staff accounts\n",[736,977,979,981,983,986],{"class":738,"line":978},11,[736,980,955],{"class":749},[736,982,958],{"class":753},[736,984,985],{"class":753}," db",[736,987,988],{"class":753}," seed\n",[736,990,992],{"class":738,"line":991},12,[736,993,774],{"emptyLinePlaceholder":773},[736,995,997],{"class":738,"line":996},13,[736,998,999],{"class":742},"# Start NestJS development server with watch mode\n",[736,1001,1003,1005,1008],{"class":738,"line":1002},14,[736,1004,916],{"class":749},[736,1006,1007],{"class":753}," run",[736,1009,1010],{"class":753}," start:dev\n",[707,1012,1013,1014,837],{},"The backend API is now running at ",[722,1015,827],{},[866,1017,1019],{"id":1018},"step-3-configure-start-frontend","Step 3: Configure & Start Frontend",[727,1021,1023],{"className":729,"code":1022,"language":731,"meta":732,"style":732},"cd ..\u002Ffrontend\nnpm install\n\n# Copy local frontend environment config\ncp .env.local.example .env.local\n\n# Start Next.js development server\nnpm run dev\n",[722,1024,1025,1032,1038,1042,1047,1057,1061,1066],{"__ignoreMap":732},[736,1026,1027,1029],{"class":738,"line":739},[736,1028,764],{"class":763},[736,1030,1031],{"class":753}," ..\u002Ffrontend\n",[736,1033,1034,1036],{"class":738,"line":746},[736,1035,916],{"class":749},[736,1037,919],{"class":753},[736,1039,1040],{"class":738,"line":760},[736,1041,774],{"emptyLinePlaceholder":773},[736,1043,1044],{"class":738,"line":770},[736,1045,1046],{"class":742},"# Copy local frontend environment config\n",[736,1048,1049,1051,1054],{"class":738,"line":777},[736,1050,933],{"class":749},[736,1052,1053],{"class":753}," .env.local.example",[736,1055,1056],{"class":753}," .env.local\n",[736,1058,1059],{"class":738,"line":783},[736,1060,774],{"emptyLinePlaceholder":773},[736,1062,1063],{"class":738,"line":946},[736,1064,1065],{"class":742},"# Start Next.js development server\n",[736,1067,1068,1070,1072],{"class":738,"line":952},[736,1069,916],{"class":749},[736,1071,1007],{"class":753},[736,1073,964],{"class":753},[707,1075,1076,1077,837],{},"The frontend is now running at ",[722,1078,818],{},[711,1080],{},[714,1082,1084],{"id":1083},"_3-useful-developer-commands","3. Useful Developer Commands",[1086,1087,1088,1105],"table",{},[1089,1090,1091],"thead",{},[1092,1093,1094,1099,1102],"tr",{},[1095,1096,1098],"th",{"align":1097},"left","Task",[1095,1100,1101],{"align":1097},"Command",[1095,1103,1104],{"align":1097},"Directory",[1106,1107,1108,1126,1142,1158,1174,1190],"tbody",{},[1092,1109,1110,1116,1121],{},[1111,1112,1113],"td",{"align":1097},[812,1114,1115],{},"Prisma Visual GUI",[1111,1117,1118],{"align":1097},[722,1119,1120],{},"npx prisma studio",[1111,1122,1123],{"align":1097},[722,1124,1125],{},"backend\u002F",[1092,1127,1128,1133,1138],{},[1111,1129,1130],{"align":1097},[812,1131,1132],{},"Create DB Migration",[1111,1134,1135],{"align":1097},[722,1136,1137],{},"npx prisma migrate dev --name \u003Cmigration_name>",[1111,1139,1140],{"align":1097},[722,1141,1125],{},[1092,1143,1144,1149,1154],{},[1111,1145,1146],{"align":1097},[812,1147,1148],{},"Re-seed Database",[1111,1150,1151],{"align":1097},[722,1152,1153],{},"npx prisma db seed",[1111,1155,1156],{"align":1097},[722,1157,1125],{},[1092,1159,1160,1165,1170],{},[1111,1161,1162],{"align":1097},[812,1163,1164],{},"Run Backend Unit Tests",[1111,1166,1167],{"align":1097},[722,1168,1169],{},"npm run test",[1111,1171,1172],{"align":1097},[722,1173,1125],{},[1092,1175,1176,1181,1186],{},[1111,1177,1178],{"align":1097},[812,1179,1180],{},"Run E2E Security Tests",[1111,1182,1183],{"align":1097},[722,1184,1185],{},"bash test\u002Fsecurity\u002Frun-all.sh",[1111,1187,1188],{"align":1097},[722,1189,1125],{},[1092,1191,1192,1197,1202],{},[1111,1193,1194],{"align":1097},[812,1195,1196],{},"Format & Lint Code",[1111,1198,1199],{"align":1097},[722,1200,1201],{},"npm run lint",[1111,1203,1204,1207,1208],{"align":1097},[722,1205,1206],{},"frontend\u002F"," & ",[722,1209,1125],{},[1211,1212,1213],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":732,"searchDepth":746,"depth":746,"links":1215},[1216,1217,1222],{"id":716,"depth":746,"text":717},{"id":860,"depth":746,"text":861,"children":1218},[1219,1220,1221],{"id":868,"depth":760,"text":869},{"id":898,"depth":760,"text":899},{"id":1018,"depth":760,"text":1019},{"id":1083,"depth":746,"text":1084},"Guide for setting up YeneSchool locally for active development — hot reloading with docker-compose.dev.yml, manual dev servers, and running security tests.","md",null,{"icon":647},{"title":644,"icon":647},{"title":698,"description":1223},"GL2v47K9LfAVfwc-wQZN-vwrXiMY9myb2PdJzf93mcc",[1231,1233],{"title":639,"path":640,"stem":641,"description":1232,"icon":642,"children":-1},"Step-by-step runbook for deploying YeneSchool in production using Docker Compose — secrets setup, database migrations, and Nginx SSL configuration.",{"title":649,"path":650,"stem":651,"description":1234,"icon":652,"children":-1},"Automated PostgreSQL snapshot backups, Docker persistent volume preservation, disaster recovery procedures, and database restoration verification.",1791357983511]