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
| Layer | Choice |
|---|---|
| Framework | Next.js 15.2 (App Router) |
| Language | TypeScript |
| Styling | Tailwind CSS + shadcn/ui (Radix primitives) |
| Animation | Framer Motion |
| Database | MongoDB Atlas (Mongoose + native driver) |
| Auth | Custom JWT + bcrypt (no NextAuth — lightweight, full control) |
| Forms | React Hook Form + Zod validation |
| Nodemailer with Outlook SMTP | |
| CAPTCHA | Google 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.