Refactor high-complexity React components in Dify frontend. Use when `pnpm analyze-component...
npx skills add didaco97/AiBoomiSkillMeter
Or install specific skill: npx add-skill https://github.com/didaco97/AiBoomiSkillMeter
# Description
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.
# SKILL.md
name: frontend-design
description: Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.
license: Complete terms in LICENSE.txt
This skill guides creation of distinctive, production-grade frontend interfaces that avoid generic "AI slop" aesthetics. Implement real working code with exceptional attention to aesthetic details and creative choices.
The user provides frontend requirements: a component, page, application, or interface to build. They may include context about the purpose, audience, or technical constraints.
Design Thinking
Before coding, understand the context and commit to a BOLD aesthetic direction:
- Purpose: What problem does this interface solve? Who uses it?
- Tone: Pick an extreme: brutally minimal, maximalist chaos, retro-futuristic, organic/natural, luxury/refined, playful/toy-like, editorial/magazine, brutalist/raw, art deco/geometric, soft/pastel, industrial/utilitarian, etc. There are so many flavors to choose from. Use these for inspiration but design one that is true to the aesthetic direction.
- Constraints: Technical requirements (framework, performance, accessibility).
- Differentiation: What makes this UNFORGETTABLE? What's the one thing someone will remember?
CRITICAL: Choose a clear conceptual direction and execute it with precision. Bold maximalism and refined minimalism both work - the key is intentionality, not intensity.
Then implement working code (HTML/CSS/JS, React, Vue, etc.) that is:
- Production-grade and functional
- Visually striking and memorable
- Cohesive with a clear aesthetic point-of-view
- Meticulously refined in every detail
Frontend Aesthetics Guidelines
Focus on:
- Typography: Choose fonts that are beautiful, unique, and interesting. Avoid generic fonts like Arial and Inter; opt instead for distinctive choices that elevate the frontend's aesthetics; unexpected, characterful font choices. Pair a distinctive display font with a refined body font.
- Color & Theme: Commit to a cohesive aesthetic. Use CSS variables for consistency. Dominant colors with sharp accents outperform timid, evenly-distributed palettes.
- Motion: Use animations for effects and micro-interactions. Prioritize CSS-only solutions for HTML. Use Motion library for React when available. Focus on high-impact moments: one well-orchestrated page load with staggered reveals (animation-delay) creates more delight than scattered micro-interactions. Use scroll-triggering and hover states that surprise.
- Spatial Composition: Unexpected layouts. Asymmetry. Overlap. Diagonal flow. Grid-breaking elements. Generous negative space OR controlled density.
- Backgrounds & Visual Details: Create atmosphere and depth rather than defaulting to solid colors. Add contextual effects and textures that match the overall aesthetic. Apply creative forms like gradient meshes, noise textures, geometric patterns, layered transparencies, dramatic shadows, decorative borders, custom cursors, and grain overlays.
NEVER use generic AI-generated aesthetics like overused font families (Inter, Roboto, Arial, system fonts), cliched color schemes (particularly purple gradients on white backgrounds), predictable layouts and component patterns, and cookie-cutter design that lacks context-specific character.
Interpret creatively and make unexpected choices that feel genuinely designed for the context. No design should be the same. Vary between light and dark themes, different fonts, different aesthetics. NEVER converge on common choices (Space Grotesk, for example) across generations.
IMPORTANT: Match implementation complexity to the aesthetic vision. Maximalist designs need elaborate code with extensive animations and effects. Minimalist or refined designs need restraint, precision, and careful attention to spacing, typography, and subtle details. Elegance comes from executing the vision well.
Remember: Claude is capable of extraordinary creative work. Don't hold back, show what can truly be created when thinking outside the box and committing fully to a distinctive vision.
# README.md
# π SkillMeter AI
### **AI-Powered Personalized Learning Platform**
*Transforming unstructured free online educational content into a structured, goal-oriented, and assessment-driven learning experience.*
[](https://reactjs.org/)
[](https://vitejs.dev/)
[](https://djangoproject.com/)
[](https://tailwindcss.com/)
[](https://ai.google.dev/)
[](https://python.org/)
[](https://sqlite.org/)
[](LICENSE)
π Table of Contents
- What is SkillMeter AI?
- Solution Overview
- Platform Workflow
- Key Features
- Complete Tech Stack
- Project Structure
- Frontend Architecture
- Backend Architecture
- Database Schema
- API Endpoints Reference
- AI & External Services
- Feature Deep Dives
- Completed Tasks & Development Log
- Setup & Installation
- Environment Variables
- Contributing
π― What is SkillMeter AI?
SkillMeter AI is a comprehensive, AI-powered personalized learning platform that transforms unstructured free online educational content into a structured, goal-oriented, and assessment-driven learning experience. The system leverages Artificial Intelligence to understand learner profiles, generate customized learning roadmaps, enforce daily study routines, and evaluate learning outcomes through content-based assessments.
AI Impact Statement
In an economy where skill is the new currency, SkillMeterAi is how you prove your net worth.
Benefits of SkillMeter AI
| Benefit | Description |
|---|---|
| π Structured Learning | Provides structured learning paths from free content |
| π― Personalization | Adapts learning to individual needs and skill levels |
| π Real Assessment | Measures actual understanding through AI-generated assessments |
| π₯ Consistency | Improves learning consistency and motivation through streaks |
| π Data-Driven Insights | Offers data-driven insights into learner progress |
π Solution Overview
Key Components of the Solution
2.1 Learner Profiling
- Collects user details such as skill level, prior experience, learning goals, and available study time
- Uses AI to interpret learner input and personalize the learning journey
2.2 AI-Based Content Discovery
- Identifies high-quality free learning resources such as YouTube tutorials and reference materials
- Filters content based on relevance, difficulty level, and learning objectives
- Reduces information overload by selecting only suitable content
2.3 Personalized Roadmap Generation
- Automatically converts selected resources into a structured learning roadmap
- Organizes topics into chapters and concepts with logical sequencing
- Adjusts learning depth based on the learner's proficiency level
2.4 Daily Learning Routine & Task Scheduling
- Generates a day-wise study plan once a course is started
- Assigns clear daily tasks to maintain learning consistency
- Tracks task completion and learning streaks
2.5 AI-Generated Notes and Summaries
- Generates concise, concept-wise notes from learning content
- Highlights key takeaways and important concepts
- Enables quick revision and improved retention
2.6 AI-Based Assessment and Evaluation
- Generates concept-specific assessments using learning content
- Automatically evaluates learner responses
- Provides instant feedback and performance scores
- Ensures learning is outcome-oriented rather than passive
2.7 Progress Tracking and Analytics
- Tracks learning progress, assessment scores, and completion rates
- Visualizes performance through dashboards and charts
- Identifies weak areas and recommends improvement
2.8 Notification and Engagement System
- Sends daily reminders and alerts via email and SMS/WhatsApp
- Notifies users of missed tasks and achievements
- Encourages consistent learning behavior
π Platform Workflow
flowchart TD
A[User Signs Up] --> B[Complete Onboarding]
B --> C[AI Analyzes Learner Profile]
C --> D[Discover Relevant Resources]
D --> E[Generate Personalized Roadmap]
E --> F[User Starts Course]
F --> G[Receive Daily Tasks]
G --> H[Study Content & Complete Assessments]
H --> I[AI Evaluates Performance]
I --> J[Update Dashboard & Stats]
J --> K{Course Complete?}
K -->|Yes| L[Generate Certificate]
K -->|No| G
L --> M[Send Notifications]
Step-by-Step Flow
- User signs up and completes onboarding questionnaire
- Learner profile is analyzed using AI (skill level, goals, available time)
- Relevant learning resources are discovered via YouTube API
- A personalized learning roadmap is generated using Gemini AI
- User starts the course and receives daily tasks
- User studies content (videos, notes) and completes assessments
- AI evaluates performance and updates dashboard
- Notifications reinforce learning discipline
π Key Features
π€ AI-Powered Features
| Feature | Description |
|---|---|
| AI-Generated Roadmaps | Personalized course structures using Google Gemini AI |
| Smart Content Discovery | Automatic YouTube video integration based on topics |
| AI Notes Generation | Auto-generated study notes for each concept |
| Dynamic Quiz Generation | AI-created assessments with instant feedback |
| Mock Interview Simulator | Real-time AI interviewer with voice recognition |
π Learning Features
| Feature | Description |
|---|---|
| Structured Courses | Chapters, concepts, and lessons in logical sequence |
| Video Lessons | Embedded YouTube videos for each concept |
| Progress Tracking | Real-time progress bars and completion tracking |
| Daily Tasks | Automated task scheduling based on your roadmap |
| Learning Streaks | Gamification to maintain consistency |
π§ Focus & Productivity
| Feature | Description |
|---|---|
| AI Study Room | Real-time focus tracking using computer vision |
| Distraction Detection | MediaPipe-powered head pose analysis |
| Focus Analytics | Session statistics and distraction counts |
| Practice Lab | Built-in code editor with 12+ language support |
π€ Mentorship & Community
| Feature | Description |
|---|---|
| Mentor Connect | Marketplace to find industry experts |
| Live Sessions | Video call integration with mentors |
| Booking System | Schedule and manage mentor sessions |
| Mentor Dashboard | Complete analytics for mentors |
π Certification & Verification
| Feature | Description |
|---|---|
| PDF Certificates | Server-generated certificates with custom design |
| QR Verification | Unique QR codes linking to verification page |
| Public Verification | Anyone can verify certificate authenticity |
| Email Delivery | Automatic certificate delivery via email |
π Notifications
| Feature | Description |
|---|---|
| Email Notifications | Gmail SMTP integration for alerts |
| WhatsApp Notifications | Twilio-powered WhatsApp messages |
| In-App Notifications | Real-time notification bell |
| Notification Logging | Complete history of all sent notifications |
π Complete Tech Stack
Frontend Technologies
| Category | Technology | Version | Purpose |
|---|---|---|---|
| Framework | React | 18.3.1 | UI library for component-based interfaces |
| Build Tool | Vite | 5.4.19 | Next-gen frontend build tool with HMR |
| Routing | React Router DOM | 6.30.1 | Client-side routing and navigation |
| State Management | TanStack Query | 5.83.0 | Server state management and caching |
| Styling | TailwindCSS | 3.4.17 | Utility-first CSS framework |
| Animations | Framer Motion | 12.26.2 | Complex animations and transitions |
| Icons | Lucide React | 0.462.0 | Modern icon library |
| UI Components | shadcn/ui | Latest | Radix-based accessible components |
| Forms | React Hook Form | 7.61.1 | Performant form management |
| Validation | Zod | 3.25.76 | Schema validation |
| Markdown | react-markdown | 10.1.0 | Markdown rendering |
| Charts | Recharts | 2.15.4 | Data visualization |
| Toasts | Sonner | 1.7.4 | Beautiful toast notifications |
| Code Editor | Monaco Editor | 0.55.1 | VS Code-based editor |
| Terminal | xterm | 5.3.0 | Terminal emulator |
| Confetti | canvas-confetti | 1.9.4 | Celebration effects |
| Date Handling | date-fns | 3.6.0 | Date utility library |
| HTTP Client | Axios | 1.13.2 | Promise-based HTTP client |
Computer Vision & AI (Frontend)
| Library | Version | Purpose |
|---|---|---|
| @mediapipe/face_mesh | 0.4.x | 468-point facial landmark detection |
| @mediapipe/camera_utils | 0.3.x | Camera stream management |
| livekit-client | 2.17.0 | WebRTC video/audio for interviews |
Backend Technologies
| Category | Technology | Version | Purpose |
|---|---|---|---|
| Framework | Django | 5.2.10 | Python web framework |
| API | Django REST Framework | Latest | RESTful API toolkit |
| ASGI Server | Daphne | Latest | WebSocket support |
| WebSockets | Django Channels | Latest | Real-time communication |
| Auth | SimpleJWT | Latest | JWT authentication |
| CORS | django-cors-headers | Latest | Cross-origin requests |
| Database | SQLite3 | 3 | Development database |
| PDF Generation | ReportLab | Latest | PDF certificate creation |
| QR Codes | qrcode | Latest | QR code generation |
| Image Processing | Pillow | Latest | Image manipulation |
External APIs & Services
| Service | Purpose |
|---|---|
| Google Gemini AI | Content generation, quiz creation, interview AI |
| YouTube Data API v3 | Video search and content discovery |
| Twilio | WhatsApp and SMS notifications |
| Gmail SMTP | Email delivery |
| Piston API | Code execution (12+ languages) |
| Beyond Presence | AI avatar for mock interviews (planned) |
| LiveKit | WebRTC video rooms (planned) |
| DiceBear | Avatar generation |
π Project Structure
SkillMeterAi/
βββ π src/ # Frontend Source Code
β βββ π api/ # API Client & Services
β β βββ api.js # Axios instance with JWT interceptors
β β βββ labs.js # Practice Lab API calls
β β βββ piston.js # Code execution API (12 languages)
β β
β βββ π components/ # Reusable UI Components
β β βββ π chat/ # Chat components (reserved)
β β βββ π dashboard/ # Dashboard-specific components
β β β βββ BookingModal.jsx # Mentor booking modal
β β β βββ ContributionGraph.jsx # GitHub-style activity graph
β β βββ π ide/ # Code Editor components
β β β βββ CodeEditor.jsx # Monaco editor wrapper
β β β βββ FocusPanel.jsx # AI focus tracking panel
β β β βββ LabSidebar.jsx # Lab file management
β β β βββ LanguageSelector.jsx # Language dropdown
β β β βββ LivePreview.jsx # HTML/CSS preview
β β β βββ Output.jsx # Code execution output
β β βββ π layout/ # Layout components
β β β βββ DashboardLayout.jsx # Main app layout with sidebar
β β β βββ Footer.jsx # Site footer
β β β βββ Header.jsx # Top navigation bar
β β β βββ PublicLayout.jsx # Layout for public pages
β β βββ π ui/ # 55+ shadcn/ui components
β β β βββ button.jsx # Button component
β β β βββ card.jsx # Card component
β β β βββ dialog.jsx # Modal dialogs
β β β βββ particles.jsx # Particle effects
β β β βββ retro-grid.jsx # Background grid
β β β βββ letter-swap.jsx # Text animation
β β β βββ rocket-launch.jsx # Rocket animation
β β β βββ review-form.jsx # Testimonial form
β β β βββ twitter-testimonial-cards.jsx
β β β βββ ... (50+ more)
β β βββ Certificate.jsx # Certificate display
β β βββ NavLink.jsx # Navigation link
β β βββ ProtectedRoute.jsx # Auth route wrapper
β β
β βββ π contexts/ # React Context Providers
β β βββ AuthContext.jsx # Authentication state & JWT handling
β β βββ LearningContext.jsx # Learning data & progress state
β β
β βββ π data/ # Static data (reserved)
β β
β βββ π hooks/ # Custom React Hooks
β β βββ use-toast.js # Toast notifications
β β βββ useInterviewWebSocket.js # WebSocket hook for interviews
β β
β βββ π lib/ # Utility functions
β β βββ utils.js # cn(), tailwind-merge helpers
β β
β βββ π pages/ # 19 Route Pages
β β βββ Dashboard.jsx # Main dashboard with stats
β β βββ Index.jsx # Root redirect
β β βββ Landing.jsx # Public landing page
β β βββ Learn.jsx # Video + Notes + Quiz learning page
β β βββ Login.jsx # Login form
β β βββ MeetingRoom.jsx # Live mentor meeting room
β β βββ MentorConnect.jsx # Mentor marketplace + Mock Interview
β β βββ MentorDashboard.jsx # Mentor analytics dashboard
β β βββ NotFound.jsx # 404 page
β β βββ Notifications.jsx # Notification center
β β βββ Onboarding.jsx # User onboarding flow
β β βββ PracticeLab.jsx # Code playground
β β βββ Profile.jsx # User profile settings
β β βββ Progress.jsx # Progress analytics
β β βββ Roadmap.jsx # Learning roadmap view
β β βββ Settings.jsx # App settings
β β βββ Signup.jsx # Registration form
β β βββ StudyRoom.jsx # AI focus monitoring room
β β βββ VerifyCertificate.jsx # Public certificate verification
β β
β βββ π types/ # TypeScript types (reserved)
β β
β βββ App.css # Global styles
β βββ App.jsx # Root component with routing
β βββ index.css # Tailwind + custom styles
β βββ main.jsx # React entry point
β
βββ π backend/ # Django Backend
β βββ π api/ # Main API App
β β βββ π management/ # Custom Django commands
β β βββ π migrations/ # Database migrations
β β βββ π static/ # Static assets
β β β βββ π images/ # Logo, Rocketboy for certificates
β β βββ π utils/ # Utility modules
β β β βββ certificate.py # PDF generation with QR codes
β β β βββ notifications.py # Email & WhatsApp integration
β β βββ __init__.py
β β βββ admin.py # Django admin configuration
β β βββ apps.py # App configuration
β β βββ consumers.py # WebSocket consumers
β β βββ models.py # 17 Database models
β β βββ routing.py # WebSocket routing
β β βββ serializers.py # DRF serializers
β β βββ services.py # AI & external services
β β βββ tests.py # Unit tests
β β βββ urls.py # API URL patterns (80+ endpoints)
β β βββ views.py # API views (1100+ lines)
β β
β βββ π backend/ # Django Project Config
β β βββ __init__.py
β β βββ asgi.py # ASGI config for WebSockets
β β βββ settings.py # Django settings
β β βββ urls.py # Root URL configuration
β β βββ wsgi.py # WSGI config
β β
β βββ .env # Environment variables
β βββ db.sqlite3 # SQLite database
β βββ manage.py # Django CLI
β βββ (various utility scripts)
β
βββ π public/ # Public static assets
β βββ logo.png # SkillMeter logo
β
βββ π dist/ # Production build output
β
βββ .gitignore # Git ignore rules
βββ bun.lockb # Bun lock file
βββ components.json # shadcn/ui config
βββ eslint.config.js # ESLint configuration
βββ index.html # HTML entry point
βββ package.json # NPM dependencies
βββ package-lock.json # NPM lock file
βββ postcss.config.js # PostCSS config
βββ README.md # This file
βββ SKILL.md # Design skill instructions
βββ tailwind.config.js # Tailwind configuration
βββ vite.config.js # Vite configuration
π¨ Frontend Architecture
Application Flow
App.jsx
βββ QueryClientProvider (TanStack Query)
βββ AuthProvider (Authentication Context)
βββ LearningProvider (Learning Data Context)
βββ TooltipProvider
βββ Toaster (Radix Toast)
βββ Sonner (Toast notifications)
βββ BrowserRouter
βββ Routes
βββ Public Routes
β βββ / β Landing.jsx
β βββ /login β Login.jsx
β βββ /signup β Signup.jsx
β βββ /onboarding β Onboarding.jsx
β βββ /verify β VerifyCertificate.jsx
βββ Protected Routes
βββ /dashboard β Dashboard.jsx
βββ /roadmap β Roadmap.jsx
βββ /learn β Learn.jsx
βββ /progress β Progress.jsx
βββ /notifications β Notifications.jsx
βββ /profile β Profile.jsx
βββ /practice-lab β PracticeLab.jsx
βββ /study-room β StudyRoom.jsx
βββ /mentor-connect β MentorConnect.jsx
βββ /mentor/dashboard β MentorDashboard.jsx
βββ /room/:roomId β MeetingRoom.jsx
βββ /settings β Settings.jsx
Key React Components
Authentication Context (AuthContext.jsx)
- JWT token management with automatic refresh
- User state persistence in localStorage
authFetchhelper for authenticated API calls- Login, Signup, Logout functions
- Onboarding completion tracking
Learning Context (LearningContext.jsx)
- Course and roadmap data management
- Progress tracking and updates
- Daily task management
- Notification handling
- Assessment submission
UI Component Library
The project uses 55+ shadcn/ui components built on Radix UI primitives:
| Category | Components |
|---|---|
| Layout | Card, Separator, Scroll Area, Resizable Panels |
| Forms | Button, Input, Textarea, Select, Checkbox, Radio, Switch, Slider |
| Feedback | Toast, Alert, Badge, Progress, Skeleton |
| Overlay | Dialog, Drawer, Sheet, Popover, Tooltip, Hover Card |
| Navigation | Tabs, Accordion, Collapsible, Navigation Menu, Menubar |
| Data Display | Table, Avatar, Calendar, Chart |
| Custom | Particles, Retro Grid, Letter Swap, Rocket Launch |
Design System
The project follows a Neo-Brutalist design aesthetic with:
- Colors: High contrast black/white with vibrant accents
- Typography: Bold heading fonts, clean body text
- Shadows: Hard-edged box shadows (
shadow-[6px_6px_0px_0px_#000]) - Borders: 2px black borders with no border-radius (
rounded-none) - Animations: Framer Motion for page transitions and micro-interactions
π Backend Architecture
Django Project Structure
backend/
βββ backend/ # Project configuration
β βββ settings.py # All Django settings
β βββ urls.py # Root URL config β includes api.urls
β βββ asgi.py # ASGI for WebSocket support
β βββ wsgi.py # WSGI for HTTP
β
βββ api/ # Main application
βββ models.py # 17 database models
βββ views.py # 30+ API views
βββ serializers.py # 15+ DRF serializers
βββ services.py # 6 service classes
βββ consumers.py # WebSocket consumers
βββ urls.py # 80+ URL patterns
Service Layer Architecture
services.py - AI & External Services
| Service Class | Purpose |
|---|---|
YouTubeService |
Searches YouTube for relevant videos |
ContentDiscoveryService |
Generates complete course structures using Gemini |
NotesGeneratorService |
Creates AI-generated study notes |
QuizGeneratorService |
Generates MCQ assessments |
GeminiInterviewService |
Handles mock interview AI logic |
LiveKitService |
Manages WebRTC video tokens |
BeyondPresenceService |
AI avatar integration (planned) |
Authentication System
- JWT Authentication via
djangorestframework-simplejwt - Token Rotation: Access tokens (60 min), Refresh tokens (7 days)
- Blacklisting: Logout invalidates refresh tokens
- Auto-refresh: Frontend automatically refreshes expired tokens
π Database Schema
Complete Model Reference (17 Models)
User & Profile Models
# LearnerProfile - Student profile with learning preferences
LearnerProfile:
- user (OneToOne β User)
- skill_level (beginner/intermediate/advanced)
- learning_goals (JSONField)
- daily_study_time (minutes)
- phone_number (for WhatsApp)
- onboarding_completed (boolean)
# MentorProfile - Mentor profile with expertise
MentorProfile:
- user (OneToOne β User)
- title (e.g., "Senior SDE @ Google")
- company
- hourly_rate
- about
- skills (JSONField)
- availability (JSONField)
- is_verified
- total_earnings
- average_rating
Course & Content Models
# Course - Learning course container
Course:
- title
- description
- thumbnail (URL)
- difficulty
- estimated_hours
- tags (JSONField)
# Chapter - Section within a course
Chapter:
- course (ForeignKey β Course)
- title
- description
- order
# Concept - Individual lesson/topic
Concept:
- chapter (ForeignKey β Chapter)
- title
- description
- duration (minutes)
- video_url
- notes (Markdown)
- content_type (video/article/exercise)
- order
Progress & Assessment Models
# Roadmap - User enrollment with progress
Roadmap:
- user (ForeignKey β User)
- course (ForeignKey β Course)
- progress (0-100%)
- current_chapter
- current_concept
- started_at
- last_accessed_at
- completed_at
- certificate_id (unique hash)
# ConceptProgress - Individual concept completion
ConceptProgress:
- user (ForeignKey β User)
- concept (ForeignKey β Concept)
- completed
- completed_at
# Assessment - Quiz for a concept
Assessment:
- concept (ForeignKey β Concept)
- questions (JSONField)
- time_limit
# AssessmentResult - User's quiz submission
AssessmentResult:
- user (ForeignKey β User)
- assessment (ForeignKey β Assessment)
- score
- answers (JSONField)
- completed_at
Engagement Models
# DailyTask - Scheduled learning task
DailyTask:
- user (ForeignKey β User)
- concept (ForeignKey β Concept)
- task_type (video/notes/assessment)
- title
- scheduled_date
- completed
# Notification - User notification
Notification:
- user (ForeignKey β User)
- notification_type (reminder/achievement/missed/system)
- title
- message
- read
- created_at
# NotificationLog - Sent notification history
NotificationLog:
- user (ForeignKey β User)
- notification_type (EMAIL/WHATSAPP)
- event_name
- recipient
- status (SENT/FAILED)
- error_message
- created_at
# UserProgress - Overall learning stats
UserProgress:
- user (OneToOne β User)
- total_minutes_learned
- total_concepts_completed
- total_assessments_taken
- average_score
- current_streak
- longest_streak
- last_activity_date
Feature-Specific Models
# Lab - Saved code playground
Lab:
- user (ForeignKey β User)
- name
- language
- files (JSONField)
- created_at
- updated_at
# StudySession - Focus tracking session
StudySession:
- user (ForeignKey β User)
- started_at
- ended_at
- total_duration (seconds)
- focus_duration (seconds)
- distraction_count
- focus_percentage
# MentorSlot - Mentor availability
MentorSlot:
- mentor (ForeignKey β MentorProfile)
- start_time
- end_time
- is_booked
# Booking - Mentor session booking
Booking:
- learner (ForeignKey β User)
- mentor (ForeignKey β MentorProfile)
- slot (OneToOne β MentorSlot)
- status (PENDING/CONFIRMED/COMPLETED/CANCELLED)
- meeting_link
- topic
- amount_paid
- payment_id
# InterviewSession - Mock interview record
InterviewSession:
- user (ForeignKey β User)
- topic
- difficulty
- duration
- score
- feedback
- strengths (JSONField)
- weaknesses (JSONField)
- transcript
- created_at
- completed_at
Entity Relationship Diagram
erDiagram
User ||--o| LearnerProfile : has
User ||--o| MentorProfile : has
User ||--o| UserProgress : has
User ||--o{ Roadmap : enrolls
User ||--o{ ConceptProgress : tracks
User ||--o{ Lab : creates
User ||--o{ StudySession : records
User ||--o{ Booking : books
User ||--o{ InterviewSession : takes
Course ||--o{ Chapter : contains
Chapter ||--o{ Concept : contains
Concept ||--o{ Assessment : has
Roadmap }o--|| Course : for
ConceptProgress }o--|| Concept : for
Assessment ||--o{ AssessmentResult : has
MentorProfile ||--o{ MentorSlot : offers
MentorProfile ||--o{ Booking : receives
MentorSlot ||--o| Booking : books
π API Endpoints Reference
Authentication Endpoints
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/auth/register/ |
User registration |
POST |
/api/auth/login/ |
User login (email/username) |
POST |
/api/auth/logout/ |
Logout (blacklist token) |
POST |
/api/auth/refresh/ |
Refresh access token |
GET/PUT |
/api/auth/user/ |
Current user profile |
Profile Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET/PUT |
/api/profile/ |
Learner profile |
GET |
/api/progress/ |
User learning statistics |
GET |
/api/activity/ |
Activity log (contribution graph data) |
Course & Learning Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/courses/ |
List all courses |
GET |
/api/courses/{id}/ |
Course details with chapters |
GET/POST |
/api/roadmaps/ |
List/create user roadmaps |
POST |
/api/roadmaps/generate/ |
AI-generate new roadmap |
GET/PUT/DELETE |
/api/roadmaps/{id}/ |
Roadmap details |
GET |
/api/roadmaps/{id}/certificate/ |
Download certificate PDF |
POST |
/api/concepts/{id}/complete/ |
Mark concept complete |
POST |
/api/concepts/{id}/generate-notes/ |
AI-generate notes |
POST |
/api/concepts/{id}/generate-quiz/ |
AI-generate quiz |
Assessment Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/assessments/{id}/ |
Get assessment questions |
POST |
/api/assessments/{id}/submit/ |
Submit assessment answers |
Task & Notification Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/tasks/ |
Today's tasks |
POST |
/api/tasks/{id}/complete/ |
Mark task complete |
GET |
/api/notifications/ |
All notifications |
POST |
/api/notifications/{id}/read/ |
Mark as read |
Lab & Study Session Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET/POST |
/api/labs/ |
List/create labs |
GET/PUT/DELETE |
/api/labs/{id}/ |
Lab details |
GET/POST |
/api/study-sessions/ |
List/create study sessions |
GET |
/api/study-sessions/stats/ |
Focus statistics |
Mentor & Booking Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET/POST |
/api/mentors/ |
List mentors / Become mentor |
GET |
/api/mentors/{id}/ |
Mentor details |
POST |
/api/bookings/request/ |
Request mentor session |
GET |
/api/bookings/my-sessions/ |
Learner's bookings |
GET |
/api/bookings/mentor-sessions/ |
Mentor's bookings |
POST |
/api/bookings/{id}/status/ |
Update booking status |
Mentor Dashboard Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/mentor/stats/ |
Mentor dashboard statistics |
GET/POST |
/api/mentor/availability/ |
Manage availability slots |
GET |
/api/mentor/payments/ |
Payment history |
Public Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/hello/ |
Health check |
GET |
/api/leaderboard/ |
Top 5 learners |
GET |
/api/trending/ |
Trending topics |
GET |
/api/certificates/verify/{id}/ |
Verify certificate |
WebSocket Endpoints
| Endpoint | Messages | Description |
|---|---|---|
ws://host/ws/interview/ |
INIT_SESSION, USER_ANSWER, END_SESSION |
Mock interview real-time communication |
π€ AI & External Services
Google Gemini AI Integration
Model Used: gemini-3-flash-preview
Content Discovery Service
# Generates complete course structure
ContentDiscoveryService.search_videos(topic, skill_level)
# Returns: { course: {...}, chapters: [...] }
Notes Generator Service
# Creates study notes for a video
NotesGeneratorService.generate_notes(video_title, context)
# Returns: Markdown formatted notes
Quiz Generator Service
# Generates MCQ assessment
QuizGeneratorService.generate_quiz(topic, notes)
# Returns: [{ question, options, correctAnswer, explanation }]
Interview Service
# Generates interview questions
GeminiInterviewService.generate_question(topic, level, duration, history)
# Analyzes interview performance
GeminiInterviewService.analyze_interview(topic, transcript)
YouTube Data API v3
YouTubeService.search_video(query)
# Returns: { video_url, thumbnail }
# Fallback: YouTube search URL if quota exceeded
Twilio Integration
# Email notifications
send_email_notification(user, subject, message, attachment=None)
# WhatsApp notifications
send_whatsapp_notification(user, message_body)
Piston API (Code Execution)
Supports 12 programming languages:
- JavaScript (18.15.0)
- TypeScript (5.0.3)
- Python (3.10.0)
- Java (15.0.2)
- C# (6.12.0)
- PHP (8.2.3)
- C (10.2.0)
- C++ (10.2.0)
- Go (1.16.2)
- Rust (1.68.2)
- Ruby (3.0.1)
- Kotlin (1.8.20)
- HTML/CSS (Preview only)
π¬ Feature Deep Dives
π§ AI Study Room
File: src/pages/StudyRoom.jsx, src/components/ide/FocusPanel.jsx
A "Proctoring-lite" feature that helps users maintain focus during study sessions using computer vision.
Technology Stack
- MediaPipe Face Mesh: 468 facial landmark detection
- WebGL: Real-time canvas rendering
- Web Audio API: Distraction alert sounds
How It Works
- Camera captures user's face in real-time
- MediaPipe detects 468 facial landmarks
- Head pose calculated from nose/eye positions
- Direction determined: Forward, Left, Right, Up, Down
- Distraction triggered if looking away (Left/Right/Up)
- Looking Down allowed (for note-taking)
- Audio + visual alerts on distraction
Metrics Tracked
- Total Time: Session duration
- Focus Time: Time spent looking forward/down
- Focus Percentage: focus_time / total_time Γ 100
- Distraction Count: Number of distraction events
π€ Mock Interview Simulator
Files: src/pages/MentorConnect.jsx, src/hooks/useInterviewWebSocket.js, backend/api/consumers.py
An interactive AI interviewer that conducts realistic technical and behavioral interviews.
Architecture
Frontend (React) Backend (Django)
ββββββββββββββββββββ ββββββββββββββββββββ
β MentorConnect.jsxβ βInterviewConsumer β
β β WebSocket β β
β ββββββββββββββββ β<βββββββββββ> β ββββββββββββββββ β
β β Speech-to- β β β β Gemini AI β β
β β Text API β β β β Service β β
β ββββββββββββββββ β β ββββββββββββββββ β
β β β β
β ββββββββββββββββ β β ββββββββββββββββ β
β β Webcam Feed β β β β LiveKit β β
β ββββββββββββββββ β β β Service β β
ββββββββββββββββββββ ββββββββββββββββββββ
WebSocket Message Flow
INIT_SESSIONβ Creates interview, returns opening questionUSER_ANSWERβ Processes answer, returns next questionEND_SESSIONβ Analyzes transcript, returns performance report
AI Interviewer Persona
- Name: Alex
- Role: Senior Technical Interviewer at top tech company
- Style: Professional, direct, rigorous
- Topics: React, Node.js, System Design, Behavioral, DSA
π Certificate Verification System
Files: backend/api/utils/certificate.py, src/pages/VerifyCertificate.jsx
Tamper-proof certificates with QR code verification.
Certificate Generation
- User completes 100% of roadmap
- Backend generates SHA-256 based certificate ID
- ReportLab creates PDF with:
- Decorative border
- SkillMeter logo
- User name and course title
- Completion date
- QR code linking to verification URL
- PDF emailed + WhatsApp notification sent
Verification Flow
- Anyone can scan QR or visit
/verify?id=CERT_ID - Backend verifies certificate exists and is valid
- Returns student name, course, completion date
- Frontend displays verification result
π€ Mentor Connect Platform
Files: src/pages/MentorConnect.jsx, src/pages/MentorDashboard.jsx
Full-featured mentor marketplace with booking system.
For Learners
- Browse verified mentors with skills, ratings, pricing
- View mentor availability calendar
- Book sessions with topic and time selection
- Track booking status (Pending β Confirmed β Completed)
- Join live video meetings
For Mentors
- Dashboard with earnings, sessions, ratings
- Manage availability slots
- Accept/decline booking requests
- View session history
- Track payment transactions
π» Practice Lab (Code Playground)
Files: src/pages/PracticeLab.jsx, src/components/ide/*
Full-featured code editor supporting 12 programming languages.
Features
- Monaco Editor (VS Code engine)
- Syntax highlighting for all languages
- Real-time code execution via Piston API
- Multi-file support
- HTML/CSS live preview
- Lab saving and management
- Focus monitoring integration
β Completed Tasks & Development Log
Study Room Feature
- [x] Install MediaPipe dependencies
- [x] Create
StudyRoom.jsxpage component - [x] Add route to App.jsx and sidebar navigation
- [x] Implement face mesh visualization (contours, eyes, iris)
- [x] Create
StudySessionmodel and API endpoints - [x] Refine distraction logic (Down = Allowed, Left/Right/Up = Distracted)
- [x] Fix distraction counting (state staleness issue)
- [x] Implement 4-beep audio alerts on distraction
- [x] Integrate session saving to database
Notification System
- [x] Install Twilio package
- [x] Configure settings for Email & Twilio
- [x] Create
NotificationLogmodel - [x] Create
notifications.pyutility service - [x] Integrate notifications into
mark_concept_completeview - [x] Integrate notifications into
generate_certificateview - [x] Verify Email and WhatsApp sending
- [x] Auto-assign WhatsApp phone for all users
Certificate Verification System
- [x] Add
certificate_idto Roadmap model - [x] Install
qrcodeand implement in certificate.py - [x] Create
VerifyCertificateViewAPI - [x] Create
VerifyCertificate.jsxfrontend page - [x] Add
completed_atfield to Roadmap model - [x] Implement Leaderboard & Trending API
Mentor Connect Feature
- [x] Create
MentorConnect.jsxwith tabbed interface - [x] Implement "Find Mentors" tab with grid layout
- [x] Implement "Interview Simulator" tab
- [x] Add dynamic scroll layout & header transitions
- [x] Integrate DiceBear avatars & LinkedIn links
- [x] Implement dynamic interview questions by topic
- [x] Create
MentorDashboard.jsxwith full analytics - [x] Create
BookingModalwith Razorpay UI - [x] Create
MeetingRoom.jsxfor video calls - [x] Implement "My Sessions" tab for learners
Mentor Backend Implementation
- [x] Create
MentorProfile,MentorSlot,Bookingmodels - [x] Create mentor API views and serializers
- [x] Integrate frontend with mentor APIs
- [x] Implement booking flow end-to-end
- [x] Create mentor stats, availability, payments endpoints
Mock Interview Simulator
- [x] Install channels, daphne, google-genai, livekit-api
- [x] Configure ASGI for WebSocket support
- [x] Create
InterviewConsumerwith full implementation - [x] Add
InterviewSessionmodel - [x] Create
GeminiInterviewServicewith persona - [x] Create
LiveKitServicefor WebRTC tokens - [x] Create
BeyondPresenceServicefor AI avatar - [x] Frontend: Create
useInterviewWebSockethook - [x] Frontend: Integrate WebSocket with simulator UI
- [x] Refine AI system prompt for realistic interviews
Documentation
- [x] Create comprehensive README.md
- [x] Document all features and APIs
- [x] Create architecture diagrams
π Setup & Installation
Prerequisites
- Node.js 18+ or Bun 1.0+
- Python 3.10+
- pip or pipenv
Frontend Setup
# Navigate to project root
cd SkillMeterAi
# Install dependencies
npm install
# OR with Bun
bun install
# Start development server
npm run dev
# OR
bun dev
# Build for production
npm run build
Backend Setup
# Navigate to backend folder
cd backend
# Create virtual environment (optional but recommended)
python -m venv venv
source venv/bin/activate # Linux/Mac
.\venv\Scripts\activate # Windows
# Install Python dependencies
pip install django djangorestframework djangorestframework-simplejwt django-cors-headers channels daphne python-dotenv google-generativeai requests reportlab qrcode pillow twilio
# Run database migrations
python manage.py migrate
# Create superuser (optional)
python manage.py createsuperuser
# Start development server
python manage.py runserver 8001
### π‘οΈ Admin Dashboard
The Django admin panel allows you to manage courses, users, and mentors directly.
- **URL**: [http://localhost:8001/admin/](http://localhost:8001/admin/)
- **Default Username**: `admin`
- **Default Password**: `password123`
To create your own superuser:
```bash
python manage.py createsuperuser
OR with WebSocket support
daphne -b 0.0.0.0 -p 8000 backend.asgi:application
### Quick Start (Both Servers)
```bash
# Terminal 1: Frontend
npm run dev
# Terminal 2: Backend
cd backend && python manage.py runserver
π Environment Variables
Create a .env file in the backend/ directory:
# AI Services
GEMINI_API_KEY=your_gemini_api_key
YOUTUBE_API_KEY=your_youtube_api_key
# Email Configuration (Gmail SMTP)
[email protected]
EMAIL_HOST_PASSWORD=your_app_password
# Twilio (WhatsApp)
TWILIO_ACCOUNT_SID=your_twilio_sid
TWILIO_AUTH_TOKEN=your_twilio_token
TWILIO_WHATSAPP_NUMBER=+14155238886
# LiveKit (Optional - for video calls)
LIVEKIT_API_KEY=your_livekit_key
LIVEKIT_API_SECRET=your_livekit_secret
LIVEKIT_URL=wss://your-livekit-server
# Beyond Presence (Optional - for AI avatar)
BEYOND_PRESENCE_API_KEY=your_bp_key
Getting API Keys
| Service | How to Get |
|---|---|
| Gemini AI | Google AI Studio |
| YouTube API | Google Cloud Console |
| Twilio | Twilio Console |
| Gmail App Password | Google Account Security |
π€ Contributing
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Code Style
- Frontend: ESLint with React hooks rules
- Backend: PEP 8 style guide
- Commits: Conventional commits preferred
π License
This project is licensed under the MIT License - see the LICENSE file for details.
Built with β€οΈ by the SkillMeter AI Team
]]>
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.