16+ integrated modules across four dedicated portals — built for South African schools from Foundation Phase to FET.
Each portal is purpose-built for its audience — no clutter, no irrelevant features
Complete school management — learner records, staff, classes, subjects, notices, letters, and analytics in one dashboard.
Core Open portalUpload materials, record marks, take attendance, assign homework, run quizzes, and message parents — all in one place.
Updated Open portalView results, track attendance, download study materials, submit homework, and take quizzes — no password required.
New Open portalReal-time access to your child's results, attendance, school notices, and learning materials — updated the moment a teacher acts.
New Open portalClick any module to see exactly how it works
Admin captures surname, first name, roll ID, email, gender, DOB, class, phase, grade, and parent details. Stored in tblstudents.
Learner assigned to class (ClassId) and phase — Day Care, Foundation, Intermediate, Senior, or FET. Phase determines available subjects.
Subjects (subject_ids) and home language (home_language) stored as JSON, linked to phase for curriculum alignment.
System auto-links parent if email matches. Portal credentials generated and emailed to the parent via SMTP.
Admin enters title, name, email, phone, ID number, qualification, and Persal number. Stored in teachers with status=1.
Teacher assigned to subjects (subject_ids) and grades (grade_ids) as JSON. Only assigned subjects appear when recording results.
Username auto-generated from name + random digits. Password hashed via password_hash(). Credentials emailed directly to the teacher.
Admin captures surname, first name, email, phone, WhatsApp, relation, occupation, and address. Stored in parents.
If parent email matches a learner record, the link is created automatically via parent_student junction table. Manual linking also available.
Credentials emailed. Parent logs in to Parent Portal. Default password 00000000 — change on first login.
Admin adds class name, numeric grade (R–12), and section/stream. Stored in tblclasses with school_id.
Each class carries a numeric grade. ClassNameNumeric used for sorting and curriculum alignment.
Admin sets ClassId on each learner. Class size calculated automatically. Learner-to-teacher ratio tracked.
Admin adds subject name, phase, and category. Stored in ref_subjects. All 11 SA language groups and all phases supported.
School selects which subjects to offer via school_subjects junction table. Subjects appear in teacher and student portals immediately.
Subjects grouped by phase. Learners see only subjects matching their phase and grade number. Supports all phases from Day Care to FET.
Teacher selects class, subject, student. Enters marks (0–100), exam term, and exam type. Stored in tblresult.
calcGrade() assigns: A+ (90–100), A (80–89), B+ (70–79), B (60–69), C (50–59), D (40–49), F (<40).
Parent receives automatic email and WhatsApp via sendEmail() and sendWA() with subject, marks, grade, and term.
Learner views in Student Portal. Parent views in Parent Portal. Admin sees school-wide analytics.
Teacher selects class and date, marks each learner Present, Absent, Late, or Excused, and optionally adds notes. Stored in attendance.
System calculates present/absent/late counts and overall attendance rate (%). Displayed in Student and Parent portals.
Full attendance history with dates and notes. Admin generates school-wide attendance reports.
School selects languages from ref_languages. Stored in school_languages. All 11 official South African languages supported.
Home language assigned per learner via home_language in tblstudents.
Language data appears in learner profiles, class rosters, and reports for subject placement and demographic analysis.
Deliver digital lessons with multimedia content, file attachments, and structured objectives.
E-LearningTeacher adds title, description, objectives, content, type, difficulty, and duration. Stored in elearning_lessons.
Supporting files (PDF, DOC, PPT, video) uploaded to lesson_files. Students download directly.
Lessons accessible via Student Portal, organised by subject and class. Students track progress independently.
Create auto-graded quizzes with multiple question types. Students see scores the moment they submit.
E-LearningTeacher adds questions and correct answers stored as JSON in quizzes. Optional time limit configurable.
Student answers all questions and submits. Answers stored in quiz_attempts with timestamp.
Score calculated and saved immediately. Student sees result and can review answers. Teacher tracks all attempts.
Assign, collect, and track homework online. Parents get notified automatically.
E-LearningTeacher adds title, description, due date, and optional reference file. Assigned to class and subject via homeworks.
Parents receive email and WhatsApp with homework details, subject, and due date automatically on assignment.
Student submits text and optional file via homework_submissions. Status updates to "Submitted" with timestamp. Overdue items highlighted automatically.
Admin or teacher adds title, content, category (General, Academic, Important, Urgent), and target audience. Stored in notices.
Notices filtered by target_audience. Each portal shows only notices relevant to that user type.
Urgent notices appear with red highlighting. Important notices highlighted yellow. Visible across all portals.
Admin adds recipient, subject, and content. System generates a unique reference: SCODE/LTR/YEAR/####. Stored in official_letters.
FPDF library generates a letterheaded PDF with school branding, reference number, date, and admin signature.
PDF attached to email via multipart MIME. Letter saved with status "sent". Full audit trail of all official communications maintained.
Admin adds subject, content, and target (All, Parents Only, Teachers Only). Stored in newsletters with sent_by and sent_at.
System queries the target audience and sends HTML email via sendMail(). Delivery count tracked.
All newsletters saved with sent count and timestamp. View full history in Admin Portal.
fmtPhone() normalises numbers: 0XX → 27XX. Supports South African (+27) and Zambian (+260) numbers.
hwWA() and resWA() generate WhatsApp messages with bold formatting for homework and results.
sendWA() sends via Twilio WhatsApp Business API to whatsapp:+27XXXXXXXXX. Delivery tracked.
Automatic emails fire for: learner enrolment, teacher creation, parent registration, result publication, homework assignment, and password reset.
Personalised HTML emails with school branding. Sent via SMTP (Gmail) using sendMail().
Success and failure logged to storage/logs/mailer.log. No manual effort required for routine communications.
Admin uploads PDF, DOC, DOCX, XLS, or images. Stored in uploads/documents/YYYY/ with metadata in school_documents.
Documents categorised by type (Policy, Circular, Form, Template, Report, Other). Searchable by title.
View and download from Admin Portal. Full upload and access audit trail.
Admin uploads a CSV with standard headers. System validates format via fgetcsv(). Supports learners, teachers, and parents in one import.
System reads each row, validates data, and inserts to the database. Usernames and passwords auto-generated and emailed to each user.
Success count and failed records listed. Error details shown per failed row. Full import history available.
Admin uploads school logo stored to uploads/logos/. Logo appears in all portals, PDF letters, and email templates.
Admin selects hex colour. Stored as theme_color and applied globally via CSS variables across all portals.
All portals and documents use the school's own logo and colour. Each school has a distinct branded experience.
All passwords hashed with password_hash() using PASSWORD_DEFAULT. No plaintext credentials stored anywhere.
Session validation on every page. Sessions destroyed on logout. CSRF tokens in session for all state-changing actions.
All queries use PDO prepared statements with parameter binding. ATTR_EMULATE_PREPARES = false enforced.
HTTPS enforced site-wide. SMTP uses TLS/SSL for secure email. Sensitive data encrypted at rest.
All portals built with CSS media queries at 1100px, 860px, 768px, 640px, and 480px breakpoints for optimal viewing on every screen.
Desktop nav collapses to a touch-friendly hamburger menu. Buttons and inputs sized for thumb use. Tables scroll horizontally.
All features fully accessible on phones and tablets. No functionality locked behind desktop-only views.
No on-premise hardware required. Platform fully hosted and managed. Access from any device with an internet connection.
24/7 availability across all portals. Mobile-responsive for tablets and phones out of the box.
System updates deployed without school intervention. Always running the latest version with current security patches.
Regular database backups via automated scripts. Covers all tables: schools, learners, teachers, parents, results, attendance.
All uploaded files backed up: logos, documents, materials, homework submissions, and videos.
Disaster recovery procedures in place. Point-in-time restoration. Minimal data loss in any failure scenario.
Teachers share YouTube links or upload their own recordings — students watch directly in the portal
Embed educational YouTube videos directly into lessons. Students watch without leaving the portal.
Teacher pastes a YouTube URL. System extracts video ID via regex and stores it in video_contents.
Video assigned to a class and subject with title, description, and optional teacher notes.
Students watch via <iframe> embed directly inside the Student Portal — no redirects.
Upload recorded lectures, tutorials, and demonstrations. Hosted and served to students automatically.
Teacher uploads MP4, AVI, or MOV. File saved to uploads/videos/ with a unique filename.
Title, description, and class/subject assignment stored in video_contents.
Students play the video via HTML5 <video> player. Works in any browser, no plugins required.
Organised video library for students — browse by subject, search by title, and watch anytime.
All videos sorted automatically by subject, class, and teacher. Metadata in video_contents drives filtering.
Students filter by subject or class. Search by title. Videos display with descriptions and teacher name.
Library accessible from any device via Student Portal. Students revisit content anytime for independent revision.
All portals are mobile-optimised — no app required. Works on any phone or tablet browser.
The full platform works on any phone or tablet browser right now. A dedicated app for iOS and Android is coming soon.
Join hundreds of schools across South Africa running smarter with SmartConnector.