SOQ International Academy

Master Frontend Guide

frontend_master screenshot

Live screenshot from the SOQ beauty demo (aiacademy.aiee.dev).

SOQ International Academy TMS “ UI/UX designer handover ” AI coding agent ready — Updated 2026-09-14

On this page

How to use this document

  1. Read Product + Surfaces + Roles first — do not invent a fourth surface without product approval.
  2. Use Design system + Components — prefer tokens over one-off hex colours.
  3. Use Screen map + Journeys — match business logic before changing IA.
  4. Use AI coding rules when generating Blade/Sass/JS — wrong paths break Mix builds.
  5. Always check business logic in Technical Master before redesigning purchase, payout, quiz, attendance, or org seats.
Sibling documents
DocWhy
Documentation/SOQ_Business_Plan.mdProduct portfolio, commercial modes, UX principles
Documentation/Technical/MASTER_TECHNICAL_DOCUMENTATION.mdFlows, gates, permissions
Documentation/Technical/SOQ_TMS_Permission_Catalogue.pdfWhat each role can see/do
This Operator HTML guideField-level “what to click” pages (Create a Course, Quizzes, Colors — )
Documentation/SOQ_Demo_Tooltips_System.mdIn-app tip overlays
Documentation/SOQ_Module_Architecture.mdCore feature architecture / entitlement visibility
Demo tip logins

Toggle SOQ_DEMO_TIPS=true for in-app tips, and DEMO_ONE_CLICK_LOGIN=true for 1-click buttons on /login plus the header Demo dropdown. Full credentials: Demo Accounts — Beauty Demo Pack.

RoleEmailPasswordPath
Adminadmin@soq.edu.sgDemo@1234/admin
Studentstudent@soq.edu.sgDemo@1234/panel
Instructortrainer@soq.edu.sgDemo@1234/panel
Organizationorg@soq.edu.sgDemo@1234/panel
Hardware partnerdemo.hw.*@soq-hw.sgDemo@1234/panel

0. Product in one page

SOQ International Academy is a Singapore PEI delivering AI & Business, Beauty & Wellness, Retail & Soft Skills, and workshops — campus + online.

Platform promise: Discover ? Learn ? Credential ? Career

ModeUI meaning
A. AcademySOQ sells SOQ programmes — brand-first catalogue, PEI trust
B. MarketplaceInstructors & orgs publish — seller dashboards, packages, commissions, payouts
Nine product areas
#ProductFrontend surfaces
1Course & Learning CloudWeb catalogue, learning page, Panel create wizard
2Assessment & CredentialsQuizzes, assignments, certificates, validation
3Live Classroom & MeetingsAgora / Zoom / Jitsi / BBB, meeting booking
4Commerce & FinanceCart, checkout, wallet, offline pay, sales, payouts
5Organization & Multi-tenantManage instructors/students, org classes, seats
6Growth & EngagementDiscounts, bundles, noticeboards, support, landing builder
7Talent & MarketJobs, events, instructor finder, become-instructor
8Admin, Security & OpsAdmin RBAC, settings, reports
9Help & AdoptionShipped: public Support Widget FAB + KB; in-panel help tips via SOQ_DEMO_TIPS
UX principles (locked)
  • Role-based dashboards — never show Admin chrome to students; never put Admin users in Panel
  • No unnecessary friction — clear wizards; show package limits early
  • Mobile-ready — responsive design_1; Mobile API is separate
  • Brand / PEI trust — public site must feel like SOQ Academy
  • Self-serve help — Support Widget shipped; extend KB / tips as needed
  • Security visible when needed — explain payout approval, offline pending, device limits

1. Three frontend surfaces (critical)

The product is not one app. It is three UIs sharing one Laravel backend.

SurfaceWhoLayout shellNever
WebGuests + logged-indesign_1/web/layouts/app.blade.phpHardcode Admin URLs
Panel /panelStudent / teacher / orgdesign_1/panel/layouts/panel.blade.phpLet is_admin in
AdminAdmin + staffadmin/layouts/app.blade.phpAssume same CSS as Panel

Admin URL prefix is configurable — use getAdminPanelUrl(), never hardcode /admin/....

Tech stack
LayerChoice
TemplatesLaravel Blade (no React/Vue/Livewire on main UI)
CSSBootstrap 4.6.2 custom Sass fork (design_1)
Admin lookStisla-style
JSjQuery + feature .min.js bundles
BuildLaravel Mix 6 ? public/assets/...
IconsIconsax; Admin also Font Awesome
ThemingDB Theme injects CSS variables

Implication: Redesigns should stay Blade-compatible unless product approves an SPA rewrite. Prefer evolving design_1 + Admin module-by-module.


2–3. Vocabulary & role matrix

UI / Figma termCode
Class / Coursewebinars — /panel/courses
StudentRole user (id 1)
InstructorRole teacher (id 4)
OrganizationRole organization (id 3)
Admin / StaffRole admin or is_admin=1
Panel/panel — not Admin
RoleWebPanelAdmin
GuestYesNoNo
StudentYesStudent menusNo
InstructorYesTeaching menusNo
OrganizationYesPeople + org classesNo
Admin / staffLimitedBlockedYes

Panel sidebar logic: Source/app/Mixins/Panel/SidebarItems.php — filtered by permissions and feature settings. Do not design a static mega-nav that ignores permissions.

Also see: User Roles, Become Instructor, Organization Users.


4–5. Design system

New and redesigned UI uses the SOQ Edu navy + gold Tailwind system: docs/engineering/product/brand-guide.md, tokens in resources/views/design_1/web/home/soq-home-tailwind.input.css, compiled to public/assets/design_1/css/soq-edu-home.css (npm run build:soq-home). Reference screens: public home and the /panel dashboards. A redesign changes visuals only and keeps every partial, data point, link, form field, JS hook and permission condition of the old view.

The table below is the legacy blue + lime palette (soq-theme.css), still used by screens not yet redesigned. Do not use it for new UI.

TokenHexUse
Primary blue#0033CCCTAs, links, active nav (--soq-blue / --primary)
Primary hover#002699Button / link hover (--soq-blue-dark)
Accent lime#CCFF00Highlight CTAs (--soq-yellow / --accent) — foreground #111 only
Accent hover#B8E600Lime hover
Secondary#0A1F5CHeadings / deep navy (--secondary)
Text#121F3EBody text (--soq-text)
Muted#5A6A85Hints / secondary copy
Border#D8E0ECCards / dividers
Section BG#EEF3FFSoft public sections (--section-bg)
Panel canvas#F3F6FBUser panel background (soq-user-panel)

Rule: Prefer CSS variables from soq-theme.css / theme helpers. Lime / .bg-accent uses foreground #111 (never white). Blue fills use white text. Ignore leftover --soq-pink / purple stock. New UI icons: inline Lucide-style SVG (legacy screens: Iconsax linear).

Operator pages: Colors, Fonts, Personalization, Custom CSS & JS.


6. Component & interaction grammar

~70% of Panel/Admin screens follow the same pattern — reuse it unless replacing system-wide.

Panel list page
  1. Extend panel layout
  2. Optional top stats (card-statistic)
  3. White rounded container (bg-white rounded-24)
  4. Filters (Select2 + DateRangePicker)
  5. Table (panel-table) + row partial
  6. AJAX pagination (get_view_data.js)
  7. Empty state (no-result)

Feedback: toast showToast “ destructive confirm SweetAlert2 ” demo tips Tippy — status badges bg-success-30 text-success.


7. Screen map (key paths)

~1,500 Blade views under Source/resources/views/.

AreaPath
Authdesign_1/web/auth/theme_1/
Become instructordesign_1/web/become_instructor/
Panel dashboardsdesign_1/panel/dashboard/
Course catalogue / showdesign_1/web/courses/
Learning pagedesign_1/web/courses/learning_page/ (~52 blades)
Create course wizarddesign_1/panel/webinars/create/steps/
Cart / checkoutdesign_1/web/cart/
Quizzes / certificates / attendancedesign_1/panel/quizzes/, certificates/, webinars/attendances/
Adminadmin/ (~522 blades)

Related: Create a Course, Quizzes & Certificates, Live Classes, Certificate Validation.


8. Redesign priority

PrioritySurface
P0Web marketing + catalogue + course show; Learning page; Auth + become instructor
P1Panel dashboards; Create course wizard; Cart/checkout
P2Quizzes / certificates; Attendance; Financial / payout
P3Admin lists; Jobs / events / CMS
DoneSupport Widget (Product 9) — see Support Widget

9. User journeys

Full diagrams (master + each role): User Flows & Role Diagrams.

Student
Browse ? Course page ? Cart ? Pay ? Learning page ? Quiz ? Certificate ? (Jobs/support)
Instructor
Become instructor ? Package ? Admin accept ? Create course (8 steps) ? Live ? Sales ? Payout

Create course steps: 1 Basic “ 2 Extra ” 3 Pricing “ 4 Content ” 5 Prerequisites “ 6 FAQ ” 7 Quiz & certificate — 8 Message to reviewer

Organization
Org package ? Add instructors/students ? Org classes ? Financial (show seat limits early)
Admin
Users/roles ? Review classes ? Sales & offline ? Payouts ? Settings/theme
Attendance
Panel ? Courses ? Attendances ? Session ? present / late / absent
Live join
Learning page ? join ? BBB | Agora | Zoom | Jitsi (entitlement required)

10. Feature gates & stubs

#LayerSymptom
1RBACMenu hidden / 403
2Settings / Features JSONFeature absent on Panel/Web
3Admin stub blades“Feature not activated”
4Feature toggle offModule / theme / mobile hidden until enabled in Admin Features

Do not redesign blindly: Admin Enrollment depends on features + permissions. Jobs/Events/Attendance depend on settings + permissions.


11. Assets & build

EditPath
Panel/Web SassSource/resources/sass/design_1/
Admin SassSource/resources/sass/admin/
Panel/Web JSSource/resources/js/design_1/
Blade viewsSource/resources/views/design_1/, admin/
Compiled CSS/JSpublic/assets/design_1/, public/assets/admin/

AJAX lists: resources/js/design_1/parts/get_view_data.js — CSRF: app_includes/ajax_setup.js


12–14. Copy rules & AI coding rules

Copy
  • Say “Class/Course” to learners “ not ”Webinar — (code-only term)
  • SGD formatting; Singapore English
  • Explain pending offline payment & payout approval
Always
  1. Check business logic before changing a flow
  2. Preserve three surfaces + role matrix
  3. Gate UI with @can / feature settings
  4. Use theme CSS variables
  5. Reuse list/filter/table/toast/SweetAlert patterns
  6. Keep domain routes unless backend changes in same PR
  7. Add demo tips for new primary actions
  8. Compile assets with Mix after Sass/JS edits
Never
  • Put Admin users into Panel IA
  • Hardcode Admin URL prefix
  • Assume stub Admin features are live
  • Introduce React/Vue for one screen without API + architecture decision
  • Ship learner-facing “webinar” wording
Definition of done
  • Role visibility correct — Desktop + mobile checked
  • Empty / loading / error / pending states
  • Permissions & feature-off considered — Strings via trans()
  • Theme variables used — AJAX list pattern intact if list page

15. Suggested Figma structure

SOQ TMS Design/
 00 Foundation/ tokens, type, icons, components
 01 Web/ marketing, catalogue, course, cart, auth, learning
 02 Panel Student/
 03 Panel Instructor/
 04 Panel Organization/
 05 Admin/
 06 Flows/ purchase, create course, payout, quiz, attendance
 07 Specs/ redlines + notes for AI agents

Annotate each frame: Role “ Surface ” Permission “ Feature flag ” Empty state — Blade path


17. Open questions (confirm before big redesign)

  1. Full SOQ brand redesign of public site, or theme-token restyle of design_1?
  2. Should Admin stay Stisla-like, or unify with Panel visual language?
  3. Is Product 9 (in-app help) in Lyn's first milestone?
  4. Which modules are Mode A only vs marketplace Mode B for launch?
  5. Which Admin stubs (e.g. Enrollment) must be unblocked vs hidden?