Back to Projects

SkillSathi

2026

Next.js
Flutter
TypeScript
Tailwind CSS
Express
MongoDB
Stripe
Firebase
Cloudinary

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-backendExpress 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 → instant verified status.
  • L2 Intermediate — practical-only flow: trainees upload files/links against rubric prompts; admins review via adminReviewPracticalTask before 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.