Usage Guide

– Authentication

  – Use /register to create a new account; login via /login.

  – Promote at least one user to ADMIN (see section 6) to access /admin.

– Categories & Subcategories (Admin)

  – Navigate to /admin/categories and /admin/subcategories to create and manage taxonomy.

– Courses (Instructor/Admin)

  – Create a course at /instructor/courses/new.

  – Fill title, slug, descriptions, language, level, price, category/subcategory, and optional thumbnail/promo video URLs.

  – Add sections and lessons under /instructor/courses/[id]/lessons and upload lesson resources.

  – Uploads use Cloudinary; configure NEXT_PUBLIC_CLOUDINARY_* and preset first.

– Media Uploads

  – Client forms reference NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME and NEXT_PUBLIC_CLOUDINARY_UPLOAD_PRESET.

  – A secure signature endpoint exists at GET /api/uploads/cloudinary-signature for signed workflows.

– Payments & Enrollments

  – Stripe Checkout session is created via POST /api/checkout/create-session.

  – Webhook handler at /api/stripe/webhook upserts enrollments post-payment.

  – For testing locally: use the Stripe CLI to forward webhooks and set STRIPE_WEBHOOK_SECRET.

  – Note: The sample create-session route currently restricts access to ADMIN. For real use, allow students to create checkout sessions after authentication.