← Back

Narwhal Portal

Management portal for the Narwhal Kubernetes Internal Developer Platform (IDP) cluster

GitHub
Next.js
React
Kubernetes
IDP
TypeScript
Keycloak

Project Overview

Narwhal Portal is a management portal (Next.js) for the Narwhal Kubernetes Internal Developer Platform (IDP) cluster.

It acts as the web UI that operators and developers use to observe and operate the cluster. It is served in-cluster at https://portal.local.narwhal.internal via the cluster's APISIX gateway. It provides a unified interface for dashboards, application catalogs, cost visibility, security, and governance views.

Key Features

MenuFunction
DashboardCluster health, ArgoCD app status, alerts
Onboardingkubeconfig issuance, getting-started guide
Catalog / My AppsDeployed service catalog, per-user app view
NodesCluster node inventory and status
CostCost visibility and breakdown
Security / Governance / ComplianceTrivy vulnerability reports, scorecard, policies, RBAC, and audit views
Architecture / Templates / ToolsNode/namespace/service graph, scaffolding templates, platform tools grid
SettingsUsers, routes, certificates, and policies management

(Note: Routes live under src/app/(dashboard)/; backing API routes under src/app/api/.)

Tech Stack

LayerTechnology
FrameworkNext.js 16 (App Router) + React 19
StylingTailwindCSS 4 + shadcn/ui
DataTanStack Query (server) + Zustand (client)
AuthNextAuth 5 (beta) + Keycloak OIDC
CacheValkey (ioredis)
SecretsOpenBao Agent Injector
Package Managerpnpm (@10.27.0)

Architecture & Roles

The portal applies Role-Based Access Control (RBAC) based on 4 roles (cluster-admin, developer, viewer, guest) and uses Keycloak for OIDC integration. It also supports i18n (Korean/English) via cookie-based switching.

For detailed system design and component interactions, refer to the Architecture documentation.

Quick Start & Deployment

You can run the local development server with the following commands:

pnpm install
pnpm dev

It also provides an in-cluster HMR development loop (pnpm run dev:skaffold) utilizing Skaffold and Kaniko, which requires no local Docker. For the full development environment setup, check out the Development guide. For the actual cluster deployment process, refer to the Deployment guide.

References