WORK / ACTIVE SYSTEM

Narwhal Portal

Operations and developer workbench for the Narwhal Kubernetes Internal Developer Platform

Kubernetes · IDP · Next.js · React · TypeScript · Keycloak · GitOps · Platform Engineering
01 / Problem02 / Architecture03 / Development04 / Proof05 / Knowledge06 / Record
01 / PROBLEM

A Kubernetes IDP can expose dozens of independent dashboards while leaving platform-wide state, relationships, and operator workflows fragmented

RESPONSE

A unified Next.js portal that presents cluster, application, catalog, security, cost, governance, and onboarding workflows as one operational surface

02 / ARCHITECTURE

Read the boundaries before the features.

Identity, delivery, network, storage and workload integration are shown as operational seams rather than a feature inventory.

03 / DEVELOPMENT OVER TIME

Evolution is part of the evidence.

First commit, cumulative commits, releases and recent activity show whether the system is still being engineered.

DEVELOPMENT OBSERVATORY
dasomel/narwhal-portal

Observe a system evolving over time, not a repository frozen at one release.

Contributors: 2
First commit
Mar 23, 2026
Commits
282
Releases
6
Latest release
v1.0.17
Last push
Sep 19, 2026
Active for
6 months
Recent development activity
278 commits / 20 weeks
PAST → NOW
Language: TypeScriptLicense: Apache-2.0Stars: 2Forks: 0Open issues: 41Latest release
04 / PROOF, NOT BADGES
8
technology / domain signals

Declared scope and technical context

6
connected docs

Operational or implementation documentation

4
engineering notes

Knowledge produced by the project

0
digest links

External signals explicitly connected

06 / ENGINEERING RECORD

Implementation details, operating notes and project-specific context.

Project Overview

Narwhal Portal is the management portal and developer workbench for the Narwhal Kubernetes Internal Developer Platform.

Narwhal provides the underlying GitOps, SSO, observability, storage, security, and platform services. The Portal provides the day-2 operational surface that makes those services understandable and usable as one platform.

The portal does not try to replace every upstream UI. Kubernetes, Argo CD, Keycloak, and other systems remain authoritative; the Portal aggregates platform signals and exposes them through platform-level concepts.

Core Areas

AreaPurpose
DashboardCluster health, Argo CD applications, alerts, and overall platform status
OnboardingGetting-started workflow and kubeconfig issuance
Catalog / My AppsService catalog and per-user application view
NodesNode inventory and status
CostNamespace/workload cost visibility
Security / ComplianceSecurity posture, policies, RBAC, and audit-related information
GovernanceScorecards, DORA-related information, and platform maturity signals
ArchitecturePlatform and service relationships
Templates / ToolsDeveloper-oriented platform utilities
SettingsUsers, routes, certificates, and policy settings

Position in Narwhal

Technology Stack

  • Next.js 16 / React 19 — App Router application
  • TypeScript — typed frontend/API boundaries
  • Tailwind CSS 4 / shadcn/ui — reusable admin UI
  • TanStack Query / Zustand — server/client state
  • Keycloak OIDC — authentication and sessions
  • Valkey — application cache
  • OpenBao Agent Injector — runtime secrets injection
  • Skaffold / Kaniko — Kubernetes inner-loop development and in-cluster image builds

Deployment Model

The production portal is served inside the Narwhal cluster at https://portal.local.narwhal.internal through the APISIX gateway.

A local development loop is available with:

git clone https://github.com/dasomel/narwhal-portal.git
cd narwhal-portal
pnpm install
pnpm dev

For cluster-based development, the project also supports Skaffold HMR. Production image workflows can use the in-cluster Gitea → Kaniko → Harbor path, avoiding a local Docker daemon for the normal deployment flow.

Design Principles

Preserve authoritative sources

Argo CD, Kubernetes, Keycloak, and other platform services keep ownership of their resources. The Portal is a user-facing integration layer, not a competing source of truth.

Use platform domains

Users should not need to understand every upstream product to answer platform questions. Concepts such as Application, Service, Catalog, Security, and Governance create a consistent IDP vocabulary.

Expose operational boundaries

GitOps ownership, policy violations, authentication state, certificate state, and failure conditions should be visible in the UI rather than hidden behind an upstream product boundary.

Connect Day-0 and Day-2

Onboarding, Catalog, Templates, Tools, and operational dashboards are part of the same workbench so the portal spans from initial access to ongoing operations.

Documentation Index

TopicDocumentPurpose
OverviewPortal OverviewRole and user scenarios
ArchitecturePortal ArchitectureApplication/data flow
Getting StartedDevelopment Setuppnpm, environment, Skaffold
OperationsDeployment & OperationsBuild, deployment, health
ADRArchitecture Decision RecordsTechnical decisions and trade-offs

Project Relationship