Admin Guide

The EduNest LMS admin panel is the control center for your entire learning platform. It lives under /admin, with pages served from src/app/admin/(panel)/. Access requires signing in at /admin/login; the panel layout is wrapped by license and (on the desktop build) PIN gates before any section renders. This guide walks through every administrative area exactly as it ships.

Signing In & Access Control

Path: /admin/login

  • Email + password sign-in with a "Remember me" option.
  • Authentication issues a JWT stored in an HttpOnly cookie (admin_token); the panel layout reads it on every request.
  • Authorization is enforced server-side by requirePermission(action, resource) on each API route — never by hiding menu items alone. A super role (e.g. VENDOR_ADMIN, SUPERADMIN) bypasses checks; other admin users carry a role_id whose role's permissions array (entries like settings:read, courses:update) decides what they can reach.
  • A License Gate wraps the panel: on non-development domains the panel only opens once the license is valid, and a warning bar appears when a license is inside its grace period. See Settings → License below.
  • The desktop build adds a 4-digit PIN gate (local, SHA-256 hashed) for an extra lock screen.

Dashboard

Path: /admin/dashboard

The first screen after sign-in — an at-a-glance health check of the business.

  • KPI cards — Net Revenue (gross shown beneath), Paid Orders (with buyer count), Average Order Value (with refund rate), and Learners (new in last 30 days).
  • Catalog strip — Published Courses (draft count), Instructors (pending highlighted), Enrollments in 30 days (all-time total), and Bundles (completions in 30 days).
  • Period selector — This month / 3M / 6M / 12M.
  • Revenue line chart plus a 30-day pulse box (new learners, enrollments, completions, pending instructors).
  • Lists — top 5 courses by revenue, recent enrollments, pending instructor applications, and the latest transactions (each links to its detail page).
  • Quick links — Courses, Enrollments, Learners, Instructors, Revenue, Coupons, Theme, Integrations.
Sub-page Path Shows
Revenue /admin/dashboard/revenue Revenue / Paid / Outstanding / AOV, revenue-by-day line chart, payment-status donut, tax/shipping/discount breakdown, custom date range
Analytics /admin/dashboard/analytics Orders, avg items/order, units sold, products sold; orders-over-time bar, orders-by-status donut, top products, low-stock alerts
Activity Logs /admin/settings/activity Audit trail of admin actions

Learning

The heart of the LMS. Courses are managed under /admin/learning/courses (not /admin/courses).

Courses

Path: /admin/learning/courses

A filterable table of every course. Columns: thumbnail + title, category, creator (Platform for in-house courses or the instructor's name), level (Beginner / Intermediate / Advanced), price (sale price shown when set; free shown in green), students, rating, and status. Tabs filter by All / Draft / Pending / Published / Rejected / Archived with live counts, and admins get a creator filter (Platform vs. individual instructor).

  • Create course opens a modal (title, optional category, level). It creates a draft and redirects into the course builder.
  • Course builder at /admin/learning/courses/[id] is the full editor (curriculum, pricing, metadata) in admin mode.
  • A course moves through draft → pending → published, or can be rejected (with an optional reason) or archived. For instructor-submitted courses awaiting review, admins get inline Approve / Reject actions, also surfaced at the Approval Queue.

Courses are built from sections which contain lessons; the same curriculum drives the learner course player at /learn/[slug].

Other Learning sections

Section Path What it manages
Approval Queue /admin/learning/courses (Pending tab) Courses submitted by instructors awaiting approval
Categories /admin/learning/categories Nested course categories with slugs; drill into sub-categories; CSV import
Bundles /admin/learning/bundles Multi-course bundles / learning paths (new + edit pages)
Instructors /admin/learning/instructors Instructor accounts: name, courses, revenue-share %, status (pending/approved/rejected/suspended); approve, reject, edit, delete
Learners /admin/learning/learners Learner accounts: enrolled/completed counts, joined date, status
Enrollments (Learning group) Who is enrolled in what
Payouts /admin/learning/payouts Instructor payout records

Assessment

Section Path Notes
Quizzes /admin/quizzes Quiz list + builder (/admin/quizzes/new, /admin/quizzes/[id]), questions editor
Surveys /admin/surveys Survey list + builder, questions editor
Task to Do /admin/todo-tasks Internal task management

Customers & Learners

Path: /admin/customers

The unified customer directory. Columns: name (with a Blacklisted badge when flagged), phone, email, tags, and status. Summary cards show Total / Active / Inactive / Blocked. Add at /admin/customers/new, edit at /admin/customers/[id]/edit. Learner-specific views live under Learning → Learners; both edit through the same customer form.

Commerce

Orders

Path: /admin/orders

Summary cards (Total Orders, Paid, Pending, Revenue) sit above a tabbed table — All / Paid / Pending / Refunded / Failed. Columns include order code, student, course, amount (with discount/coupon shown), payment method, status, and date.

The detail page at /admin/orders/[id] shows student information, the purchased course(s), a pricing breakdown (subtotal, discount, tax, shipping, total), coupon info, and payment/gateway reference. Actions: Issue refund for paid orders, or Mark as paid to confirm an offline payment (which enrolls the buyer).

Subscriptions, Plans & Revenue

Section Path Notes
Subscription Plans /admin/subscription Membership plans: price, features, included courses, seats, trial days
Plan Change Requests /admin/plan-changes Pending plan upgrade/downgrade requests
Revenue /admin/revenue Detailed revenue reporting
Reviews & Ratings /admin/reviews Moderate course reviews: publish / hide, edit, vendor reply, status (Pending/Published/Hidden)

Marketing

Section Path Fields & actions
Coupons /admin/marketing/coupons Code, percent/fixed discount, applies-to (all courses or selected), max redemptions, valid-until, active, default. New/edit pages.
Gift Cards /admin/marketing/gift-cards Auto-generated GC-XXXX-XXXX code, amount, currency, issued-to, recipient email, expiry, notes; Void action; status ACTIVE/REDEEMED/EXPIRED/VOIDED

Leads

Section Path Notes
Contacts /admin/leads/contacts Contact-form submissions; view marks as read; New/Read status
Enquiries /admin/leads/enquiries Course/general enquiries
Newsletter /admin/leads/newsletter Newsletter subscribers; active/inactive; delete

Content (CMS)

The storefront is fully editable without touching code.

Section Path Editable content
Pages /admin/pages Custom/static pages: slug, title, subtitle, markdown content, image, banner, tags, SEO, per-language translations
Hero Slider /admin/hero-slider Per-slide eyebrow, title + highlight, subtitle, desktop/tablet/mobile images, primary & secondary CTAs, sort order, active; drag-to-reorder
About /admin/about About page: header, hero overlay, Our Story, values, team members, journey timeline, stats, SEO
Why Choose Us /admin/why-choose-us Section title/subtitle, main image, repeating icon/image + title + description items
Blog /admin/blogs (+ /admin/blogs/categories) Posts: title, slug, category, author, excerpt, markdown content, featured image, tags, published; plus blog categories
Media Library /admin/media Uploaded media assets
FAQs /admin/faqs Category, question, answer, sort order, active
Gallery /admin/gallery Image/video items: title, type, category, tags, description, multi-image upload, SEO; drag-to-reorder
Testimonials /admin/testimonials Name, location, rating, message, photo, product/course reference, sort order, active
Partners /admin/partners Name, logo, website URL, sort order, active; bulk logo import
Events /admin/events Title, date, type (Online/Webinar/Workshop/In person…), location, register URL, description, image

Images uploaded anywhere in the CMS are optimized (typically to WebP) before being stored on Cloudflare R2 — see the Customization Guide for format/dimension settings.

Apps

Path: /admin/apps

Branding and configuration for the optional desktop and mobile app builds: App Branding, Desktop App, and App Settings.

Settings

/admin/settings/* holds platform configuration. The most important screens:

Integrations (Add-ons)

Path: /admin/settings/integrations

This is the add-ons and integrations hub. It lists every integration channel (payments, email, storage, analytics, video, plus premium channels) and every feature add-on. For each:

  • Connect a channel provider by entering its credentials — secrets are encrypted at rest on the server.
  • Toggle a connection active and mark one as primary per channel.
  • Activate/deactivate feature add-ons (e.g. Certificates, Gamification) with a single toggle.

Add-ons ship built into the product. A premium add-on becomes usable only when it is entitled (covered by your license) and toggled on. If an add-on is not covered by your main license, you can unlock it by entering its purchase code on this screen — the code is validated and the entitlement is stored. See the Integrations Guide and Add-on Development Guide for the full model.

Theme / Appearance

Path: /admin/settings/theme

A multi-tab panel controlling site identity (business name, legal name, description, logo, app icon, favicon), appearance (colors, fonts, gradients, header/footer/menu), homepage layout, image processing (format, quality, per-type dimensions), SEO, analytics IDs, localization defaults, authentication toggles, PWA, custom code, and instructor payout settings. Full details are in the Customization Guide.

Languages & Localization

Path: /admin/settings/languages

Add languages (code, name, native name, flag, locale, script, LTR/RTL direction), set a default, and open the per-language translation editor for UI strings. EduNest ships with English, Hindi, Tamil, and Arabic (RTL). Related localization screens: /admin/settings/countries, /admin/settings/locations, /admin/settings/currencies.

License

The license is enforced by the License Gate wrapping the panel (component src/components/admin/LicenseGate.tsx), backed by POST/PATCH /api/v1/admin/license. On non-development domains the panel is locked until the domain license is activated; states include active, grace, unactivated, invalid, and expired. A grace-period bar warns before expiry, and the license can be re-verified from within Theme Options. On development/localhost hosts the license is bypassed.

Other settings

Group Paths
Commerce /admin/settings/checkout, /invoice, /tax, /tax-rates, /advanced
Notifications /admin/settings/notifications (send + templates for Email / SMS / WhatsApp), /notification-log
Access /admin/settings/users, /roles, /permissions
Developer /admin/settings/api-tokens, /webhooks
Operations /admin/settings/backup (backup & restore), /activity (audit log)

Notification Templates

Path: /admin/settings/notifications

Compose and manage transactional message templates per channel (Email, SMS, WhatsApp). Templates carry a name, category, channel, subject/preheader/from fields (email), and a body with {{token}} placeholders such as {{first_name}}, {{order_number}}, {{amount}}, {{otp}}, and {{dashboard_url}}. You can preview a template with sample data and send broadcasts to all users, a role, or specific recipients. Activating certain add-ons (e.g. Certificates) seeds their own templates automatically.


© CreativeCape Solutions · creative-cape.com · support@creative-cape.com