From b80d73ec2692de8e8f0d01f98a7e52d83653057e Mon Sep 17 00:00:00 2001 From: ectasy663 Date: Thu, 9 Jul 2026 16:08:12 +0530 Subject: [PATCH] Fix UI issues, timer logic, theme switcher, view solutions, and markdown rendering --- backend/pragativeer-prd.pdf | Bin 0 -> 108566 bytes cbt_test.html | Bin 0 -> 36294 bytes package-lock.json | 70 ++ package.json | 1 + parse.js | 9 + parse2.js | 18 + prd_dump.txt | Bin 0 -> 81004 bytes prd_dump_utf8.txt | 1385 ++++++++++++++++++++++++++ src/app/cbt/[examId]/page.tsx | 42 +- src/app/dashboard/cbt/page.tsx | 4 +- src/app/dashboard/community/page.tsx | 34 +- src/app/upgrade/page.tsx | 12 +- src/components/CBT/ExamResult.tsx | 22 +- src/store/cbtStore.ts | 30 +- test.js | 18 + test2.js | 19 + test3.js | 19 + test4.js | 20 + 18 files changed, 1662 insertions(+), 41 deletions(-) create mode 100644 backend/pragativeer-prd.pdf create mode 100644 cbt_test.html create mode 100644 parse.js create mode 100644 parse2.js create mode 100644 prd_dump.txt create mode 100644 prd_dump_utf8.txt create mode 100644 test.js create mode 100644 test2.js create mode 100644 test3.js create mode 100644 test4.js diff --git a/backend/pragativeer-prd.pdf b/backend/pragativeer-prd.pdf new file mode 100644 index 0000000000000000000000000000000000000000..756db6bf2d9f5cc91f4e387bed2d3e90bcb3abf6 GIT binary patch literal 108566 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 TQ2?bC6y+2sgoLz>bSVA{IH?WT literal 0 HcmV?d00001 diff --git a/cbt_test.html b/cbt_test.html new file mode 100644 index 0000000000000000000000000000000000000000..52721cfdb82ee50411025186c38b8d18fb30ce3a GIT binary patch literal 36294 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 literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 55343bf..9ef1a30 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "react-markdown": "^10.1.0", "recharts": "^3.9.2", "rehype-katex": "^7.0.1", + "rehype-raw": "^7.0.0", "remark-math": "^6.0.0", "tailwind-merge": "^3.6.0", "zustand": "^5.0.14" @@ -4673,6 +4674,31 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-raw": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", + "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-to-jsx-runtime": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", @@ -4700,6 +4726,25 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", + "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-to-text": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", @@ -4779,6 +4824,16 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/idb-keyval": { "version": "6.2.6", "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.6.tgz", @@ -7409,6 +7464,21 @@ "katex": "cli.js" } }, + "node_modules/rehype-raw": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", + "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-raw": "^9.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-math": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-6.0.0.tgz", diff --git a/package.json b/package.json index 87ede3f..743bf3b 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "react-markdown": "^10.1.0", "recharts": "^3.9.2", "rehype-katex": "^7.0.1", + "rehype-raw": "^7.0.0", "remark-math": "^6.0.0", "tailwind-merge": "^3.6.0", "zustand": "^5.0.14" diff --git a/parse.js b/parse.js new file mode 100644 index 0000000..3641264 --- /dev/null +++ b/parse.js @@ -0,0 +1,9 @@ + +import { unified } from "unified"; +import remarkParse from "remark-parse"; +import remarkMath from "remark-math"; + +const text = "C) $2 \\text{ m}$"; +const tree = unified().use(remarkParse).use(remarkMath).parse(text); +console.log(JSON.stringify(tree, null, 2)); + diff --git a/parse2.js b/parse2.js new file mode 100644 index 0000000..b568680 --- /dev/null +++ b/parse2.js @@ -0,0 +1,18 @@ + +import { unified } from "unified"; +import remarkParse from "remark-parse"; +import remarkMath from "remark-math"; +import rehypeKatex from "rehype-katex"; +import remarkRehype from "remark-rehype"; +import rehypeStringify from "rehype-stringify"; + +const text = "The velocity of a particle moving along the x-axis is given by $v(t) = \\int_{0}^{t} (3\\tau^2 - 2\\tau) d\\tau$. What is the displacement of the particle at $t = 2$ seconds if it starts from the origin?"; +const tree = unified() + .use(remarkParse) + .use(remarkMath) + .use(remarkRehype) + .use(rehypeKatex, { strict: "warn", throwOnError: false }) + .use(rehypeStringify) + .processSync(text); +console.log(tree.toString()); + diff --git a/prd_dump.txt b/prd_dump.txt new file mode 100644 index 0000000000000000000000000000000000000000..65da02da56fbb3a606f68eada7056c9cb2d721bc GIT binary patch literal 81004 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 70: "You're on track for NIT!", Score > 85: "IIT within +reach!") - Actionable recommendations to improve score +A-06: Exam Day Strategy +Description: AI generates personalized exam-day strategy based on mock test performance. Priority: +P1 +Requirements: - Based on analysis of all mock tests - Recommendations include: - Optimal section +order ("Start with Physics — your strongest section") - Time allocation per section - Question selection +strategy ("Attempt numerical questions first in Chemistry") - Guessing strategy (when to skip vs +educated guess) - Pace recommendations ("You tend to slow down in the last 15 minutes — practice +timed sprints") - Updated after every mock test - Printable one-page strategy card +A-07: College Predictor +Description: Predicts likely colleges based on current performance trajectory. Priority: P1 +Requirements: - Based on mock test scores + historical JEE cutoff data - Predicts: IITs, NITs, IIITs, +GFTIs - "Reach" (ambitious), "Target" (realistic), "Safety" (likely) categories - Branch-wise prediction - +Updated after every mock test - Historical cutoff data for last 3 years - "You need X more marks to +reach IIT Delhi Computer Science" - Motivational: "At your current trajectory, you're on track for NIT +Surat" +A-08: Study Time Optimization +Description: AI analyzes when and how the student studies best and suggests schedule adjustments. +Priority: P2 +Requirements: - Track time-of-day performance (accuracy by hour) - Identify peak productivity hours - +Suggest optimal study schedule - Track session length vs focus (longer sessions = diminishing +returns?) - Recommend break intervals - "You perform best between 7-9 PM. Schedule your most +difficult topics then." +PragatiVeer — Product Requirements Document +Page 10 of 27 +7. Cross-Cutting Features +C-01: Responsive Web Design +Description: Full responsive design working on mobile browsers, tablets, and desktops. Priority: P0 +Requirements: - Mobile-first responsive design - Touch-optimized test interface (tap to select, swipe to +navigate) - Desktop keyboard shortcuts (N for next, P for previous, M for mark review) - Test interface +works in landscape and portrait - Minimum supported screen: 320px width - PWA manifest for "Add to +Home Screen" - Service worker for offline DPS access +C-02: Multi-Language Support +Description: Interface and content in Hindi, English, and bilingual mode. Priority: P1 +Requirements: - Full UI in English and Hindi - Bilingual mode (questions in English, UI in Hindi) - +Toggle between languages without page reload - All DPS questions available in both languages - AI +Coach responses in selected language - Parent dashboard in Hindi + English - Regional language +roadmap (Marathi, Gujarati, Bengali, Telugu — Phase 2) +C-03: Dark Mode +Description: Dark theme for late-night study sessions. Priority: P2 +Requirements: - Toggle between light and dark mode - System preference detection - All pages +support both themes - Test interface in dark mode - Persist preference in user settings +C-04: Notifications & Reminders +Description: Browser and email notifications for DPS, tests, and milestones. Priority: P1 +Requirements: - Daily DPS reminder (browser notification, configurable time) - Test reminder (24 hours +before, 1 hour before) - Streak at risk notification (if no DPS by 8 PM) - Milestone celebrations (streak +achievements, score milestones) - Weekly progress summary (email, Sunday evening) - Parent weekly +report (email/WhatsApp) - Notification preferences (which notifications, when, how) +C-05: Referral System +Description: Built-in referral program for organic growth. Priority: P1 +Requirements: - Unique referral link per user - Refer a friend → both get 7 days of AI Coach free - +Referral dashboard (total referrals, rewards earned) - Share via WhatsApp, Telegram, email, copy link - +Track referral signups and conversions - Leaderboard: top referrers +C-06: Shareable Progress Cards +Description: Auto-generated image cards showing progress that students can share on social media. +Priority: P1 +PragatiVeer — Product Requirements Document +Page 11 of 27 +Requirements: - "I've solved 450 questions this month!" card - "X-day streak!" card - "Accuracy: 78% +— Top 15% of users" card - "Test Score: 180/300 — Improved by 15 points" card - Branded with +PragatiVeer logo - Download as PNG - Share directly to WhatsApp, Instagram, Telegram - Generated +server-side (no client rendering) +C-07: Payment System +Description: Subscription management with UPI, cards, and netbanking. Priority: P0 +Requirements: - UPI (BHIM, Google Pay, PhonePe, Paytm) - Credit/Debit cards - Netbanking - +Razorpay/Stripe integration - Monthly, quarterly, and annual billing - Auto-renewal with 7-day grace +period - Invoice generation - Coupon code support - Free trial management (7-day Pro trial) - Upgrade/ +downgrade between tiers - Pause subscription (for exam breaks) - Refund policy (30-day money-back +guarantee) +C-08: Admin Dashboard +Description: Internal dashboard for Gyannetra team to manage content, users, and analytics. Priority: +P1 +Requirements: - User management (view, suspend, delete) - Content management (upload questions, +create DPS, schedule tests) - Analytics dashboard (DAU, MAU, conversion rates, revenue) - DPS +scheduling calendar - Test creation and scheduling - Question bank management (add, edit, tag, +review) - Coupon code management - Refund processing - Support ticket management - System health +monitoring +PragatiVeer — Product Requirements Document +Page 12 of 27 +8. User Stories — Complete Collection +8.1 Registration & Onboarding +ID +User Story +Priority +Tier +US-001 +As a new student, I want to register with my email or phone number so that I can +create my account quickly. +P0 +All +US-002 +As a new student, I want to verify my email/phone with OTP so that my account is +secure. +P0 +All +US-003 +As a returning student, I want to log in with my email and password so that I can +access my dashboard. +P0 +All +US-004 +As a returning student, I want to log in with Google so that I don't have to +remember another password. +P0 +All +US-005 +As a student, I want to reset my password via email/OTP so that I can recover my +account if I forget it. +P0 +All +US-006 +As a new student, I want to set up my profile (class, target exam, medium) during +onboarding so that the platform personalizes my experience. +P0 +All +US-007 +As a student, I want to see a welcome tour on my first login so that I understand +how to use the platform. +P1 +All +PragatiVeer — Product Requirements Document +Page 13 of 27 +8.2 Daily Practice Sheet (DPS) +ID +User Story +Priority +Tier +US-010 +As a Free student, I want to attempt one DPS per day so that I can practice daily. +P0 +Free +US-011 +As a Pro student, I want to attempt unlimited DPS per day so that I can practice as +much as I need. +P0 +Pro+ +US-012 +As a student, I want to see questions one at a time with navigation so that I can +focus on each question. +P0 +All +US-013 +As a student, I want to see a timer during my DPS so that I can manage my time. +P0 +All +US-014 +As a student, I want to mark questions for review so that I can come back to them +later. +P0 +All +US-015 +As a student, I want to see a question palette showing which questions I've +answered, not answered, and marked for review. +P0 +All +US-016 +As a student, I want my DPS to auto-submit when the timer runs out so that I don't +lose my answers. +P0 +All +US-017 +As a student, I want to see my score and correct answers immediately after +submitting so that I can learn from my mistakes. +P0 +All +US-018 +As a Pro student, I want to access DPS from previous days so that I can catch up +if I miss a day. +P1 +Pro+ +US-019 +As a Pro student, I want to choose DPS difficulty level so that I can challenge +myself appropriately. +P1 +Pro+ +US-020 +As a Pro student, I want to create a custom DPS by selecting specific subjects and +topics so that I can focus on my weak areas. +P1 +Pro+ +PragatiVeer — Product Requirements Document +Page 14 of 27 +8.3 Test Series +ID +User Story +Priority +Tier +US-030 +As a Pro student, I want to take a full-length weekly test that follows the exact JEE +pattern so that I can practice exam conditions. +P0 +Pro+ +US-031 +As a Pro student, I want the test frequency to increase as exams get closer so that +I get more practice when it matters most. +P0 +Pro+ +US-032 +As a student, I want the test interface to look exactly like the real computer-based +exam so that I'm not surprised on exam day. +P0 +Pro+ +US-033 +As a student, I want sectional timing (as per actual exam) so that I can practice +time management per section. +P0 +Pro+ +US-034 +As a student, I want an on-screen calculator and periodic table (where applicable) +so that the test mirrors the real exam. +P0 +Pro+ +US-035 +As a student, I want a digital scratchpad/notepad during the test so that I can do +rough work. +P1 +Pro+ +US-036 +As a Pro student, I want to take additional full-length mocks (4/month) beyond the +weekly series so that I can practice more. +P1 +Pro+ +US-037 +As a Pro student, I want to attempt previous year papers in test mode so that I can +practice with real exam questions. +P0 +Pro+ +US-038 +As a Pro student, I want to filter PYQs by topic so that I can practice specific +areas. +P1 +Pro+ +PragatiVeer — Product Requirements Document +Page 15 of 27 +8.4 Analytics & Progress +ID +User Story +Priority +Tier +US-040 +As a Free student, I want to see my basic accuracy and streak on a simple +dashboard so that I can track my progress. +P0 +Free +US-041 +As a Pro student, I want to see a topic-wise heatmap of my performance so that I +know exactly where I'm weak. +P0 +Pro+ +US-042 +As a Pro student, I want to see my accuracy trend over time so that I can see if I'm +improving. +P0 +Pro+ +US-043 +As a Pro student, I want to see my percentile rank among other users so that I +know where I stand. +P0 +Pro+ +US-044 +As a Pro student, I want to see my speed analysis (time per question vs +benchmark) so that I can improve my pace. +P1 +Pro+ +US-045 +As a Pro student, I want to see my performance broken down by question type so +that I know which types I struggle with. +P1 +Pro+ +US-046 +As a Pro student, I want to export my analytics as a PDF so that I can share it with +my parents or mentor. +P1 +Pro+ +US-047 +As a Pro student, I want to see my syllabus completion percentage per subject so +that I know how much I've covered. +P1 +Pro+ +PragatiVeer — Product Requirements Document +Page 16 of 27 +8.5 AI Coach +ID +User Story +Priority +Tier +US-050 +As an AI Coach student, I want the AI to track every mistake I make across all +DPS and tests so that I never forget my weak areas. +P0 +AI +Coach +US-051 +As an AI Coach student, I want the AI to classify my mistakes (conceptual, +calculation, etc.) so that I understand WHY I got it wrong. +P0 +AI +Coach +US-052 +As an AI Coach student, I want wrong questions to reappear at optimal +intervals (spaced repetition) so that I permanently learn from my mistakes. +P0 +AI +Coach +US-053 +As an AI Coach student, I want a daily "Mistake Review" session with 5-10 +questions from my error queue so that I consistently revise my weak areas. +P0 +AI +Coach +US-054 +As an AI Coach student, I want a personalized daily study plan generated every +morning so that I know exactly what to study today. +P0 +AI +Coach +US-055 +As an AI Coach student, I want the study plan to adapt based on what I actually +completed yesterday so that it stays relevant. +P0 +AI +Coach +US-056 +As an AI Coach student, I want to see my Exam Readiness Score (0-100) so +that I know how prepared I am. +P0 +AI +Coach +US-057 +As an AI Coach student, I want the readiness score to show component +breakdown so that I know which factor is pulling me down. +P0 +AI +Coach +US-058 +As an AI Coach student, I want to chat with the AI tutor to ask doubts and get +explanations so that I can learn at my own pace. +P1 +AI +Coach +US-059 +As an AI Coach student, I want the AI tutor to be context-aware (knows my +weak areas) so that explanations are personalized. +P1 +AI +Coach +US-060 +As an AI Coach student, I want a personalized exam day strategy based on my +mock performance so that I can maximize my score. +P1 +AI +Coach +US-061 +As an AI Coach student, I want a college predictor that shows which IITs/NITs I +can target so that I stay motivated. +P1 +AI +Coach +US-062 +As an AI Coach student, I want the AI to analyze my study patterns and +suggest optimal study times so that I study when I'm most effective. +P2 +AI +Coach +PragatiVeer — Product Requirements Document +Page 17 of 27 +8.6 Parent Dashboard +ID +User Story +Priority +Tier +US-070 +As a parent, I want to create my own login linked to my child's account so that I +can monitor progress without accessing their account. +P0 +Pro+ +US-071 +As a parent, I want to see a simple weekly progress summary so that I know if my +child is studying regularly. +P0 +Pro+ +US-072 +As a parent, I want to see my child's accuracy trend so that I can see if they're +improving. +P0 +Pro+ +US-073 +As a parent, I want to see "Areas of Concern" — topics where my child is weak so +that I can arrange extra help. +P0 +Pro+ +US-074 +As a parent, I want to receive a weekly WhatsApp/Email report automatically so +that I don't have to log in to check. +P0 +Pro+ +US-075 +As a parent, I want the dashboard to be in Hindi so that I can understand it easily. +P1 +Pro+ +US-076 +As a parent with two children preparing for exams, I want to track both from a +single parent account. +P1 +Pro+ +8.7 Gamification & Engagement +ID +User Story +Priority +Tier +US-080 +As a student, I want to see my daily streak so that I feel motivated to practice +every day. +P0 +All +US-081 +As a student, I want to earn badges for milestones (7-day streak, 100 questions, +etc.) so that I feel a sense of achievement. +P1 +All +US-082 +As a student, I want to see my rank on the city/school leaderboard so that I can +compete with peers. +P1 +All +US-083 +As a student, I want to share my progress card on social media so that my friends +can see my hard work. +P1 +Pro+ +US-084 +As a student, I want to challenge a friend to beat my test score so that we can +motivate each other. +P2 +Pro+ +US-085 +As a student, I want to receive a notification when I'm about to lose my streak so +that I don't break it. +P1 +All +PragatiVeer — Product Requirements Document +Page 18 of 27 +8.8 Payments & Subscription +ID +User Story +Priority +Tier +US-090 +As a Free student, I want to upgrade to Pro with UPI so that I can start my +subscription easily. +P0 +Pro+ +US-091 +As a Pro student, I want to choose between monthly, quarterly, and annual billing +so that I can pick what suits my budget. +P0 +Pro+ +US-092 +As a student, I want a 7-day free trial of Pro so that I can try before I buy. +P0 +Pro+ +US-093 +As a student, I want to apply a coupon code during checkout so that I can get a +discount. +P1 +Pro+ +US-094 +As a student, I want to receive an invoice for my payment so that I can show my +parents. +P1 +Pro+ +US-095 +As a student, I want to pause my subscription during exam breaks so that I don't +waste paid days. +P2 +Pro+ +US-096 +As a parent, I want a 30-day money-back guarantee so that I can purchase without +risk. +P1 +Pro+ +8.9 Referral & Growth +ID +User Story +Priority +Tier +US-100 +As a student, I want to refer a friend using my unique link so that both of us get free +AI Coach access. +P1 +All +US-101 +As a student, I want to see how many friends have signed up through my referral +so that I can track my rewards. +P1 +All +US-102 +As a student, I want to share my referral link on WhatsApp and Telegram so that I +can easily invite friends. +P1 +All +8.10 School/B2B +ID +User Story +Priority +Tier +US-110 +As a school principal, I want to purchase bulk licenses for my students so that they +all get Pro access at a discount. +P1 +B2B +US-111 +As a school principal, I want a school dashboard showing aggregate performance +of all students so that I can identify weak batches. +P1 +B2B +US-112 +As a teacher, I want to assign DPS or tests to my entire class so that they practice +together. +P2 +B2B +PragatiVeer — Product Requirements Document +Page 19 of 27 +9. User Flows +9.1 New Student Onboarding Flow +Landing Page → Sign Up (Email/Phone) → OTP Verification → +Profile Setup (Class, Exam, Medium) → Welcome Tour → +First DPS → See Results → Streak Started → +Upgrade Prompt (after 3 DPS completions) +9.2 Daily Practice Flow +Login → Dashboard → "Today's DPS" CTA → +Attempt DPS (10-15 Qs, timed) → Submit → +Instant Results (Score + Answer Key) → +Review Mistakes → Check Leaderboard → +Logout or Continue (Micro-test / Analytics) +9.3 Weekly Test Flow +Login → Dashboard → "Weekly Test Available" Notification → +Enter Test Lobby (instructions, pattern info) → +Start Test → Attempt Sections (timed per section) → +Submit → Score Report → Detailed Analytics → +Compare with Peers → AI Coach Analysis (if AI Coach tier) +9.4 AI Coach Daily Flow +Login → AI Coach Dashboard → +1. View Today's Personalized Plan +2. Complete Mistake Review Session (5-10 Qs) +3. Attempt Recommended DPS/Micro-test +4. Check Exam Readiness Score Update +5. Chat with AI Tutor (if doubts) +6. Mark Plan Tasks as Complete +→ Plan Adapts for Tomorrow +PragatiVeer — Product Requirements Document +Page 20 of 27 +9.5 Parent Flow +Parent Login (linked to student) → +Dashboard: Weekly Summary, Accuracy Trend, +Areas of Concern, Time Spent → +Drill Down into Specific Topics → +Share Report with Family → +Receive Weekly WhatsApp Report (automated) +9.6 Upgrade Flow (Free → Pro) +Free User → CTA: "Unlock Unlimited Practice" → +Pricing Page (Free vs Pro vs AI Coach comparison) → +Select Pro Plan → Choose Billing (Monthly/Quarterly/Annual) → +Payment (UPI/Card/Netbanking) → +7-Day Free Trial Starts → +After Trial: Auto-charge or Downgrade +10. Technical Requirements +10.1 Platform +Type: Web application only (no native mobile app) +Responsive: Mobile-first responsive design (320px minimum) +PWA: Progressive Web App with service worker for offline DPS access +Browser Support: Chrome, Firefox, Safari, Edge (latest 2 versions) +• +• +• +• +PragatiVeer — Product Requirements Document +Page 21 of 27 +10.2 Tech Stack (Recommended) +Layer +Technology +Frontend +Next.js (React) — SSR for performance +Backend +FastAPI (Python) or Node.js +Database +PostgreSQL +Cache +Redis (session management, rate limiting) +File Storage +S3-compatible (MinIO or AWS S3) +AI/ML +LLM API (for AI Coach), custom spaced repetition engine +Payments +Razorpay +Email +SMTP (Hostinger) +SMS/WhatsApp +Twilio / WhatsApp Business API +Deployment +Docker on VPS (Gyannetra production server) +10.3 Performance Requirements +Page load time: < 2 seconds (desktop), < 3 seconds (mobile) +Test interface: < 1 second question transition +DPS submission results: < 2 seconds +AI Coach response: < 5 seconds +Concurrent users: Support 10,000 DAU in Phase 1 +Uptime: 99.5% (excluding scheduled maintenance) +10.4 Security Requirements +HTTPS everywhere +OTP-based authentication (rate limited: 3 attempts/min) +Password hashing (bcrypt) +Session management (JWT with 30-day expiry) +Rate limiting on all API endpoints +XSS and CSRF protection +SQL injection prevention (parameterized queries) +Data encryption at rest (database encryption) +GDPR/DPDP Act compliance for student data +Parental consent for users under 18 +10.5 Offline Capability (PWA) +Service worker caches DPS questions +Students can download DPS when online +Attempt DPS offline +Sync results when back online +• +• +• +• +• +• +• +• +• +• +• +• +• +• +• +• +• +• +• +• +PragatiVeer — Product Requirements Document +Page 22 of 27 +Cache previous day's DPS for review +11. Data Model (Key Entities) +11.1 User +Field +Type +Notes +id +UUID +Primary key +email +String +Unique, nullable +phone +String +Unique, nullable +password_hash +String +bcrypt hashed +name +String +class +Enum +11, 12, Dropper +target_exam +Enum +JEE_Main, JEE_Advanced, NEET +medium +Enum +English, Hindi, Bilingual +school +String +Optional +city +String +state +String +tier +Enum +Free, Pro, AI_Coach +trial_end +DateTime +7-day trial expiry +subscription_end +DateTime +streak_count +Integer +Current streak +longest_streak +Integer +created_at +DateTime +last_active +DateTime +• +PragatiVeer — Product Requirements Document +Page 23 of 27 +11.2 Parent +Field +Type +Notes +id +UUID +Primary key +email +String +phone +String +password_hash +String +name +String +language +Enum +Hindi, English +linked_students +UUID[] +Array of student user IDs +created_at +DateTime +11.3 Question +Field +Type +Notes +id +UUID +Primary key +subject +Enum +Physics, Chemistry, Maths, Biology +topic +String +e.g., "Electrostatics" +subtopic +String +e.g., "Coulomb's Law" +difficulty +Enum +Easy, Medium, Hard +type +Enum +MCQ_Single, MCQ_Multiple, Numerical +question_text +Text +Supports LaTeX +options +JSON +Array of options (for MCQ) +correct_answer +JSON +Correct answer(s) +solution_text +Text +Step-by-step solution +language +Enum +English, Hindi +year +Integer +For PYQs (nullable) +exam +Enum +JEE_Main, JEE_Advanced, NEET +tags +String[] +Custom tags +is_active +Boolean +Soft delete +created_by +UUID +Admin user ID +verified_by +UUID +Content reviewer ID +PragatiVeer — Product Requirements Document +Page 24 of 27 +11.4 DPS (Daily Practice Sheet) +Field +Type +Notes +id +UUID +Primary key +date +Date +DPS date +title +String +e.g., "DPS #127" +questions +UUID[] +Array of question IDs +difficulty +Enum +Easy, Medium, Hard, Mixed +time_limit +Integer +Minutes +is_active +Boolean +created_by +UUID +Admin user ID +11.5 Test +Field +Type +Notes +id +UUID +Primary key +title +String +type +Enum +Weekly, Mock, PYQ +exam_pattern +Enum +JEE_Main, JEE_Advanced, NEET +sections +JSON +Array of {name, questions[], time_limit} +total_time +Integer +Minutes +difficulty +Enum +scheduled_date +DateTime +For weekly tests +is_active +Boolean +created_by +UUID +Admin user ID +PragatiVeer — Product Requirements Document +Page 25 of 27 +11.6 Attempt (DPS or Test) +Field +Type +Notes +id +UUID +Primary key +user_id +UUID +Foreign key +source_type +Enum +DPS, Test, MicroTest +source_id +UUID +DPS or Test ID +started_at +DateTime +submitted_at +DateTime +time_taken +Integer +Seconds +answers +JSON +Array of {question_id, selected_answer, is_correct, time_spent} +score +Integer +Correct answers count +total_questions +Integer +accuracy +Float +Percentage +status +Enum +In_Progress, Submitted, Timed_Out +11.7 Mistake (AI Coach) +Field +Type +Notes +id +UUID +Primary key +user_id +UUID +Foreign key +question_id +UUID +Foreign key +attempt_id +UUID +Foreign key +error_type +Enum +Conceptual, Calculation, Reading, Time_Pressure +topic +String +subtopic +String +next_review +DateTime +Spaced repetition schedule +review_count +Integer +Times re-attempted +consecutive_correct +Integer +For mastery detection +is_mastered +Boolean +created_at +DateTime +PragatiVeer — Product Requirements Document +Page 26 of 27 +11.8 StudyPlan (AI Coach) +Field +Type +Notes +id +UUID +Primary key +user_id +UUID +Foreign key +date +Date +Plan date +tasks +JSON +Array of {type, description, duration_minutes, status} +is_completed +Boolean +generated_at +DateTime +feedback +Text +Student's feedback on plan +11.9 Subscription +Field +Type +Notes +id +UUID +Primary key +user_id +UUID +Foreign key +tier +Enum +Pro, AI_Coach +billing_cycle +Enum +Monthly, Quarterly, Annual +start_date +DateTime +end_date +DateTime +amount +Integer +Paise +payment_id +String +Razorpay payment ID +status +Enum +Active, Expired, Cancelled, Paused +auto_renew +Boolean +coupon_code +String +Nullable +End of PRD — Prepared by Maya, CEO's Office, Gyannetra Pvt Ltd +Approved by Kapil Panwar, CEO — 1 July 2026 +PragatiVeer — Product Requirements Document +Page 27 of 27 + diff --git a/src/app/cbt/[examId]/page.tsx b/src/app/cbt/[examId]/page.tsx index 3f1cba8..8548849 100644 --- a/src/app/cbt/[examId]/page.tsx +++ b/src/app/cbt/[examId]/page.tsx @@ -3,13 +3,15 @@ import { useEffect, useState, use, useRef } from "react" import { Button } from "@/components/ui/button" import { Badge } from "@/components/ui/badge" -import { Clock, Flag, ChevronLeft, ChevronRight, Pause as PauseIcon, MoreVertical, Calculator as CalculatorIcon, FlaskConical, Edit3, XCircle, Play, Shield, AlertTriangle } from "lucide-react" +import { Clock, Flag, ChevronLeft, ChevronRight, Pause as PauseIcon, MoreVertical, Calculator as CalculatorIcon, FlaskConical, Edit3, XCircle, Play, Shield, AlertTriangle, Moon, Sun } from "lucide-react" import Image from "next/image" +import { useTheme } from "next-themes" import { useCBTStore, QuestionStatus } from "@/store/cbtStore" import { useExamTimer } from "@/hooks/useExamTimer" import ReactMarkdown from "react-markdown" import remarkMath from "remark-math" import rehypeKatex from "rehype-katex" +import rehypeRaw from "rehype-raw" import "katex/dist/katex.min.css" import { Calculator } from "@/components/CBT/Calculator" import { Scratchpad } from "@/components/CBT/Scratchpad" @@ -35,9 +37,9 @@ export default function CBTExamPage({ params }: { params: Promise<{ examId: stri const [showPeriodicTable, setShowPeriodicTable] = useState(false); const [isPaused, setIsPaused] = useState(false); const [showSubmitConfirm, setShowSubmitConfirm] = useState(false); + const { theme, setTheme } = useTheme(); // Anti-cheat state - const [testStarted, setTestStarted] = useState(false); const [violationCount, setViolationCount] = useState(0); const [showWarning, setShowWarning] = useState(false); const hasShownWarning = useRef(false); @@ -45,6 +47,7 @@ export default function CBTExamPage({ params }: { params: Promise<{ examId: stri const { initExam, + startExam, questions, answers, currentQuestionIndex, @@ -57,7 +60,8 @@ export default function CBTExamPage({ params }: { params: Promise<{ examId: stri getAttemptPayload, submitAttemptToServer, resetExamState, - status + status, + attemptId } = useCBTStore(); const { formattedTime, isTimedOut } = useExamTimer(); @@ -109,14 +113,14 @@ export default function CBTExamPage({ params }: { params: Promise<{ examId: stri // Track time spent per question useEffect(() => { - if (testStarted) { + if (status === 'IN_PROGRESS') { setQuestionStartTime(Date.now()); } - }, [currentQuestionIndex, testStarted]); + }, [currentQuestionIndex, status]); // Anti-Cheat: Tab switching listener useEffect(() => { - if (!testStarted || status === 'SUBMITTED' || status === 'TIMED_OUT') return; + if (status !== 'IN_PROGRESS') return; const handleVisibilityChange = () => { if (document.visibilityState === 'hidden') { @@ -126,7 +130,7 @@ export default function CBTExamPage({ params }: { params: Promise<{ examId: stri document.addEventListener("visibilitychange", handleVisibilityChange); return () => document.removeEventListener("visibilitychange", handleVisibilityChange); - }, [testStarted, status]); + }, [status]); // Handle side-effects of violation count changing useEffect(() => { @@ -155,7 +159,7 @@ export default function CBTExamPage({ params }: { params: Promise<{ examId: stri } catch (e) { console.warn("Fullscreen API failed", e); } - setTestStarted(true); + startExam(); }; const handleNext = () => { @@ -199,7 +203,7 @@ export default function CBTExamPage({ params }: { params: Promise<{ examId: stri if (!mounted || questions.length === 0) return
Loading Exam Engine...
; - if (!testStarted && status !== 'SUBMITTED' && status !== 'TIMED_OUT') { + if (status === 'NOT_STARTED') { return (
@@ -216,6 +220,17 @@ export default function CBTExamPage({ params }: { params: Promise<{ examId: stri
  • Ensure your internet connection is stable before starting.
  • + +
    +
    +

    Preferred Theme

    +

    Choose dark or light mode for the exam

    +
    + +
    + @@ -231,6 +246,7 @@ export default function CBTExamPage({ params }: { params: Promise<{ examId: stri return ( { resetExamState(); window.location.reload(); @@ -346,7 +362,7 @@ export default function CBTExamPage({ params }: { params: Promise<{ examId: stri
    - + {currentQuestion.text_en}
    @@ -377,7 +393,7 @@ export default function CBTExamPage({ params }: { params: Promise<{ examId: stri {letter} - + {option} @@ -402,7 +418,7 @@ export default function CBTExamPage({ params }: { params: Promise<{ examId: stri
    - + {currentQuestion.text_hi}
    @@ -433,7 +449,7 @@ export default function CBTExamPage({ params }: { params: Promise<{ examId: stri {letter} - + {option} diff --git a/src/app/dashboard/cbt/page.tsx b/src/app/dashboard/cbt/page.tsx index 31bc64e..eb1d4ae 100644 --- a/src/app/dashboard/cbt/page.tsx +++ b/src/app/dashboard/cbt/page.tsx @@ -132,7 +132,7 @@ export default function CBTPage() { {exam.exam_pattern && ( - {exam.exam_pattern} + {exam.exam_pattern === 'JEE_Main' ? 'JEE Main' : exam.exam_pattern === 'JEE_Advanced' ? 'JEE Advanced' : exam.exam_pattern} )} @@ -218,7 +218,7 @@ export default function CBTPage() {
    {Math.round(attempt.accuracy)}%
    - diff --git a/src/app/dashboard/community/page.tsx b/src/app/dashboard/community/page.tsx index 2cc5b00..af01976 100644 --- a/src/app/dashboard/community/page.tsx +++ b/src/app/dashboard/community/page.tsx @@ -78,6 +78,26 @@ export default function CommunityPage() { return true }) + if (!hasAccessTo("ask-doubts-from-tutors")) { + return ( +
    +
    + +
    +

    Premium Feature

    +

    + The Doubt Forum is a premium feature. Upgrade your plan to ask doubts and interact with tutors and the community. +

    + +
    + ) + } + return (
    @@ -88,17 +108,9 @@ export default function CommunityPage() {

    Ask questions, share knowledge, and learn together with the community.

    - - {hasAccessTo("ask-doubts-from-tutors") ? ( - - ) : ( - - )} +
    diff --git a/src/app/upgrade/page.tsx b/src/app/upgrade/page.tsx index 05b59c3..9e18f94 100644 --- a/src/app/upgrade/page.tsx +++ b/src/app/upgrade/page.tsx @@ -3,7 +3,7 @@ import { useState } from "react" import { Card, CardContent, CardHeader, CardTitle, CardDescription, CardFooter } from "@/components/ui/card" import { Button } from "@/components/ui/button" -import { Check, X, ShieldCheck, Loader2 } from "lucide-react" +import { Check, X, ShieldCheck, Loader2, Minus } from "lucide-react" import { useActiveUser } from "@/hooks/useActiveUser" @@ -114,9 +114,9 @@ export default function UpgradePage() {
    Subject-wise diagnostics
    Basic progress tracking
    -
    Unlimited Tests
    -
    AI Spaced Repetition
    -
    Parent Analytics
    +
    Tests
    +
    AI Spaced Repetition
    +
    Parent Analytics
    @@ -136,8 +136,8 @@ export default function UpgradePage() {
    Unlimited Sectional Tests
    Performance Analytics
    Parent Dashboard
    -
    AI Mistake Heatmap
    -
    Spaced Repetition (SM-2)
    +
    AI Mistake Heatmap
    +
    Spaced Repetition (SM-2)
    + {attemptId && ( + + )}