Skip to content

Commit 704e192

Browse files
Merge branch 'prod' into prod
2 parents 7d7a16b + 9c661d5 commit 704e192

44 files changed

Lines changed: 1313 additions & 791 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
"google-auth-library": "^10.2.1",
4444
"googleapis": "^155.0.0",
4545
"jose": "^5.10.0",
46+
"jszip": "^3.10.1",
4647
"lodash": "^4.17.21",
4748
"lucide-react": "^0.395.0",
4849
"mongoose": "^8.13.2",

pnpm-lock.yaml

Lines changed: 70 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/app/api/course-list/route.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { NextResponse } from "next/server";
22
import { connectToDatabase } from "@/lib/mongoose";
3-
import { Course } from "@/db/papers";
3+
import { Course } from "@/db/course";
44

55
export const dynamic = "force-dynamic";
66

@@ -14,7 +14,7 @@ export async function GET() {
1414
console.error(error);
1515
return NextResponse.json(
1616
{ message: "Failed to fetch courses", error },
17-
{ status: 500 }
17+
{ status: 500 },
1818
);
1919
}
2020
}

src/app/api/papers/count/route.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
11
import { NextResponse } from "next/server";
22
import { connectToDatabase } from "@/lib/mongoose";
3-
import Paper from "@/db/papers";
3+
import CourseCount from "@/db/course";
44

55
export const dynamic = "force-dynamic";
6+
67
export async function GET(req: Request) {
78
try {
89
await connectToDatabase();
910

10-
const { searchParams } = new URL(req.url);
11-
const subject = searchParams.get("subject");
11+
const count = await CourseCount.find().lean();
1212

13-
const filter = subject ? { subject } : {};
14-
const count = await Paper.countDocuments(filter);
13+
const formatted = count.map((item) => ({
14+
name: item.name,
15+
count: item.count,
16+
}));
1517

16-
return NextResponse.json({ count }, { status: 200 });
18+
return NextResponse.json(formatted, { status: 200 });
1719
} catch (error) {
1820
return NextResponse.json(
19-
{ message: "Failed to fetch papers", error },
21+
{ message: "Failed to fetch course counts", error },
2022
{ status: 500 },
2123
);
2224
}

src/app/api/upload/route.ts

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ export async function POST(req: Request) {
5959

6060
let final_url: string | undefined = "";
6161
let public_id_cloudinary: string | undefined = "";
62-
let thumbnail_url: string | undefined = "";
6362

6463
if (!files || files.length === 0) {
6564
return NextResponse.json(
@@ -93,25 +92,19 @@ export async function POST(req: Request) {
9392
);
9493
}
9594

96-
const thumbnailResponse = cloudinary.v2.image(final_url!, {
97-
format: "jpg",
98-
});
99-
thumbnail_url = thumbnailResponse
100-
.replace("pdf", "jpg")
101-
.replace("upload", "upload/w_400,h_400,c_fill")
102-
.replace(/<img src='|'\s*\/>/g, "");
103-
10495
const paper = new PaperAdmin({
10596
cloudinary_index: configIndex,
97+
10698
public_id_cloudinary,
10799
final_url,
108-
thumbnail_url,
100+
thumbnail_url: null,
109101
subject: null,
110102
slot: null,
111103
year: null,
112104
exam: null,
113105
semester: null,
114106
campus: null,
107+
ambiguous_tags: [],
115108
});
116109

117110
await paper.save();

src/app/layout.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import type { Metadata } from "next";
77
import Navbar from "@/components/Navbar";
88
import Footer from "@/components/Footer";
99
import ChildrenWrapper from "@/components/ChildrenWrapper";
10+
import { CoursesProvider } from "@/context/courseContext";
1011

1112
export const metadata: Metadata = {
1213
metadataBase: new URL("https://papers.codechefvit.com/"),
@@ -120,10 +121,11 @@ export default function RootLayout({
120121
>
121122
<Toaster position="top-right" reverseOrder={false} />
122123
<div className="bg-[#F3F5FF] dark:bg-[#070114]">
123-
<Navbar />
124-
<ChildrenWrapper>{children}</ChildrenWrapper>
125-
126-
<Footer />
124+
<CoursesProvider>
125+
<Navbar />
126+
<ChildrenWrapper>{children}</ChildrenWrapper>
127+
<Footer />
128+
</CoursesProvider>
127129
</div>
128130
</ThemeProvider>
129131
</body>

src/app/paper/[id]/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export async function generateMetadata({
2121
metadataBase: new URL("https://papers.codechefvit.com/"),
2222
title: `Papers | ${paper.subject} | ${paper.exam} | ${paper.slot}`,
2323
description: `Discover ${paper.subject}'s question paper created by CodeChef-VIT at Vellore Institute of Technology. Made with ♡ to help students excel.`,
24-
icons: [{ rel: "icon", url: "/codechef_logo.svg" }],
24+
icons: [{ rel: "icon", url: "/favicon.svg" }],
2525
openGraph: {
2626
title: `Papers | ${paper.subject} | ${paper.exam} | ${paper.slot}`,
2727
images: [{ url: "/papers.png" }],

src/app/pinned/page.tsx

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,34 @@
1+
"use client";
2+
13
import React from "react";
24
import SearchBar from "@/components/Searchbar/searchbar";
35
import PinnedPapersCarousel from "@/components/PinnedPapersCarousel";
6+
import { type IUpcomingPaper } from "@/interface";
7+
import { useState } from "react";
48

59
const Pinned = () => {
10+
const [displayPapers, setDisplayPapers] = useState<IUpcomingPaper[]>([]);
11+
612
return (
713
<div id="pinned" className="mt-5 flex flex-col justify-between">
8-
<h1 className="mx-auto my-8 hidden text-center font-vipnabd text-3xl font-extrabold md:block">
14+
<h1 className="mx-auto my-8 text-center font-vipnabd text-xl font-extrabold sm:text-2xl md:text-3xl">
915
Pinned Subjects
1016
</h1>
11-
1217
<div className="mb-3 flex w-full flex-col items-center gap-2 px-6">
1318
<div className="w-full">
14-
<SearchBar type="pinned" />
19+
<SearchBar type="pinned" displayPapers={displayPapers.length > 0} />
1520
</div>
1621
</div>
17-
<div className="min-h-[20vh]">
18-
<PinnedPapersCarousel carouselType="users" />
22+
<div className="min-h-[40vh]">
23+
<PinnedPapersCarousel
24+
carouselType="users"
25+
displayPapers={displayPapers}
26+
setDisplayPapers={setDisplayPapers}
27+
/>
1928
</div>
20-
<div className="mt-6 flex w-full items-center justify-center">
29+
{/* <div className="mt-6 flex w-full items-center justify-center">
2130
<p>You can pin upto 8 Subjects here</p>
22-
</div>
31+
</div> */}
2332
</div>
2433
);
2534
};

0 commit comments

Comments
 (0)