2026
Three-tier skills verification platform — L1 MCQ exams, L2 practical submissions, and L3 mentor interviews — with shareable certificates, Stripe payments, and LMS courses. Next.js 16 web app + Flutter mobile client on a shared Express + MongoDB API.
Overview
SkillSathi is a production platform that turns learning into provable, employer-trusted expertise. Trainees verify skills across three levels — from timed MCQ assessments through practical project submissions to live mentor interviews — and earn shareable certificates with public verification URLs.
The work spans three codebases: skillsathi (Next.js 16 web — marketing, admin, trainer, and trainee portals), skillsathi-app (Flutter mobile for on-the-go verification), and skillsathi-backend — Express 4 + Mongoose on MongoDB, deployed on Google Cloud Run. Auth is JWT (httpOnly cookie on web, Bearer token on mobile); payments via Stripe.
Skill verification (L1–L3)
Each skill defines an assessment mode and tier pricing via verificationConfig:
- L1 Basic — timed MCQ exam from a per-skill question bank (
multiple-choice,text,code,scenario). Multiple-choice auto-graded on submit; open-ended types scored manually by admins. Pass at configurable threshold → instantverifiedstatus. - L2 Intermediate — practical-only flow: trainees upload files/links against rubric prompts; admins review via
adminReviewPracticalTaskbefore pass/fail. - L3 Advanced — live mentor interview: book a slot (Google Meet, Zoom, or onsite), admin approves booking, interview runs in-platform, mentor enters a 0–100 score.
Paid skills return 402 PAYMENT_REQUIRED until Stripe checkout completes. Retests supported via a dedicated payment flow.
Web experience
The skillsathi Next.js app covers the full product surface:
Public — skill catalog (/skills), verification wizard (/skill-verification), career analyzer, counselor booking, course catalog, certificate display at /accomplishments/verify/[certificateId], and public lookup at /verify/[code].
Trainee (/trainee) — dashboard, skill exams, profile, enrolled courses with HLS video playback (Cloudinary proxy).
Trainer (/trainer) — course builder, student enrollments, analytics, earnings, and resource library (parallel legacy /my-* routes).
Admin (/admin) — user CRUD, course management, skill-verification CMS (skills, question bank, verification queue with MCQ/practical/L3 review), platform settings, and session management.
Mobile app
skillsathi-app (skillsathi_flutter v1.0.5) is a Flutter rewrite of the former Expo/React Native client, sharing the same API contracts and design tokens synced from design_tokens/.
Implemented: email/password + OTP auth (JWT in flutter_secure_storage), skill list and detail, full L1 MCQ → L2 practical → L3 interview booking flows, Stripe PaymentSheet for paid verification, admin skill CRUD, session management, and certificate deep-links back to the web verify page.
In progress: courses tab, admin users, dashboard stats, and pending-payments screens remain UI shells — the web app carries full course/trainer/admin coverage today.
Backend API
The skillsathi-backend service exposes REST on port 8080 (Cloud Run in production):
/api/auth— sign-up/in, Google OAuth, OTP (login, signup, forgot-password), sessions (list/revoke), profile + photo upload/api/skills— catalog, start verification, MCQ submit/complete, practical upload, L3 slot booking, public verify by code, QR; admin CMS for skills, questions, verifications, interview lifecycle/api/payments— Stripe checkout for courses, skill verification, and retests; webhook handlers at/webhook/stripe/api/courses+ sections/lessons/resources — full LMS hierarchy with admin review workflow/api/enrollments,/api/career,/api/counselors— enrollments, career analyzer, counselor sessions
20 Mongoose models including User, Skill, Question, SkillVerification, PracticalTask, InterviewSlot/Booking, Payment, Course, Enrollment, and CareerProfile.
Technical notes
Web uses server actions (actions/skills.ts, auth.ts, admin.ts) calling NEXT_PUBLIC_API_URL with JWT forwarded via lib/serverApi.ts. Client state: Zustand (auth) + TanStack React Query. Certificates export via jspdf + html2canvas.
MCQ grading is rule-based; text/code/scenario and practical tasks are human-reviewed (Anthropic SDK exists for experimental course-recommendation debug only — not live assessment grading). Profile and badge images upload to Firebase; course/practical media via Cloudinary.
No Next.js middleware — route guards are client-side (AuthWrapper, per-role layouts). Roles: admin, trainer, trainee.
