A university's international-facing site has two audiences that rarely overlap: prospective students and partner institutions abroad who read English, and domestic stakeholders who read Indonesian. Serving both from one CMS usually ends in half-translated pages. On top of that, campus content — news, agendas, partners, programmes — is maintained by several departments, so a single shared admin password was never going to work. The site also had to pull news from an existing Portal News API rather than becoming yet another place where the same article is re-typed.
We built the site on the Next.js App Router with Bun, MySQL, and Drizzle ORM, with locale-aware routing so every page has a genuine EN and ID counterpart rather than a machine-translated shell. Editorial access runs on NextAuth with role-based permissions, so each department manages only its own content. Server actions handle writes, media goes to S3, and Cloudflare Turnstile guards the public forms. News is federated from the existing Portal News API, so articles are published once and appear everywhere.
Bilingual public site with i18n routing
Role-based admin over campus content
Designed & engineered by Manggala Code