All projects
Spring Boot
SkillNest — Full-Stack LMS
Production LMS with Spring Boot API, Admin console, Teacher studio, Student portal, and marketing landing — courses, live classes, quizzes, assignments, Razorpay, JWT refresh, and Resend email.

Live apps
Overview
SkillNest is an end-to-end Learning Management System by Elyvate Labs. A Spring Boot + MongoDB backend powers marketplace courses, curriculum outlines, live classes, quizzes, assignments, books, support, Razorpay payments, JWT access/refresh, Google Sign-In, and Resend (HTTPS) email for OTP on Render. Four frontends ship separately: Vite React landing, CoreUI admin, TailAdmin-based teacher studio (SkillNest-branded auth), and Chakra student portal — all wired to the same API with CORS from app_settings.
Highlights
- ›One API, four production UIs — shared auth & settings in Mongo
- ›SkillNest-branded login on admin + teacher (OTP + Google)
- ›Test account admin@elyvatelabs.in with ADMIN + TEACHER + STUDENT access
- ›No dummy/fake content — empty states when data is missing
- ›Dynamic CORS from app_settings — Vercel origins managed without redeploy
Features
- ✓Multi-role JWT auth — ADMIN / TEACHER / USER with email OTP + Google; silent refresh on all portals
- ✓Admin analytics — signup/revenue trends with 7/30/90 day range and empty states
- ✓Teacher course lifecycle — create/edit, thumbnails, curriculum reorder, live schedules, earnings
- ✓Student learning — browse/enroll, video progress + resume, quiz timer auto-submit, books, payments
- ✓Marketplace landing — featured courses, categories, public curriculum outline (no lesson leaks)
- ✓Uploads everywhere — course media, books, KB sources, avatars via Upload controls
- ✓Payments — Razorpay gateway; teacher earnings; student order history
- ✓Live classes — schedules, exceptions, join URLs for students
- ✓Email on Render free — Resend HTTPS API (SMTP ports blocked); OTP debug auto-fill for testing
- ✓Deployed — API on Render Docker; Admin/Teacher/Student/Landing on Vercel
API endpoints
- POST /api/auth/otp/request — Email OTP (optional debugCode in test mode)
- POST /api/auth/otp/verify — JWT pair
- POST /api/auth/refresh — Rotate access token
- GET /api/marketplace/courses — Public course list
- GET /api/marketplace/courses/{id}/curriculum-outline — Section titles + lesson counts
- GET /api/admin/dashboard/analytics?days=30 — Trends & breakdowns
- GET /api/health — Service health


