Skip to content
Client·

Unilinked

UK university consultancy platform connecting international students with institutions. Full marketing site, enquiry system, and admin dashboard.

Next.js 15TypeScriptTailwind CSSshadcn/uiMongoDBFramer MotionJWTNodemailerZod

Unilinked

A UK-based university consultancy platform for international students. Public marketing site, contact and enquiry system, and a password-protected admin dashboard for managing messages and settings.

500+ students helped. 10+ partner institutions. 98% success rate.

What I built

  • Marketing site: Animated landing pages with Framer Motion, responsive across all devices
  • Enquiry system: Multi-step forms validated with React Hook Form + Zod, protected by Google reCAPTCHA v2
  • Admin dashboard: JWT-authenticated panel for managing student enquiries, contact messages, and system settings
  • Email notifications: Automated emails via Nodemailer (Outlook SMTP / STARTTLS port 587) on every new enquiry

Tech decisions

LayerChoice
FrameworkNext.js 15.2 (App Router)
LanguageTypeScript
StylingTailwind CSS + shadcn/ui (Radix primitives)
AnimationFramer Motion
DatabaseMongoDB Atlas (Mongoose + native driver)
AuthCustom JWT + bcrypt (no NextAuth — lightweight, full control)
FormsReact Hook Form + Zod validation
EmailNodemailer with Outlook SMTP
CAPTCHAGoogle reCAPTCHA v2

Why custom JWT over NextAuth

The client needed a simple admin login — one user, one password. NextAuth adds session management overhead, OAuth provider boilerplate, and database adapters that weren't needed. A JWT issued on login, verified on each API route, and stored in an httpOnly cookie was the right tool. Under 50 lines of auth code total.