Apps

Portfolio

Multilingual portfolio website with animations, theming, and contact form

Overview

Portfolio is a multilingual personal portfolio website showcasing professional work, experience, education, and projects. Unlike other apps in the monorepo, it has no database backend — all data is static and hardcoded in a single TypeScript file.

Production URL: portfolio.hansenexus.dev

Key Features

  • 8 Sections — Hero, About, Work Experience, Milestones, Education, Skills, Projects, Contact
  • Bilingual — English and German via next-intl
  • Contact Form — SMTP email sending via @hn-monorepo/email
  • Lazy Loading — All sections except Hero are lazy-loaded via next/dynamic()
  • Animations — Motion library + MagicUI components (BlurFade, Dock, FlickeringGrid)
  • Dark/Light Theme — Theme switching via next-themes

Tech Stack

ComponentTechnology
FrameworkNext.js 16 (App Router)
BackendNone (static data)
i18nnext-intl (en, de)
AnimationsMotion + MagicUI
Themingnext-themes
ContactSMTP via @hn-monorepo/email

Data Layer

All resume content is stored in a single file:

src/data/resume.ts    # Skills, work history, education, projects
src/data/types.ts     # TypeScript type definitions for resume data

To update the portfolio content (skills, work history, education, projects), edit src/data/resume.ts directly.

Architecture

src/app/[locale]/page.tsx        # Main page (lazy loads sections)
src/components/section/          # 8 page sections
src/components/magicui/          # Animation components
src/messages/                    # i18n translations (en.json, de.json)
src/lib/i18n/                    # i18n config and routing
src/app/api/contact/             # Contact form API endpoint

Shared Packages

@hn-monorepo/ui, @hn-monorepo/email, @hn-monorepo/monitoring, @hn-monorepo/shared

HanseNexus 2026