Skip to content

Tech Stack ​

The versions below reflect what is actually pinned in package.json (some older docs in the repo referenced earlier versions).

LayerTechnologyNotes
FrameworkNext.js ^16.2.4App Router (not Pages Router).
LanguageTypeScript ~5.8tsconfig.json currently sets "strict": false.
UI runtimeReact ^19 + React DOM ^19Server and Client Components.
DatabasePostgreSQLAccessed only through Prisma.
ORMPrisma ^6.19 (@prisma/client)Schema at prisma/schema.prisma.
AuthNextAuth.js v4 (^4.24)Credentials provider, JWT strategy, Prisma adapter.
Password hashingbcryptjs ^3.0Cost factor 10.
QR scanninghtml5-qrcode ^2.3Camera-based, rear camera.
QR generationqrcode.react ^4.2Renders the student's qrToken.
StylingTailwind CSS v4 + Shadcn/UIPrimitives in src/components/ui/.
Iconslucide-react
AnimationFramer Motion (motion / framer-motion)Login shake, transitions.
Toastssonnertoast.success() / toast.error().
Themenext-themesDark/light toggle (dark default).
Progress barnext-nprogress-barTop navigation progress.
Datesdate-fns + custom src/lib/date.tsUTC normalisation helpers.
Emailresend ^6.12Optional; used by src/lib/email.ts.
FontGeist (@fontsource-variable/geist)
Package managerpnpmLockfile committed.

Notable design constraints ​

  • PostgreSQL-only, no Firebase. All data and authentication are backed by PostgreSQL through Prisma. There is no external BaaS.
  • @prisma/client is treated as an external server package in next.config.ts, so it is not bundled into the client.
  • Server Actions are the primary API surface. The app deliberately avoids a large REST layer; mutations are server actions with inline authorization.

Documentation tooling ​

This documentation site is built with VitePress (docs/), with Mermaid diagrams provided by vitepress-plugin-mermaid. It is independent of the Next.js app build and has its own docs:* scripts.

Documentation for the Secure QR Attendance System.