# TemseeEdu — Master Product Requirements Document

**Version:** 4.0 (Master Roadmap)  
**Author:** Linxford / Temsee  
**Status:** Living document — source of truth through project completion  
**Supersedes:** `TemseeEdu_V1_PRD.md`, `TemseeEdu_V1_PRD(1).md` (retained as historical references)  
**Last updated:** May 2026  

---

## Table of contents

1. [Executive summary](#1-executive-summary)  
2. [Vision and principles](#2-vision-and-principles)  
3. [Competitor benchmark](#3-competitor-benchmark)  
4. [Implementation status (current build)](#4-implementation-status-current-build)  
5. [Deployment editions and commercial model](#5-deployment-editions-and-commercial-model)  
6. [Plugin system architecture](#6-plugin-system-architecture)  
7. [Core platform modules](#7-core-platform-modules)  
8. [Plugin catalogue (V1.5 → V3)](#8-plugin-catalogue-v15--v3)  
9. [Platform and super-admin](#9-platform-and-super-admin)  
10. [User roles and permissions](#10-user-roles-and-permissions)  
11. [Portals and public surfaces](#11-portals-and-public-surfaces)  
12. [License, subscription, and billing](#12-license-subscription-and-billing)  
13. [Technology stack](#13-technology-stack)  
14. [Data model overview](#14-data-model-overview)  
15. [Routes and navigation map](#15-routes-and-navigation-map)  
16. [Core events and integrations](#16-core-events-and-integrations)  
17. [Delivery roadmap (project end)](#17-delivery-roadmap-project-end)  
18. [Success metrics](#18-success-metrics)  
19. [Explicitly out of scope](#19-explicitly-out-of-scope)  
20. [Appendix A — Feature backlog checklist](#appendix-a--feature-backlog-checklist)  

---

## 1. Executive summary

**TemseeEdu** is a modular school management platform for Ghanaian and African institutions. The product ships as a **lean V1 core** (website, admissions, SIS, portals, communication, admin) and grows through **licensed plugins** (results, attendance, fees, library, hostel, and more).

**Tagline:** Modern Digital Infrastructure for African Schools.

**Strategic goal (through project completion):**

> Win and retain paying schools (Cloud SaaS + School Edition licenses), deliver a dependable product, grow average revenue per school via plugins, and match or exceed regional competitors on UX — without copying their bloat.

**Current state (May 2026):** V1 core is **~80% complete**. Three V1.5 plugins (Results, Attendance, Payments) are **implemented in codebase** ahead of the original phase plan. Launch blockers are mainly **GTM assets** (demo site, marketing site), **license-server parity** (optional for first School Edition sales), and **portal/CMS polish**.

---

## 2. Vision and principles

### 2.1 What we build

| Layer | Description |
|-------|-------------|
| **Core** | Always included — school can operate day one without buying plugins |
| **Plugins** | Optional capability — independently licensed, versioned, disable-safe |
| **Platform** | Temsee super-admin — tenants, subscriptions, plugin catalog (Cloud) |

### 2.2 Product principles

1. **Core must never feel crippled** — no essential button behind a paywall.  
2. **Plugins add real capability** — not cosmetic unlocks.  
3. **Disable-safe data** — deactivating a plugin never deletes its tables.  
4. **Mobile-first portals** — parents and students use phones first.  
5. **Ghana-first payments and SMS** — Paystack, MoMo paths, Arkesel/Hubtel.  
6. **Dual deployment from one codebase** — Cloud (multi-tenant) and School Edition (single-tenant, encoded).  
7. **Competitor-informed, not competitor-cloned** — adopt UX patterns that schools expect; defer ERP sprawl to plugins.

---

## 3. Competitor benchmark

Research sources: [InfixEdu product pages](https://infixedu.com/home2/), [InfixEdu dashboard documentation](https://docs.infixedu.com/infixedu/dashboard), [Smart School demo login](https://demo.smart-school.in/user/user/dashboard) (Mount Carmel School demo).

### 3.1 Competitor capability matrix

| Capability area | InfixEdu | Smart School | TemseeEdu approach |
|-----------------|----------|--------------|-------------------|
| Admin dashboard at-a-glance | Students, teachers, staff counts; income/expense | Role-based user login | **Core** — stats + operations widgets; finance summary via Payments plugin |
| Front CMS | Pages, menu, website settings | Public site + notices | **Core** — CMS + school settings |
| Admissions | Enquiry, follow-up, admission query | Online apply + track | **Core** — full pipeline + PDF letter |
| Student info | Admission, list, promote, reports | Profiles, class context | **Core** SIS; promotion in **V2** |
| Fees | Collections, accounts, profit/income/expense | Fee status in portal | **Plugin** — Payments (Paystack); full accounting in **V2 Accounting plugin** |
| Attendance | Student + staff attendance | Implied in operations | **Plugin** — Attendance |
| Academics | Class routine, subjects, lesson plan | Timetable | **Plugin** — Attendance (timetable); lesson plan **V3 E-Learning** |
| Examination | Offline + online exams | Unit tests, schedules | **Plugin** — Results; CBT **V3** |
| Communication | Notice, email, SMS, messaging | What's New feed on login | **Core** announcements; portal news strip **V1 polish** |
| HR & Payroll | Staff directory, payroll, leave | — | **V2 plugin** |
| Library | Full digital library | New books notices | **V2 plugin** |
| Hostel / Transport | Dormitory, transport modules | — | **V2 plugins** |
| Inventory | Stock, assets | — | **V2 plugin** |
| Front office | Visitor book, postal, phone log, complaints | — | **V3 or never** — low priority for Ghana K-12 unless requested |
| ID cards & certificates | Generate ID, certificates | — | **Core** ID card; certificates **V2** |
| Multi-language / RTL | Many languages | — | **V2.5** if export markets demand |
| Chat / homework | Chat module, homework | — | **V3** (E-Learning) |
| Mobile app | — | App store presence (ecosystem) | **V3 Mobile plugin** |
| One-click updates | Yes | — | **Cloud:** Temsee-managed; **School Edition:** support contract |
| Role & permission ACL | Granular | — | **Core** — Spatie + custom roles |

### 3.2 Competitor UX patterns to adopt (prioritized)

| Pattern | Source | TemseeEdu delivery | Phase |
|---------|--------|-------------------|-------|
| “What’s New” news cards on portal home | Smart School | Dashboard widgets + announcement feed | V1 polish |
| Student / Parent login clarity | Smart School | Separate panels (`/portal`, `/parent`) + optional unified landing | V1 |
| Income & expense snapshot | InfixEdu | Payments plugin dashboard widgets | V1.5 |
| Staff / teacher count on admin home | InfixEdu | Extend `SchoolStatsOverview` | V1 polish |
| Central **Reports** hub | InfixEdu | Admin navigation group linking exports/PDFs | V1 polish |
| Class/section context everywhere | Smart School | Already in SIS; reinforce in portals | V1 |
| Task notifications to parents | InfixEdu | Announcements + database notifications; optional SMS | Core |
| Printable reports everywhere | Both | PDF receipts, report cards, ID cards, exports | Ongoing |
| Entrance exam / schedule notices | Smart School | Admissions `entrance_exam_*` + public track | **Done** |
| Library “new books” style notices | Smart School | News/CMS or Library plugin | V2 |

### 3.3 Competitor features explicitly deferred

Visitor book, postal dispatch/receive, phone call log, admission enquiry CRM (separate from online apply), internal chat, lesson plan module, full double-entry accounting in core, biometric hardware integrations (unless partner deal), white-label mobile per school in V1.

---

## 4. Implementation status (current build)

Legend: ✅ Done · 🟡 Partial · ⬜ Not started · 🔌 Plugin

| ID | Module / feature | Status | Notes |
|----|------------------|--------|-------|
| C0 | Laravel 11 + Filament 3 + tenancy | ✅ | Stancl multi-tenant Cloud |
| C0 | Separate auth guards (admin, student, parent, platform) | ✅ | |
| C0 | Spatie permissions + custom roles | ✅ | |
| C0 | Installer + onboarding wizard | ✅ | |
| C0 | Plugin marketplace (Cloud) | 🟡 | Paystack activation; zip install School Edition ⬜ |
| C0 | Local license middleware (School Edition) | 🟡 | No remote license server yet |
| C0 | Super-admin panel (tenants, subscriptions, catalog) | ✅ | |
| M1 | Public website + CMS | 🟡 | Image blocks in progress; nav menu CMS ⬜ |
| M2 | Admissions end-to-end | ✅ | Exam schedule, letters, track |
| M3 | SIS (students, classes, years, ID card) | 🟡 | House field ✅; profile photos 🟡 |
| M4 | Parent & student portals | 🟡 | Events + notification history ✅; polish ongoing |
| M5 | Announcements + email + SMS infra | 🟡 | Per-user read tracking ✅; push ⬜ |
| M6 | Admin dashboard widgets | 🟡 | Operations / needs-attention in progress |
| P1 | Results & Grading plugin | 🟡 | GPA/SMS polish ⬜ |
| P2 | Attendance plugin | 🟡 | Alerts/monthly report ⬜ |
| P3 | Payments plugin | 🟡 | Paystack ✅; MoMo direct ⬜ |
| L0 | License server (separate app) | ⬜ | PRD target |
| L0 | SourceGuardian production pipeline | 🟡 | Script exists |
| G0 | demo.temseeedu.com + marketing site | ⬜ | |

---

## 5. Deployment editions and commercial model

### 5.1 Edition A — TemseeEdu Cloud (SaaS)

- Branded subdomain: `{school}.temseeedu.com`
- Temsee hosts, updates, backs up
- Plugins activated in admin marketplace (Paystack)
- No SourceGuardian on application code

**Plans (indicative — confirm before sales):**

| Plan | Monthly | Annual (−15%) | Includes |
|------|---------|---------------|----------|
| Starter | GHS 500 | GHS 5,100 | CMS + Admissions, ≤50 students |
| Growth | GHS 800 | GHS 8,160 | Full core + portals + comms, ≤300 students |
| Institution | GHS 1,500 | GHS 15,300 | Full core + SMS priority + unlimited students |

**Setup fees:** Starter GHS 1,500 · Growth GHS 2,500 · Institution GHS 4,000

### 5.2 Edition B — School Edition (self-hosted)

- School’s domain (e.g. `ameziongirls.edu.gh`)
- SourceGuardian-encoded delivery
- License verification (target: remote server; current: env/config)
- Plugins via encoded zip + plugin license keys

**License pricing (indicative):**

| Type | Price | Notes |
|------|-------|-------|
| Single school | GHS 8,000 | 1 domain |
| Institution (500+ students) | GHS 12,000 | Priority setup |
| Multi-branch (≤3 campuses) | GHS 18,000 | |

**Support:** Basic GHS 1,500/yr · Priority GHS 2,500/yr  
**Setup:** GHS 1,500–2,000 one-time

### 5.3 Sales positioning vs competitors

| Buyer concern | Cloud answer | School Edition answer |
|---------------|--------------|------------------------|
| Data on our server | No — Temsee cloud | Yes — your infrastructure |
| Pay once | Monthly/annual | Lump-sum license |
| No IT staff | Temsee manages | School or partner IT |
| Government / SHS procurement | Harder | **Preferred** |

---

## 6. Plugin system architecture

### 6.1 Technical foundation

- **Engine:** [nWidart/laravel-modules](https://github.com/nWidart/laravel-modules)
- **Admin UI extension:** Filament 3 clusters/resources per plugin
- **Location:** `app/app-modules/{ModuleName}/`

**Current modules in repo:**

| Slug | Folder | Status |
|------|--------|--------|
| `results` | `Results/` | Shipped in dev |
| `attendance` | `Attendance/` | Shipped in dev |
| `fees` | `Payments/` | Shipped in dev (alias: Online Fee Payments) |

### 6.2 `module.json` contract

Each plugin declares: `name`, `alias`, `version`, `requires_core`, `requires_plan`, `license_required`, `author`, `description`.

### 6.3 Enable / disable rules

1. Migrations run on enable; tables **remain** on disable.  
2. Routes and Filament resources register only when license + activation valid.  
3. Portal sections hide when plugin inactive (graceful UI).  
4. Cloud: `school_plugins` + subscription plan gates.  
5. School Edition: `TEMSEEEDU_PLUGIN_{SLUG}_KEY` + encoded binary.

### 6.4 Core events (plugin hooks)

| Event | When fired | Example plugin listeners |
|-------|------------|---------------------------|
| `ApplicationApproved` | Admissions accept | Create student, seed invoice |
| `StudentCreated` | Student record created | Attendance roster, fee assignment |
| `StudentPromoted` | Class promotion (V2) | Archive results |
| `AnnouncementPublished` | Announcement sent | Email, SMS, DB notifications |
| `TermStarted` | New term activated (V2) | Reset counters, fee structures |

### 6.5 Plugin pricing (Cloud monthly / School one-time)

| Plugin | Cloud/mo | School Edition | Bundle |
|--------|----------|----------------|--------|
| Results & Grading | GHS 150 | GHS 1,500 | Academic |
| Attendance | GHS 100 | GHS 1,000 | Academic |
| Online Fee Payments | GHS 200 | GHS 2,000 | Finance |
| Library | GHS 100 | GHS 1,000 | — |
| Hostel | GHS 200 | GHS 2,500 | Operations |
| Transport | GHS 150 | GHS 1,500 | Operations |
| Inventory | GHS 100 | GHS 1,000 | Operations |
| HR & Payroll | GHS 250 | GHS 3,000 | Finance |
| Accounting (V2) | GHS 200 | GHS 2,500 | Finance |
| CBT / Online Exams | GHS 300 | GHS 4,000 | Academic |
| E-Learning | GHS 300 | GHS 4,000 | — |
| Alumni | GHS 100 | GHS 1,000 | — |
| Fundraising & Giving | GHS 120 | GHS 1,200 | Student Life |
| Advanced Analytics | GHS 200 | GHS 2,500 | — |
| AI Assistant | GHS 400 | GHS 5,000 | — |
| Mobile App | GHS 500 | GHS 8,000 | — |

**Bundles:** Academic GHS 450/mo · Finance GHS 550/mo · Operations GHS 400/mo · Full School GHS 1,800/mo

---

## 7. Core platform modules

### Module 1 — School Website CMS

**Purpose:** No-code public presence; drives admissions and trust.

| Feature | Priority | Status | Acceptance criteria |
|---------|----------|--------|---------------------|
| Homepage sections (hero, about, programs, stats, features, links) | P0 | ✅ | Editable via School Settings |
| Custom pages (block builder) | P0 | 🟡 | Hero, text, features, CTA, **image**, **image+text** |
| News (list + article) | P0 | ✅ | SEO slug, publish flag |
| Events (list + detail) | P0 | ✅ | |
| Gallery (image + video embed URL) | P0 | ✅ | YouTube/Vimeo link type |
| Leadership / staff profiles | P1 | ✅ | JSON in school settings |
| Prospectus PDF download | P0 | ✅ | `/prospectus` |
| Contact form + admin inbox | P0 | ✅ | Email notify, `read_at` |
| Admissions landing + apply CTA | P0 | ✅ | |
| SEO per page (title, description, OG image) | P0 | 🟡 | OG from hero image |
| Mobile-responsive public theme | P0 | 🟡 | Lighthouse ≥85 target |
| Navigation menu manager (no code) | P1 | ⬜ | Reorder links, external URLs |
| Custom domain (School Edition) | P1 | ⬜ | DNS docs + middleware |
| Multi-language public site | P3 | ⬜ | Competitor parity deferred |

**Competitor lift:** Smart School-style notice board → use `/notices` + announcements (done).

---

### Module 2 — Admissions

| Feature | Priority | Status | Acceptance criteria |
|---------|----------|--------|---------------------|
| Public application form | P0 | ✅ | Validation, file uploads |
| Documents (birth cert, BECE, passport photo) | P0 | ✅ | Stored per application |
| Reference number generation | P0 | ✅ | |
| Status workflow (pending → reviewing → accepted/rejected) | P0 | ✅ | |
| Applicant tracker (ref + DOB) | P0 | ✅ | `/apply/track` |
| Officer dashboard (Filament) | P0 | ✅ | Filter, bulk actions |
| One-click accept/reject | P0 | ✅ | Accept fires `ApplicationApproved` |
| Admission letter PDF | P0 | ✅ | Admin + public download when accepted |
| Email on status change | P0 | ✅ | |
| SMS on status change (Arkesel) | P1 | 🟡 | Toggle in settings |
| Entrance exam date + venue | P1 | ✅ | Visible on tracker |
| Custom admission fields | P1 | ✅ | JSON config |
| Prospectus link | P0 | ✅ | |
| Applicant login account (optional) | P2 | ⬜ | Future: portal for applicants |
| Admission enquiry CRM (Infix-style) | P3 | ⬜ | Defer — use applications |

---

### Module 3 — Student Information System (basic)

| Feature | Priority | Status | Acceptance criteria |
|---------|----------|--------|---------------------|
| Student profile (demographics, class, status) | P0 | ✅ | |
| Auto student ID on approval | P0 | ✅ | |
| Manual student create/edit | P0 | ✅ | |
| Class / section assignment | P0 | ✅ | |
| Academic year + term | P0 | ✅ | Active flags |
| Document storage (JSON uploads) | P0 | ✅ | |
| Profile photo (ID, PDFs, portals) | P0 | 🟡 | Column + fallback to passport |
| Student status lifecycle | P0 | ✅ | active, graduated, withdrawn, suspended |
| Student ID card PDF | P0 | ✅ | |
| Search, filter, Excel export | P0 | ✅ | |
| Link parent/guardian (pivot) | P0 | 🟡 | Admin action in progress |
| **House** assignment | P1 | ⬜ | PRD field |
| Class promotion wizard | P2 | ⬜ | Infix “promote students” |
| Discipline records | P3 | ⬜ | V2+ |
| Laravel Scout global search | P2 | ⬜ | Students + applications |

**Not in core (plugins):** grades, attendance, fee ledger.

---

### Module 4 — Parent & Student Portals

Filament panels: **Student** `/portal` · **Parent** `/parent`

#### Student portal

| Feature | Priority | Status |
|---------|----------|--------|
| Login + password reset | P0 | ✅ |
| Dashboard (stats + daily widget) | P0 | 🟡 |
| My profile + photo upload | P0 | 🟡 |
| My documents (from `documents` JSON) | P0 | ✅ |
| Announcements (read-only resource) | P0 | ✅ |
| **School events calendar page** | P1 | ⬜ |
| Class + class teacher info | P1 | 🟡 | Via profile/stats |
| Timetable | P1 | 🔌 Attendance |
| Fee balance + pay | P1 | 🔌 Payments |
| Report cards download | P1 | 🔌 Results |
| Attendance summary | P1 | 🔌 Attendance |
| “What’s New” announcement cards | P1 | 🟡 | Widget polish |
| Download admission letter / ID | P2 | 🟡 | Links from admin |

#### Parent portal

| Feature | Priority | Status |
|---------|----------|--------|
| Login + password reset | P0 | ✅ |
| Dashboard + family widget | P0 | 🟡 |
| Linked children overview | P0 | ✅ |
| Per-child balance + attendance | P1 | 🔌 |
| Announcements | P0 | ✅ |
| **Events calendar** | P1 | ⬜ |
| Invoices + Paystack pay | P1 | 🔌 |
| Child report cards | P1 | 🔌 |
| Contact school form | P0 | ✅ |
| **Notification history** | P1 | ⬜ | Dedicated page |
| Timetable modal / view | P2 | 🟡 |

---

### Module 5 — Announcements & Communication

| Feature | Priority | Status |
|---------|----------|--------|
| Create/edit announcements | P0 | ✅ |
| Audience: all, parents, students, teachers, class | P0 | ✅ |
| Types: general, urgent, event, academic | P0 | ✅ |
| Schedule (`sent_at` future) | P0 | ✅ | `announcements:publish-due` |
| Public notice board | P0 | ✅ |
| Email broadcast | P0 | ✅ |
| SMS broadcast (Arkesel / Hubtel) | P1 | 🟡 |
| In-app notifications (Filament database) | P0 | ✅ |
| Pin + expiry | P1 | ✅ |
| **Per-user read tracking** | P1 | ⬜ |
| Push notifications (web push) | P2 | ⬜ |
| SMS result alerts | P1 | 🔌 Results |

---

### Module 6 — Admin Dashboard

| Widget / area | Priority | Status |
|---------------|----------|--------|
| Active students, pending apps, classes, new this month | P0 | ✅ |
| Operations overview (attendance, fees, drafts, messages) | P0 | 🟡 |
| Needs attention (setup, apps, overdue, CMS drafts) | P0 | 🟡 |
| Quick actions | P0 | ✅ |
| Recent applications | P0 | ✅ |
| Plugin status overview | P0 | ✅ |
| Upcoming events snippet | P1 | ⬜ |
| Staff / teacher count (Infix parity) | P1 | ⬜ |
| Fee collections today/term (Infix parity) | P1 | 🔌 |
| Reports hub navigation | P1 | ⬜ |

**Settings panel (School Settings page):**

| Area | Status |
|------|--------|
| Branding (name, logo, colors, motto) | ✅ |
| Contact + social | ✅ |
| Homepage JSON sections | ✅ |
| SMTP + test email | ✅ |
| SMS provider + keys | ✅ |
| Admission copy + custom fields | ✅ |
| Academic year helpers | ✅ |
| User management (Filament Users + Roles) | ✅ |

---

### Module 7 — Plugin Engine (core)

| Feature | Priority | Status |
|---------|----------|--------|
| Plugin registry (`config/temseeedu.php` + DB catalog) | P0 | ✅ |
| Cloud activate/deactivate per tenant | P0 | ✅ |
| Marketplace UI + Paystack purchase | P0 | 🟡 |
| School Edition zip upload installer | P1 | ⬜ |
| `php artisan plugin:enable` | P1 | 🟡 |
| Plugin dependency resolver | P2 | ⬜ |
| Plugin update checker | P2 | ⬜ |
| Isolated settings namespace per plugin | P1 | 🟡 |
| Filament sidebar injection | P0 | ✅ |

---

## 8. Plugin catalogue (V1.5 → V3)

### 8.1 V1.5 — Launch plugins (highest demand)

#### Plugin: Results & Grading (`results`)

| Feature | Priority | Status |
|---------|----------|--------|
| Subjects per class/level | P0 | ✅ |
| Grade scales (WAEC + custom) | P0 | ✅ |
| Mark entry (teacher/admin) | P0 | ✅ |
| Report card PDF (branded + photo) | P0 | 🟡 |
| Draft → published workflow | P0 | ✅ |
| Student/parent portal view | P0 | ✅ |
| Class position / ranking | P1 | 🟡 |
| GPA / aggregate auto-calc | P1 | ⬜ |
| Cumulative terminal reports | P1 | ⬜ |
| SMS on publish to parents | P1 | ⬜ |
| Bulk import marks (Excel) | P2 | ⬜ |

#### Plugin: Attendance (`attendance`)

| Feature | Priority | Status |
|---------|----------|--------|
| Daily attendance session per class | P0 | ✅ |
| Status: present, absent, late, excused | P0 | ✅ |
| Teacher entry (admin panel) | P0 | ✅ |
| Timetable (periods per class) | P1 | ✅ |
| Student portal timetable + today view | P1 | ✅ |
| Monthly attendance report | P1 | ⬜ |
| Low attendance alert (email/SMS) | P1 | 🟡 | Listener exists — verify E2E |
| Excel export | P1 | ⬜ |
| Year summary per student | P2 | ⬜ |
| Biometric / RFID integration | P3 | ⬜ |

#### Plugin: Online Fee Payments (`fees` / `Payments`)

| Feature | Priority | Status |
|---------|----------|--------|
| Fee categories | P0 | ✅ |
| Invoices per student per term | P0 | ✅ |
| Partial payments + balance | P0 | ✅ |
| Paystack checkout (parent) | P0 | ✅ |
| Payment recording (cash, bank, paystack) | P0 | ✅ |
| PDF receipt (+ student photo) | P0 | 🟡 |
| Auto invoice on `StudentCreated` | P1 | ✅ |
| Payment reminders (email/SMS) | P1 | ⬜ |
| MoMo direct (MTN/Vodafone/AirtelTigo) | P2 | ⬜ |
| Hubtel alternative gateway | P2 | 🟡 | SMS exists; payments TBD |
| Accountant dashboard / collections report | P1 | ⬜ |
| **Income vs expense ledger** | P2 | See Accounting plugin |

---

### 8.2 V2 plugins (6–12 months post-launch)

#### Plugin: Library Management

- Book catalog (ISBN, author, category, copies)  
- Borrow / return / renew  
- Overdue fines  
- Student catalog search (portal)  
- “New books” announcements (Smart School pattern)  
- Barcode/QR (future)  
- Reports: popular books, overdue list  

#### Plugin: Hostel Management

- Hostels, blocks, rooms, beds  
- Allocation per term  
- Hostel fees → link to Payments  
- Visitor log  
- Occupancy reports  

#### Plugin: Transport Management

- Vehicles, routes, drivers  
- Student route assignment  
- Transport fees → Payments  
- GPS tracking (future)  

#### Plugin: Inventory Management

- Asset register + consumables  
- Stock in/out, suppliers  
- Low-stock alerts  
- Barcode (future)  

#### Plugin: HR & Payroll

- Staff profiles beyond core `users`  
- Designations, departments  
- Salary structures, allowances, deductions  
- Monthly payroll + payslip PDF  
- Leave types, requests, approvals  
- Staff attendance (separate from student)  
- SSNIT / PAYE fields (Ghana)  
- Payroll reports  

#### Plugin: Accounting (Finance depth — Infix parity)

- Chart of accounts  
- Income / expense entries  
- Bank accounts  
- Profit & loss, balance sheet summaries  
- Link fee payments to ledger  
- Admin dashboard income/expense widgets  

#### Plugin: Alumni Management

- Auto-tag graduates  
- Alumni directory + portal login  
- Alumni events  

#### Plugin: Fundraising & Giving

Extends Alumni rather than duplicating it — donations can link to an existing alumnus, but the plugin
stands alone and doesn't require Alumni to be active.

- Campaigns with a title, goal amount, start/end date, and status  
- Public campaign list and donate page on the school's own website  
- Online donations by card or mobile money via Paystack, with idempotent payment verification  
- Manual/offline donation recording for staff, optionally linked to an alumnus record  
- Per-campaign progress (amount raised vs. goal) shown on both the admin and public views  

#### Plugin: Advanced Analytics

- Admissions funnel  
- Academic trends by class/subject  
- Attendance trends  
- Financial health  
- Custom report builder  
- YoY comparisons  
- Export Excel/PDF/CSV  

#### Core enhancements bundled in V2

| Feature | Notes |
|---------|-------|
| Student promotion wizard | Infix parity |
| Student houses | Core SIS |
| Certificate generator | Infix ID/cert parity |
| Teacher workload view | My Classes expansion |
| Multi-branch (School Edition) | Tenant-like campuses |

---

### 8.3 V3 plugins (12–24 months)

#### Plugin: CBT / Online Exams

- Question bank (MCQ, T/F, short answer)  
- Exam assembly + randomization  
- Timed attempts, auto-grade MCQ  
- Anti-cheat (tab blur, fullscreen)  
- Controlled result release  
- Practice mode  
- Exam analytics  

#### Plugin: E-Learning

- Courses, lessons, topics  
- Video (upload + YouTube/Vimeo)  
- Assignments + submissions  
- Forums per course  
- Progress + certificates  
- Zoom/Meet links  
- Homework module (Infix parity)  

#### Plugin: AI Assistant

- Parent/student FAQ chatbot  
- Report comment drafts  
- Admissions form helper  
- Semantic search across CMS  
- At-risk student alerts  
- Announcement drafts  
- Provider: Claude or OpenAI  

#### Plugin: Mobile App (React Native)

- iOS + Android  
- Push notifications  
- Offline cache for core data  
- Branded per school (premium)  
- Deep links to plugin features  

#### Plugin: Front Office (optional V3)

Only if clients demand: visitor book, complaints, phone log — otherwise permanent defer.

---

## 9. Platform and super-admin

**Panel:** `/temsee` (or configured super path)

| Feature | Priority | Status |
|---------|----------|--------|
| Tenant CRUD (schools) | P0 | ✅ |
| Domain mapping | P0 | ✅ |
| Subscription plans + status | P0 | ✅ |
| Plugin catalog management | P0 | ✅ |
| Plugin licenses (School Edition keys) | P0 | ✅ |
| Platform users (super admin, support) | P0 | ✅ |
| Platform attention widget | P1 | 🟡 |
| Growth / billing charts | P1 | ✅ |
| Tenant impersonation / support login | P2 | ⬜ |
| Platform-wide audit log | P2 | ⬜ |

---

## 10. User roles and permissions

### 10.1 Role matrix (V1)

| Role | Panel | Capabilities |
|------|-------|--------------|
| Super Admin | Platform | All tenants |
| School Owner / Admin | Admin | Full school config |
| Headmaster | Admin | Read-heavy + approve |
| Admissions Officer | Admin | Applications |
| Teacher / Class Teacher | Admin | My Classes, attendance, results (scoped) |
| Accountant | Admin | Payments plugin |
| Student | Portal | Self-service |
| Parent / Guardian | Parent | Linked children |

### 10.2 Permission highlights

- `manage_students`, `manage_settings`, `manage_plugins`, `view_classes`, etc.  
- Custom roles via `RoleResource` (e.g. Senior Housemaster)  
- Teacher scope: classes where `class_teacher_id` = user  

### 10.3 Future roles (V2+)

Librarian, Hostel warden, Transport officer, Alumni coordinator — introduced with plugins.

---

## 11. Portals and public surfaces

### 11.1 Public routes (tenant)

```
/                         Homepage
/news, /news/{slug}       News
/events, /events/{slug}   Events
/gallery                  Gallery
/notices                  Announcements
/pages/{slug}             CMS pages
/contact                  Contact
/prospectus               Prospectus PDF
/apply, /apply/track      Admissions
/admissions/*             Redirects to apply
```

### 11.2 Admin (Filament)

```
/admin                    Dashboard
/admin/students           SIS
/admin/admissions         Applications (resource)
/admin/announcements      Communication
/admin/news, /events, /gallery, /pages
/admin/users, /roles
/admin/settings           School Settings page
/admin/plugins            Marketplace
```

### 11.3 Portals

```
/portal/*                 Student (Filament id: portal)
/parent/*                 Parent
```

### 11.4 Target portal routes (complete vision)

```
/portal/events            School events  [P1]
/portal/documents         Document hub   [P2 - profile exists]
/parent/events            Family events  [P1]
/parent/notifications     History        [P1]
```

---

## 12. License, subscription, and billing

### 12.1 Cloud

- Subscription record per tenant  
- Plan gates max students + plugin eligibility  
- Paystack for plugin purchases (implemented)  
- Expiry notifications → extend to **school admin** emails [P1]  

### 12.2 School Edition (target architecture)

Remote license server:

```
POST https://license.temseeedu.com/api/verify
POST https://license.temseeedu.com/api/plugin-license/verify
```

- 24h cache, 7-day grace, fingerprint = hostname + DB name  
- States: valid, grace, expired, suspended, revoked  

**Current implementation:** env-driven `VerifyLicense` middleware (no remote call). **Roadmap:** build license server app Phase L1.

### 12.3 SourceGuardian pipeline

- `app/scripts/build-school-edition.sh`  
- Per-plugin `build-plugin.sh` (PRD spec)  
- QA matrix: encoded build + installer on PHP 8.3  

---

## 13. Technology stack

| Layer | Choice |
|-------|--------|
| Backend | Laravel 11 |
| Multi-tenancy | Stancl Tenancy (Cloud) |
| Modules | nWidart/laravel-modules |
| Admin | Filament 3 |
| Auth | Multi-guard + Spatie Permission |
| Public UI | Blade + Tailwind + Alpine |
| PDF | DomPDF |
| Excel | Maatwebsite |
| Payments | Paystack (+ MoMo roadmap) |
| SMS | Arkesel, Hubtel |
| Email | Laravel Mail (SMTP / Mailgun) |
| Queue | Laravel Queue (Redis prod) |
| Search | Laravel Scout (planned) |
| Media | FileUpload + public disk (Spatie Media optional later) |
| Encoding | SourceGuardian (School Edition) |
| Mobile app (V3) | React Native |
| CI/CD | GitHub Actions |

---

## 14. Data model overview

### 14.1 Central (platform)

`tenants`, `domains`, `users` (platform), `subscriptions`, `plugin_catalog_items`, `plugin_licenses`, `notifications`

### 14.2 Tenant (per school)

**Core:** `school_settings`, `users`, `students`, `guardians`, `student_guardian`, `classes`, `academic_years`, `terms`, `applications`, `pages`, `news`, `events`, `gallery_items`, `announcements`, `contact_messages`, `notifications`

**Plugins:** `subjects`, `grade_scales`, `results`, `report_cards`, `attendances`, `attendance_records`, `timetables`, `fee_categories`, `invoices`, `invoice_items`, `payments`

---

## 15. Routes and navigation map

See §11. Plugin routes register under module `Routes/web.php` when active.

---

## 16. Core events and integrations

| Integration | Use |
|-------------|-----|
| Paystack | Cloud subscriptions, plugin buy, fee checkout |
| Arkesel / Hubtel | SMS |
| SMTP | Transactional + broadcasts |
| Future: MoMo APIs | Direct mobile money |
| Future: Claude/OpenAI | AI plugin |

---

## 17. Delivery roadmap (project end)

### Phase 0 — Foundation ✅ (complete)

Weeks 1–3: tenancy, auth, Filament, super-admin, plugin registry, installer, onboarding, basic license middleware.

### Phase 1 — CMS ✅ (95%)

Weeks 4–5: public site, CMS resources, contact, SEO. **Remaining:** nav menu manager, Lighthouse pass.

### Phase 2 — Admissions ✅

Weeks 6–7: full pipeline. **Remaining:** SMS E2E hardening.

### Phase 3 — SIS 🟡 (90%)

Week 8: students, classes, ID cards. **Remaining:** house, promotion, Scout.

### Phase 4 — Portals 🟡 (85%)

Weeks 9–10: Filament portals + plugin sections. **Remaining:** events pages, notification history, What’s New polish.

### Phase 5 — Communication 🟡 (85%)

Weeks 10–11: announcements, email, SMS, scheduled send. **Remaining:** read tracking, push.

### Phase 6 — V1.5 Plugins 🟡 (75%)

Weeks 12–14: Results, Attendance, Payments. **Remaining:** GPA, alerts, reminders, accountant reports.

### Phase 7 — Launch 🟡 (30%)

Weeks 15–16:

- [ ] Finish dashboard widgets + profile photos migration  
- [ ] Portal events + parent notification history  
- [ ] `demo.temseeedu.com` seeded tenant  
- [ ] `temseeedu.com` marketing + pricing  
- [ ] School admin handbook (PDF/web)  
- [ ] Security + performance audit  
- [ ] Encoded School Edition QA  
- [ ] Mobile Lighthouse ≥85  

### Phase L1 — License server (School Edition scale)

Weeks 17–19:

- [ ] Separate Laravel license API  
- [ ] Filament license admin  
- [ ] Remote verify + grace in main app  
- [ ] Plugin license verify parity  

### Phase 8 — V2 plugins (months 4–12)

Priority order by sales feedback:

1. Accounting (Infix finance parity)  
2. Library  
3. HR & Payroll  
4. Hostel  
5. Transport  
6. Inventory  
7. Alumni  
8. Advanced Analytics  

Plus core: promotion wizard, houses, certificates.

### Phase 9 — V3 (months 12–24)

1. CBT  
2. E-Learning (+ homework)  
3. Mobile app  
4. AI Assistant  
5. Optional front office  

### Phase 10 — Maturity

- Multi-language  
- S3 storage  
- API for third-party integrations  
- White-label mobile  
- Partner/reseller portal  

---

## 18. Success metrics

| Metric | V1 target | End-state target |
|--------|-----------|------------------|
| Paying schools (Cloud) | 3–5 | 50+ |
| School Edition licenses | 2+ | 20+ |
| Plugin activations | 5+ | 80% of schools ≥2 plugins |
| Cloud MRR | GHS 3,000+ | GHS 20,000+ |
| Uptime (Cloud) | 99% | 99.9% |
| Mobile Lighthouse (public) | 85+ | 90+ |
| Application completion rate | 70%+ | 80%+ |
| Admin onboarding time | <30 min | <15 min with wizard |
| School Edition plugin install | <10 min | <5 min |

---

## 19. Explicitly out of scope

| Item | Reason |
|------|--------|
| Full ERP in core | Plugins + Accounting V2 |
| Government EMIS integration | Unless contracted |
| Custom per-school code forks | Use settings + CMS |
| Blockchain credentials | No market pull |
| Infix-style postal/visitor suite | V3 optional only |

---

## Appendix A — Feature backlog checklist

Use this as the execution tracker. Mark in repo issues as needed.

### A.1 V1 launch blockers (P0)

- [x] Run `profile_photo` tenant migration everywhere  
- [ ] Commit dashboard widgets (Operations, NeedsAttention, Parent/Student/Super)  
- [x] Student portal: **Events** page  
- [x] Parent portal: **Events** page  
- [x] Parent portal: **Notification history** page  
- [x] Verify widget registration (`$isDiscovered = false` on explicit widgets)  
- [ ] SMS admission + announcement E2E test on Arkesel  
- [ ] Paystack fee payment E2E on demo tenant  
- [ ] `demo.temseeedu.com` deployment + DemoSeeder  
- [ ] Marketing site + pricing page  
- [ ] Admin documentation (setup, plugins, admissions)  
- [ ] Security checklist (OWASP top 10 pass)  
- [ ] Performance: N+1 audit on dashboard widgets  

### A.2 V1 polish (P1)

- [ ] CMS navigation menu manager (partial: `quick_links` footer + published CMS pages in header)  
- [x] `SchoolStatsOverview`: staff/teacher count  
- [x] Reports hub in admin navigation  
- [x] Announcement per-user read tracking (`announcement_reads`)  
- [x] Student **house** field + Filament form  
- [x] Guardian link action (implemented; automated test optional)  
- [ ] Results: GPA / aggregate calculation  
- [ ] Results: SMS on publish  
- [ ] Attendance: monthly PDF/Excel report  
- [ ] Attendance: low attendance alert E2E  
- [x] Payments: overdue reminder command (`invoices:notify-overdue`)  
- [x] Subscription expiry email to school admins (tenant `school_owner` / `school_admin`)  
- [ ] Laravel Scout on Student + Application  
- [ ] Custom domain guide (School Edition)  

### A.3 School Edition commercial (P1)

- [ ] License server MVP  
- [ ] Remote `VerifyLicense` + grace period  
- [ ] Plugin zip upload installer UI  
- [ ] SourceGuardian production build verified  
- [ ] `docs/school-edition-install.md` update for remote license  

### A.4 V2 backlog (reference)

- [ ] Accounting plugin  
- [ ] Library plugin  
- [ ] HR & Payroll plugin  
- [ ] Hostel plugin  
- [ ] Transport plugin  
- [ ] Inventory plugin  
- [ ] Alumni plugin  
- [ ] Advanced Analytics plugin  
- [ ] Student promotion wizard  
- [ ] Certificate generator  
- [ ] MoMo payment integration  

### A.5 V3 backlog (reference)

- [ ] CBT plugin  
- [ ] E-Learning plugin  
- [ ] AI Assistant plugin  
- [ ] React Native mobile app  
- [ ] Web push notifications  

---

## Document history

| Version | Date | Changes |
|---------|------|---------|
| 3.0 | 2025 | Original V1 PRD with dual deployment + plugins |
| 4.0 | May 2026 | Master PRD: competitor matrix, implementation status, full module specs through V3, backlog appendix |

---

*TemseeEdu Master PRD v4.0 — Temsee © 2025–2026*  
*Internal build document. Pricing and timelines are indicative until confirmed for sales.*
