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 arole_idwhose role'spermissionsarray (entries likesettings: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