feat: setup admin JSON generation and pdf viewer for free plan DPPs

This commit is contained in:
2026-07-27 14:56:25 +05:30
parent c214ca41b6
commit a5bb2d867c
74 changed files with 8546 additions and 915 deletions

View File

@@ -420,7 +420,7 @@ export default function MarketingPage() {
<Card className="bg-background/80 backdrop-blur-md border-border p-6 rounded-[2rem] flex flex-col hover:border-border/80 transition-colors h-full z-10 relative shadow-xl">
<h3 className="text-3xl font-bold mb-2">Free</h3>
<p className="text-muted-foreground mb-6 text-base">Perfect to get started.</p>
<div className="text-6xl font-bold tracking-tighter mb-6">₹0<span className="text-xl text-muted-foreground font-medium">/year</span></div>
<div className="text-6xl font-bold tracking-tighter mb-6">₹0<span className="text-xl text-white/60 font-medium tracking-normal ml-1">/year</span></div>
<ul className="space-y-3 mb-6 flex-1 font-medium text-lg">
<li className="flex items-center gap-4"><CheckCircle2 size={24} className="text-white" /> 1 Daily Practice Sheet</li>
<li className="flex items-center gap-4"><CheckCircle2 size={24} className="text-white" /> Basic Performance Analytics</li>
@@ -440,9 +440,9 @@ export default function MarketingPage() {
transition={{ duration: 0.6, type: "spring", delay: 0.1 }}
>
<Card className="bg-background/80 backdrop-blur-md border-border p-6 rounded-[2rem] flex flex-col hover:border-border/80 transition-colors h-full z-10 relative shadow-xl">
<h3 className="text-3xl font-bold mb-2">Pro</h3>
<h3 className="text-3xl font-bold mb-2 text-yellow-500">Pro</h3>
<p className="text-muted-foreground mb-6 text-base">Perfect for self-paced practice.</p>
<div className="text-6xl font-bold tracking-tighter mb-6">₹12,499<span className="text-xl text-muted-foreground font-medium">/year</span></div>
<div className="text-6xl font-bold tracking-tighter mb-6 text-yellow-500">₹3,499<span className="text-xl text-yellow-500/60 font-medium tracking-normal ml-1">/year</span></div>
<ul className="space-y-3 mb-6 flex-1 font-medium text-lg">
<li className="flex items-center gap-4"><CheckCircle2 size={24} className="text-yellow-500" /> Unlimited Daily Practice Sheets</li>
<li className="flex items-center gap-4"><CheckCircle2 size={24} className="text-yellow-500" /> Weekly Test Series & Mock Tests</li>
@@ -463,27 +463,25 @@ export default function MarketingPage() {
transition={{ duration: 0.6, type: "spring", delay: 0.2 }}
className="relative mt-8 lg:mt-0"
>
<Card className="bg-secondary/30 backdrop-blur-xl border-[#00F0FF] p-6 rounded-[2rem] flex flex-col transition-all h-full relative">
<div className="absolute inset-0 rounded-[2.5rem] overflow-hidden">
<div className="absolute inset-0 -translate-x-full animate-shine bg-gradient-to-r from-transparent via-white/10 to-transparent z-0 pointer-events-none"></div>
</div>
<div className="relative z-10 flex flex-col h-full mt-4">
<h3 className="text-3xl font-bold mb-2">AI Coach</h3>
<Card className="bg-background/80 backdrop-blur-md border-border p-6 rounded-[2rem] flex flex-col hover:border-border/80 transition-colors h-full z-10 relative shadow-xl">
<h3 className="text-3xl font-bold mb-2 text-[#00F0FF]">AI Coach</h3>
<p className="text-muted-foreground mb-6 text-base">The complete AI-driven system.</p>
<div className="text-6xl font-bold tracking-tighter mb-6 text-[#00F0FF] drop-shadow-[0_0_10px_rgba(0,240,255,0.5)]">₹4,999<span className="text-xl text-foreground font-medium">/year</span></div>
<div className="text-6xl font-bold tracking-tighter mb-6 text-[#00F0FF]">₹11,999<span className="text-xl text-[#00F0FF]/60 font-medium tracking-normal ml-1">/year</span></div>
<ul className="space-y-3 mb-6 flex-1 font-medium text-lg">
<li className="flex items-center gap-4"><CheckCircle2 size={24} className="text-[#00F0FF]" /> Everything in Pro</li>
<li className="flex items-center gap-4"><CheckCircle2 size={24} className="text-[#00F0FF]" /> AI Spaced Repetition (Mistakes)</li>
<li className="flex items-center gap-4"><CheckCircle2 size={24} className="text-[#00F0FF]" /> 24/7 Streaming AI Tutor Chat</li>
<li className="flex items-center gap-4"><CheckCircle2 size={24} className="text-[#00F0FF]" /> Predictive Rank & College Predictor</li>
</ul>
<Link href="/signup">
<Button size="lg" className="w-full rounded-2xl h-12 font-bold text-lg bg-[#00F0FF] text-black hover:bg-[#00F0FF]/90 transition-all">Get AI Coach</Button>
</Link>
</div>
</Card>
</ul>
<Link href="/signup">
<Button size="lg" className="w-full rounded-2xl h-12 font-bold text-lg bg-[#00F0FF] text-black hover:bg-[#00F0FF]/90 transition-all">Get AI Coach</Button>
</Link>
</Card>
</motion.div>
</div>
<p className="text-center mt-8 text-sm text-muted-foreground font-medium w-full">
* All above prices are inclusive of GST.
</p>
</section>
{/* Tier Comparison Matrix */}
@@ -493,14 +491,14 @@ export default function MarketingPage() {
<p className="text-muted-foreground text-lg max-w-2xl mx-auto">See exactly what you get with each PragatiVeer plan.</p>
</div>
<div className="overflow-x-auto rounded-2xl border border-border/50 bg-secondary/10 backdrop-blur-sm">
<div className="overflow-x-auto rounded-2xl border border-border/50 bg-secondary/10 backdrop-blur-sm p-3 md:p-6">
<table className="w-full text-left border-collapse min-w-[700px]">
<thead>
<tr className="border-b border-border/50 bg-background/50">
<th className="p-4 md:p-6 font-bold text-lg w-2/5">Feature</th>
<th className="p-4 md:p-6 font-bold text-lg text-center w-1/5 border-x border-white">Free</th>
<th className="p-4 md:p-6 font-bold text-lg text-center w-1/5 text-yellow-500 border-x border-yellow-500">Pro</th>
<th className="p-4 md:p-6 font-bold text-lg text-center w-1/5 text-[#00F0FF] border-x border-[#00F0FF]">AI Coach</th>
<th className="p-4 md:p-6 font-bold text-lg w-2/5 border-l border-t border-border/50">Feature</th>
<th className="p-4 md:p-6 font-bold text-lg text-center w-1/5 border-x border-t border-white">Free</th>
<th className="p-4 md:p-6 font-bold text-lg text-center w-1/5 text-yellow-500 border-x border-t border-yellow-500">Pro</th>
<th className="p-4 md:p-6 font-bold text-lg text-center w-1/5 text-[#00F0FF] bg-[#00F0FF]/5 border-x border-t border-[#00F0FF]">AI Coach</th>
</tr>
</thead>
<tbody className="divide-y divide-border/30 text-sm md:text-base">
@@ -529,7 +527,7 @@ export default function MarketingPage() {
{ name: "Study Time Optimization", free: false, pro: false, ai: true },
].map((feature, idx) => (
<tr key={idx} className="hover:bg-background/40 transition-colors">
<td className="p-4 md:p-6 font-medium border-y border-border/30">{feature.name}</td>
<td className="p-4 md:p-6 font-medium border-y border-l border-border/30">{feature.name}</td>
<td className="p-4 md:p-6 text-center text-muted-foreground border border-white">
{typeof feature.free === 'boolean' ? (feature.free ? <CheckCircle2 className="mx-auto text-white" size={20} /> : <Minus className="mx-auto text-white/30" size={20} />) : <span className="font-semibold text-white">{feature.free}</span>}
</td>
@@ -566,6 +564,7 @@ export default function MarketingPage() {
Re-engineering NEET & JEE preparation with adaptive AI models. Learn faster, rank higher.
</p>
<div className="flex items-center gap-4 pt-2">
{/*
<Link href="#" className="text-muted-foreground hover:text-foreground transition-colors">
<svg viewBox="0 0 24 24" width="20" height="20" stroke="currentColor" strokeWidth="2" fill="none" strokeLinecap="round" strokeLinejoin="round"><path d="M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z"></path></svg>
</Link>
@@ -575,6 +574,7 @@ export default function MarketingPage() {
<Link href="#" className="text-muted-foreground hover:text-foreground transition-colors">
<svg viewBox="0 0 24 24" width="20" height="20" stroke="currentColor" strokeWidth="2" fill="none" strokeLinecap="round" strokeLinejoin="round"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg>
</Link>
*/}
</div>
</div>
@@ -600,8 +600,11 @@ export default function MarketingPage() {
<div>
<h4 className="font-bold mb-6 tracking-tight text-foreground">Legal</h4>
<ul className="space-y-3 text-sm font-medium text-muted-foreground">
<li><Link href="#" className="hover:text-primary transition-colors">Privacy Policy</Link></li>
<li><Link href="#" className="hover:text-primary transition-colors">Terms of Service</Link></li>
<li><Link href="/terms" className="hover:text-primary transition-colors">Terms & Conditions</Link></li>
<li><Link href="/privacy" className="hover:text-primary transition-colors">Privacy Policy</Link></li>
<li><Link href="/refund" className="hover:text-primary transition-colors">Refund Policy</Link></li>
<li><Link href="/cancellation" className="hover:text-primary transition-colors">Cancellation Policy</Link></li>
<li><Link href="/disclaimer" className="hover:text-primary transition-colors">Disclaimer</Link></li>
</ul>
</div>
</div>