NNasaq Training Centre
ShadoApps ServicesالعربيةWork sample · fictional client
Software Requirements Specification

Enrolment, payment, attendance and certificates platform

A mobile-first web platform that moves the trainee journey at a private training centre in Riyadh out of WhatsApp threads, bank transfers and Excel files, and into one place: enrolment, payment, attendance and certificates.

Version
1.0
Date
Sep 2026
Status
Ready for sign-off
Prepared by
ShadoApps

Interactive prototype: 11 screens covering the whole trainee journey, plus the instructor and admin views. Open it on your phone.

Open the prototype

1Executive summary

Nasaq runs about 12 courses a month, with an average of 15 trainees per course. Every enrolment today passes through a WhatsApp thread, a bank transfer matched by hand, a receipt sent as a photo, then a paper attendance register and a certificate laid out by hand in Word.

This document specifies a first release (MVP) that covers the journey end to end: the trainee finds the course, enrols from a phone, pays by mada or Apple Pay, receives a tax invoice, attends against a QR ticket, and receives a certificate carrying a verification code. The initial estimate is 485–685 development hours, or 8–12 weeks for a team of two developers.

2Current state and objectives

Problem todayImpactObjective in release 1
Enrolment through WhatsApp threadsEnquiries are lost, and one enrolment takes a full daySelf-service enrolment in under 5 minutes
Bank transfer matched by handSeats are confirmed late, and revenue figures carry errorsImmediate confirmation once payment clears, with no staff step
Seats held without paymentHeld seats that never convert, and high absenceA seat hold tied to a payment deadline
Paper attendance registersAttendance is hard to prove when the certificate is issuedA digital attendance register for every session
Certificates laid out by hand3–5 days' delay, and no way to verify themCertificate within 24 hours of the last session, with a public verification code
Assumption

The current figures (12 courses a month, 15 trainees per course) come from the discovery session and are to be reviewed with centre management before sign-off.

3Users and roles

RoleWhat they do in the platformChannel
VisitorBrowses the course catalogue, the schedule and the pricesPhone and desktop browser
TraineeEnrols, pays, shows attendance tickets, downloads invoices and certificatesPhone first
InstructorMarks attendance for their own sessions and sees the trainee listPhone, in the classroom
RegistrarManages courses, cohorts, enrolments and refundsAdmin console on desktop
Centre directorReviews the reports and approves exceptionsAdmin console

Role-based access control (RBAC): an instructor never sees payment data, and a registrar cannot amend attendance after a session is closed without a recorded reason.

4Release 1 scope (MoSCoW)

MustRequired for launch

  • Course catalogue with search and filters
  • Course page with cohort dates and seats remaining
  • Account on a mobile number with a one-time passcode (OTP)
  • Enrolment with a temporary seat hold
  • Payment by mada, Apple Pay and cards
  • Simplified tax invoice, reported to Fatoora
  • "My courses" and a QR attendance ticket
  • Attendance marked by the instructor
  • Certificates with a public verification code
  • Admin console for courses, cohorts, enrolments and refunds
  • Occupancy, revenue and attendance reports
  • SMS notifications

ShouldImportant, not a launch condition

  • Instalment plans through Tabby or Tamara
  • Waitlist for full cohorts
  • Corporate clients enrolling their staff in one batch
  • Reminders over WhatsApp
  • English interface
  • Discount codes

CouldIf time allows

  • Course and instructor ratings
  • Hijri date shown alongside Gregorian
  • One-tap certificate sharing to LinkedIn

Won'tNot in release 1

  • Online learning content (LMS)
  • Native mobile apps; an installable web app (PWA) is enough
  • Integration with government training systems

5Functional requirements

Story format: "As a… I want… so that…". Acceptance criteria are written as Given / When / Then.

Catalogue CAT

US-01

As a visitor, I want to browse courses by field, month and time of day, so that I find a course that fits my schedule.

Must

Given there are published courses, when I pick the field "Technology" and the month of October, then the list shows only the matching courses, each with the price inclusive of VAT and the seats remaining.

Given every cohort of a course is full, then the card reads "Full" and no enrol button is shown.

US-02

As a visitor, I want to see the course detail (topics, instructor, cohorts, programme accreditation number), so that I can decide before I pay.

Must

Account and enrolment REG

US-03

As a trainee, I want to sign in with my mobile number and a one-time passcode instead of a password, so that I can enrol quickly.

Must

Given a Saudi mobile number in the form 05XXXXXXXX and my consent to the privacy notice, when I request the code, then a 4-digit code reaches me by SMS and stays valid for 5 minutes.

When I enter a wrong code 3 times, then the request is blocked for 15 minutes and a message states when I may try again.

US-04

As a trainee, I want to hold a seat in a named cohort, so that my place is kept while I complete payment.

Must

When I tap "Enrol now", then the seat is held for me for 15 minutes with a visible countdown (BR-02).

Given I am already enrolled in the same cohort, then the system blocks the duplicate enrolment and shows me the existing one.

Payment and invoicing PAY

US-05

As a trainee, I want to pay by mada, Apple Pay or credit card, so that my enrolment is confirmed at once.

Must

When payment succeeds, then the enrolment status becomes Confirmed, a simplified tax invoice is issued, and an SMS with the details reaches me.

When payment fails, then a message explains why and offers another method, and the seat stays held until the deadline runs out.

US-06

As a finance officer, I want a simplified tax invoice issued for every payment and reported to Fatoora, so that the centre meets its e-invoicing obligations.

Must

When the invoice is issued, then it carries a serial number, a QR code, the centre's VAT registration number, the amount before VAT, VAT at 15% and the total, and it is reported to the platform within 24 hours.

US-07

As a trainee, I want to pay the course fee over instalments, so that I can enrol on the higher-priced courses.

Should

Attendance ATT

US-08

As a trainee, I want a QR attendance ticket in "My courses", so that I can enter the classroom without signing a paper register.

Must
US-09

As an instructor, I want to mark attendance by scanning the ticket or by hand from the list, so that every trainee is recorded for every session.

Must

Given the session is today, when I scan a valid ticket, then the trainee is marked Present and the counter goes up.

When attendance is amended by hand after the session is closed, then the system asks for a reason and writes it to the audit trail (BR-08).

Certificates CRT

US-10

As a trainee, I want my certificate issued automatically after the last session, so that I can use it in my CV straight away.

Must

Given my attendance is 80% or more (BR-04), when the last session is closed, then a PDF certificate is issued within 24 hours, carrying a verification code and the programme accreditation number.

When anyone opens the verification link, then the page shows the name, the course and the issue date only, and nothing else.

Administration and reporting ADM

US-11

As a registrar, I want to create cohorts and set the instructor, classroom, seat capacity, minimum enrolment and dates, so that they can be published for enrolment straight away.

Must
US-12

As a registrar, I want to cancel an enrolment and refund it under the policy, or move the trainee to another cohort, so that I can settle requests without going back to the accountant.

Must

When I cancel an enrolment, then the system calculates the refund automatically under BR-03, issues a credit note, and releases the seat.

US-13

As a centre director, I want occupancy, revenue and attendance reports for every course and cohort, so that I can decide which courses to repeat and which to stop.

Must
US-14

As a trainee, I want a reminder 24 hours before the first session, so that I do not forget the time or the place.

Must

6Business rules

IdRule
BR-01Prices are shown inclusive of VAT at 15%. The invoice separates the amount before VAT from the VAT amount.
BR-02A seat is held for 15 minutes during payment, then released automatically if payment is not completed.
BR-03Cancellation 7 days or more before the cohort starts: full refund. Between 3 and 6 days: 50% refund. Less than 3 days: no refund, with one free move to another cohort.
BR-04A certificate is issued to a trainee who attends 80% or more of the cohort's sessions.
BR-05When a cohort is full, a waitlist opens. If a seat is released, the first person on the list is notified and has 12 hours to complete payment.
BR-06If enrolments do not reach the minimum 5 days before the start date, the cohort is cancelled and everyone is refunded in full.
BR-07The mobile number is the trainee's primary identifier. Two accounts cannot share one number.
BR-08Every manual change to attendance or payments is written to the audit trail with the user, the time and the reason, and cannot be deleted.
Assumption

The refund tiers in BR-03 and the attendance threshold in BR-04 are proposals. Centre management signs them off before development starts.

7Data model and enrolment lifecycle

The enrolment is the central entity: it links a trainee to a cohort, and payments, attendance and the certificate all hang off it.

EntityKey fieldsRelationships
CourseTitle, field, hours, price, programme accreditation number, statusHas many cohorts
CohortCourse, instructor, classroom, time of day, seat capacity, minimum enrolment, statusHas many sessions and many enrolments
SessionCohort, date, start and end time, status (open / closed)Attendance is marked against it
TraineeName, mobile, email, consents and the date givenHas many enrolments
EnrolmentTrainee, cohort, status, hold expiry, sourceHas payments, attendance records and at most one certificate
PaymentEnrolment, amount, method, gateway reference, statusHas one invoice, and may have a credit note
InvoiceSerial number, amount before VAT, VAT, QR, Fatoora reporting statusBelongs to one payment
AttendanceEnrolment, session, status, method (QR / manual)One record per trainee per session
CertificateEnrolment, certificate serial, issue date, PDF linkBelongs to one enrolment
Audit trailUser, action, entity, value before and after, reason, timeCannot be amended

Enrolment lifecycle

Seat heldConfirmedCompletedThe normal path: payment, then attendance through to the end
Seat heldHold expiredPayment not completed within 15 minutes
ConfirmedCancelledRefund under BR-03, or cohort cancellation under BR-06
ConfirmedMovedConfirmed (another cohort)

8Non-functional requirements and compliance

IdAreaRequirement
NFR-01PerformanceThe catalogue and course pages shall load in under two seconds on a 4G connection.
NFR-02Availability99.5% monthly, with a daily backup retained for 30 days.
NFR-03SecuritySign-in by one-time passcode, permissions by role, and encryption in transit and at rest. Card data shall never be stored in the platform; the payment gateway holds it.
NFR-04Personal data protectionExplicit consent and a privacy notice in Arabic and English at the point of collection. Collect the minimum data needed. Support access, correction and deletion requests. A documented procedure for reporting any breach within 72 hours.
NFR-05HostingA data centre inside the Kingdom is preferred, to avoid the conditions attached to transferring personal data abroad.
NFR-06Language and interfaceArabic right-to-left first, designed mobile first, with colour contrast meeting WCAG AA.
NFR-07AuditabilityAn audit trail for every payment, refund and manual attendance action, as set out in BR-08.
Reference · Personal Data Protection Law

PDPL (Personal Data Protection Law) came fully into force on 14 Sep 2024. Its main obligations: consent as the default basis for processing, a clear notice at the point of collection, notification of the Saudi Data and AI Authority (SDAIA) of any breach within 72 hours, and controls on transferring data outside the Kingdom.

9Integrations

IntegrationPurposePriorityNotes
Locally licensed payment gatewaymada, Apple Pay, cardsMustCandidates: Moyasar, HyperPay, PayTabs, Tap. mada requires a gateway licensed inside the Kingdom.
FatooraReporting simplified tax invoicesMustDepends on where the centre stands on e-invoicing Phase 2.
Local SMS providerOne-time passcodes and notificationsMustUnder a sender name registered to the centre.
Tabby / TamaraInstalment plansShouldSome gateways support them directly, HyperPay among them.
WhatsApp Business APIRemindersShouldUsing approved message templates.
Reference · e-invoicing

Wave 24 of the integration phase (Phase 2) covers businesses whose taxable revenue exceeded SAR 375,000 in 2022, 2023 or 2024, with a compliance date of 30 Jun 2026.

Reference · mada

Processing mada payments requires a gateway licensed by the Saudi Central Bank (SAMA), and testing with mada test cards, not Visa alone.

10Out of scope

11Delivery plan and effort estimate

ModulePhaseHours (low – high)
Design and user interfaces, starting from the prototype140 – 60
Accounts, one-time passcode and permissions130 – 40
Catalogue and course page130 – 40
Enrolment and the seat hold140 – 50
Payment gateway integration140 – 60
Invoicing and the Fatoora connection250 – 80
Attendance and QR tickets230 – 40
Certificates and the verification page225 – 35
Admin console (courses, cohorts, enrolments, refunds)1–380 – 110
Reporting325 – 35
SMS notifications215 – 25
Testing and QA1–360 – 80
Deployment, configuration and launch320 – 30
Total485 – 685
PhaseWeeksOutcome
1 · Foundation1–4The trainee browses, enrols and pays; the centre publishes its courses.
2 · Operations5–8Invoicing, attendance, certificates and notifications are working.
3 · Launch9–12Admin console complete, reporting, acceptance testing, launch.
Assumption

The estimate covers Must requirements only, for a team of two full-time developers with a part-time tester. Should requirements are estimated once this document is signed off. The schedule excludes opening the merchant account with the payment gateway.

12Risks and open questions

ItemTypeProposed action
Is the centre in scope for e-invoicing Phase 2?Open questionConfirm with the centre's accountant before phase 2.
Are all programmes accredited by TVTC?Open questionCollect the accreditation numbers; they are printed on the certificate.
Delay in opening the merchant account with the payment gatewayRiskStart the paperwork as soon as this document is signed off, in parallel with development.
Volume of corporate enrolmentOpen questionIf it is more than a quarter of revenue, raise its priority to Must.
Collecting the national ID or iqama numberOpen questionDo not collect it unless the certificate requires it, keeping to data minimisation.
Reference · Programme accreditation

TVTC (Technical and Vocational Training Corporation) licenses private training centres and accredits their programmes. An accredited programme is one whose certificate is recognised in the labour market. The system therefore stores each programme's accreditation number and prints it on the certificate.

13Appendix: prototype screens