AIEE.DEVSOQ TMS CRD
HomeExport PDFOverview

Contents

/
  • 1.1Overview
  • 1.2About AIEE.DEV
  • 1.3Parties & sign-off
  • 2.1Plan SOQ-25K
  • 2.2Max claim (EDG)
  • 2.3Rate card
  • 3.1Discovery pack
  • 3.2Brand & website appendix
  • 4.1Attachment A
  • 4.2PRD
  • 4.3Solution overview
  • 4.4Registration
  • 4.5Admin
  • 4.6CRM & sales
  • 4.7Student & trainer portals
  • 4.8SWDA & finance
  • 4.9Platform
  • 4.10Chat agents
  • 4.11Ops modules
  • 4.12Business benefits
  • 4.13DSMR research
  • 4.14Build vs buy
  • 4.15Market & competitors
  • 5.1Project control plan
  • 5.2Prototype & screens
  • 5.3Capability roadmap
  • 5.4UI/UX
  • 5.5Frontend
  • 5.6Backend
  • 5.7Architecture
  • 5.8Tech spec
  • 5.9Directory structure
  • 5.10Handover pack
AIEE.DEVSOQ TMS / Coding Requirement Documentation
5.6 / 5.6 Backend
Pei Han CCO / Eddy CPO / HK CSO / Andy Koh CTOaiee.dev5.6 / Confidential
5. Delivery5.6 Backend
Section 5.6

Backend Implementation

API domains, SWDA hub, Xero sync, data model priorities, and engineering standards.

Backend strategy

Domain-driven API with event-driven integration for SWDA and Xero. UI apps never call government APIs directly.

Apps -> SOQ API Gateway -> Domain Services
                              │
                              ├─ Core TMS (programmes, runs, enrolment, attendance, assessment)
                              ├─ CRM (leads, opportunities, commissions)
                              ├─ Finance Orders (pricing, subsidies, invoices mirror)
                              ├─ Content/Learn (materials, progress)
                              │
                              └─ Outbox Events -> Workers
                                      ├─ SWDA Integration Hub
                                      └─ Xero Sync Service

Recommended stack

LayerChoiceWhy
APINestJS (Node/TypeScript) or .NET 8Enterprise modules, DI, clear boundaries
DBPostgreSQLRelational integrity for funding/grades
QueueRedis + BullMQ (or equivalent)Retries, rate limits for SWDA
Object storageS3-compatibleDocuments, SCORM, recordings
AuthOIDC + Singpass adapter + MFA for staffSG compliance
SecretsVault / cloud secrets managerSWDA credentials isolation
ObservabilityOpenTelemetry + structured logsTrace registration -> SWDA submit

Domain services (high level)

ServiceResponsibilities
IdentityUsers, roles, Singpass links, MFA, sessions
CatalogueProgrammes, courses, modules, versions, fees
SchedulingRuns, intakes, venues, Zoom, conflicts
AdmissionsApplications, offers, exemptions
EnrolmentStudent status, class assignment, Student 360 API
AttendanceSessions, QR tokens, approvals, % rules
AssessmentPapers, attempts, marks, certificates
CRMLeads, Privyr import, pipeline, commissions
OrdersPricing engine, subsidies, SFC allocation, refunds
NotifyEmail/SMS/in-app templates
AuditAppend-only activity & PII access logs
SWDA HubMapping, submit, reconcile, ops dashboard APIs
Xero SyncContacts, invoices, payments, trainer bills

Critical backend rules

  1. Idempotency keys on all SWDA and Xero writes
  2. Evidence gates — funding claim cannot submit without attendance/assessment evidence
  3. Configurable policies — 18-month exemption window as config
  4. TMS owns orders; Xero owns GL — never reverse that
  5. Outbox pattern — domain commit + event; workers process async
  6. PDPA — retention jobs, anonymisation, consent flags

SWDA Integration Hub (must-build)

CapabilityDetail
EnvironmentsSandbox + production configs
AuthSecure credential store; rotation
MappingSOQ domain ↔ SWDA payloads
JobsScheduled + real-time triggers
Ops UX APIStatus by run, errors, resubmit
AuditFull request/response retention policy

Functional coverage (confirm in discovery): course runs, registration, eligibility, grants, SFC, attendance, assessment, completion, disbursement status.


Data priorities (build order)

  1. Tenant/User/Role + Audit
  2. Course / CourseRun / Enrolment / Session / Attendance
  3. Orders / Payments (local) -> Xero later
  4. Assessment / Certificate
  5. CRM Lead / Opportunity
  6. ExternalSyncJob (SWDA) + reconciliation tables

Backend quality bar

AreaStandard
API designVersioned REST (+ OpenAPI); optional GraphQL later
TestsUnit for pricing/eligibility; contract tests for SWDA adapters
PerfEnrolment list p95 < 300ms; SWDA workers durable under rate limits
SecurityRBAC at row level for student PII; encryption in transit
DRDaily backups; RPO <= 24h MVP, tighten for go-live
5.5 Frontend5.7 Architecture

aiee.dev / Confidential

AIEE.DEV