How codechefvit/papers-codechef works
Papers is a Next.js application for finding, filtering, viewing, and downloading past CAT/FAT exam papers, with related-subject and upcoming-paper discovery. Users can also request missing papers, submit uploads, and report incorrect tags. The graph connects sampled API handlers to their documented service calls and sampled service logic to its data layer. UI-to-API wiring and several unsampled capabilities are represented only where the README or source index supports them; uncertain links are omitted.
Main entry points: paper.ts Paper services · upcoming-sync.ts Upcoming sync · subject.ts Subject services · course.ts Course records
Components 30
Paper discovery
- Paper catalogue
src/app/catalogue/page.tsx - Catalogue experience
src/components/CatalogueContent.tsx - Paper viewer
src/app/paper/[id]/page.tsx - PDF controls
src/components/newPdfViewer.tsx - Pinned papers
src/app/pinned/page.tsx - Related subjects API
src/app/api/related-subject/route.ts - Upcoming papers API
src/app/api/upcoming-papers/route.ts
Paper data
- Paper query APIs
src/app/api/papers/route.ts - Paper detail API
src/app/api/paper-by-id/[id]/route.ts - Selected papers API
src/app/api/user-papers/route.ts - Paper services
src/lib/services/paper.ts - Subject services
src/lib/services/subject.ts - Upcoming sync
src/lib/services/upcoming-sync.ts - Paper records
src/db/papers.ts - Course records
src/db/course.ts - Upcoming records
src/db/upcoming-paper.ts - Slot records
src/db/upcoming-slot.ts - Schedule records
src/db/upcoming-schedule.ts
Community contributions
- Paper request form
src/app/request/page.tsx - Paper request API
src/app/api/request/route.ts - Paper upload form
src/app/upload/page.tsx - Upload API
src/app/api/upload/route.ts - Upload service
src/lib/services/upload.ts - Tag report API
src/app/api/report-tag/route.ts - Report service
src/lib/services/report.ts - Tag reports
src/db/tagReport.ts
Shared platform
- Mongo connection
src/lib/database/mongoose.ts - Paper downloads
src/lib/utils/download.ts - Server analytics
src/lib/posthog-server.ts
Other components
- Student
Connections 30
- Student → Paper catalogue: browses
- Paper catalogue → Catalogue experience: presents
- Student → Paper viewer: opens
- Paper viewer → PDF controls: renders
src/components/newPdfViewer.tsx - Student → Pinned papers: reviews
- Student → Paper request form: requests
- Paper request API → Paper services: creates request
src/app/api/request/route.ts - Paper request API → Server analytics: tracks event
src/app/api/request/route.ts - Student → Paper upload form: submits papers
- Upload API → Upload service: uploads files
src/app/api/upload/route.ts - Upload API → Server analytics: tracks event
src/app/api/upload/route.ts - Student → Tag report API: reports tags
src/app/api/report-tag/route.ts - Tag report API → Report service: submits report
src/app/api/report-tag/route.ts - Report service → Tag reports: writes report
src/lib/services/report.ts - Paper query APIs → Paper services: queries papers
src/app/api/papers/route.ts - Paper detail API → Paper services: fetches paper
src/app/api/paper-by-id/[id]/route.ts - Selected papers API → Paper services: fetches papers
src/app/api/user-papers/route.ts - Related subjects API → Subject services: fetches subjects
src/app/api/related-subject/route.ts - Upcoming papers API → Subject services: fetches upcoming
src/app/api/upcoming-papers/route.ts - Paper services → Paper records: reads papers
src/lib/services/paper.ts - Paper services → Course records: reads counts
src/lib/services/paper.ts - Paper services → Mongo connection: connects to
src/lib/services/paper.ts - Subject services → Course records: reads courses
src/lib/services/subject.ts - Subject services → Upcoming records: reads subjects
src/lib/services/subject.ts - Subject services → Upcoming sync: checks sync
src/lib/services/subject.ts - Upcoming sync → Slot records: reads and updates
src/lib/services/upcoming-sync.ts - Upcoming sync → Schedule records: reads schedule
src/lib/services/upcoming-sync.ts - Upcoming sync → Course records: ranks subjects
src/lib/services/upcoming-sync.ts - Upcoming sync → Upcoming records: replaces subjects
src/lib/services/upcoming-sync.ts - PDF controls → Paper downloads: downloads
src/components/newPdfViewer.tsx