diff --git a/projects/nshmp-apps/src/app/designmaps/dashboard/app.component.html b/projects/nshmp-apps/src/app/designmaps/dashboard/app.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..1a7c48e6595fae9eeb197f9ad5b9bb85645c9717
--- /dev/null
+++ b/projects/nshmp-apps/src/app/designmaps/dashboard/app.component.html
@@ -0,0 +1,19 @@
+<nshmp-lib-ng-template #template [navigationList]="navigationList" [title]="">
+  <!-- Dashboard -->
+  <nshmp-lib-ng-dashboard [sections]="sections">
+    <nshmp-lib-ng-dashboard-title>
+      USGS Earthquake Hazard Toolbox:
+      <br />
+      Design Map Applications
+    </nshmp-lib-ng-dashboard-title>
+    <nshmp-lib-ng-dashboard-description />
+  </nshmp-lib-ng-dashboard>
+
+  <!-- About page -->
+  <nshmp-lib-ng-about-page>
+    <nshmp-lib-ng-about-content
+      [showSavingSettingPanel]="false"
+      [showUsingApplicationPanel]="false"
+    />
+  </nshmp-lib-ng-about-page>
+</nshmp-lib-ng-template>
diff --git a/projects/nshmp-apps/src/app/designmaps/dashboard/app.component.scss b/projects/nshmp-apps/src/app/designmaps/dashboard/app.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/projects/nshmp-apps/src/app/designmaps/dashboard/app.component.spec.ts b/projects/nshmp-apps/src/app/designmaps/dashboard/app.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..10ce8a0027da801bcb011e66163c0de975d46b49
--- /dev/null
+++ b/projects/nshmp-apps/src/app/designmaps/dashboard/app.component.spec.ts
@@ -0,0 +1,30 @@
+import {provideHttpClient} from '@angular/common/http';
+import {ComponentFixture, TestBed} from '@angular/core/testing';
+import {provideNoopAnimations} from '@angular/platform-browser/animations';
+import {provideRouter} from '@angular/router';
+
+import {AppComponent} from './app.component';
+
+describe('AppComponent', () => {
+  let component: AppComponent;
+  let fixture: ComponentFixture<AppComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [AppComponent],
+      providers: [
+        provideHttpClient(),
+        provideNoopAnimations(),
+        provideRouter([]),
+      ],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(AppComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/projects/nshmp-apps/src/app/designmaps/dashboard/app.component.ts b/projects/nshmp-apps/src/app/designmaps/dashboard/app.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..fbc4ee08aca073bcd064f86e298b358a9e19c8c1
--- /dev/null
+++ b/projects/nshmp-apps/src/app/designmaps/dashboard/app.component.ts
@@ -0,0 +1,47 @@
+import {Component} from '@angular/core';
+import {
+  NshmpLibNgAboutContentComponent,
+  NshmpLibNgAboutPageComponent,
+} from '@ghsc/nshmp-lib-ng/about';
+import {
+  ApplicationSections,
+  NshmpLibNgDashboardComponent,
+  NshmpLibNgDashboardDescriptionComponent,
+  NshmpLibNgDashboardTitleComponent,
+  NshmpLibNgTemplateComponent,
+} from '@ghsc/nshmp-lib-ng/nshmp';
+import {
+  designMapApps,
+  navigation,
+} from 'projects/nshmp-apps/src/shared/utils/navigation.utils';
+
+@Component({
+  imports: [
+    NshmpLibNgTemplateComponent,
+    NshmpLibNgAboutPageComponent,
+    NshmpLibNgDashboardComponent,
+    NshmpLibNgDashboardTitleComponent,
+    NshmpLibNgDashboardDescriptionComponent,
+    NshmpLibNgAboutContentComponent,
+  ],
+  selector: 'app-app',
+  standalone: true,
+  styleUrl: './app.component.scss',
+  templateUrl: './app.component.html',
+})
+export class AppComponent {
+  /** Navigation list for menu */
+  navigationList = navigation();
+
+  sections: ApplicationSections[] = [
+    {
+      gridClass: 'grid-col-10',
+      sections: [
+        {
+          applications: designMapApps().map(navigation => ({navigation})),
+          gridClass: 'grid-col-12 tablet-lg:grid-col-8 grid-offset-1',
+        },
+      ],
+    },
+  ];
+}
diff --git a/projects/nshmp-apps/src/app/designmaps/design-maps.routes.ts b/projects/nshmp-apps/src/app/designmaps/design-maps.routes.ts
index f6c3e3cbd6554b641cb27561af418062f23ebb4b..ab715b048a59e09de75d40eeb3d6d5d4fa739c67 100644
--- a/projects/nshmp-apps/src/app/designmaps/design-maps.routes.ts
+++ b/projects/nshmp-apps/src/app/designmaps/design-maps.routes.ts
@@ -1,6 +1,11 @@
 import {Routes} from '@angular/router';
 
 const routes: Routes = [
+  {
+    loadComponent: () =>
+      import('./dashboard/app.component').then(com => com.AppComponent),
+    path: '',
+  },
   {
     loadComponent: () =>
       import('./rtgm/app.component').then(com => com.AppComponent),
diff --git a/projects/nshmp-apps/src/app/ncm/dashboard/app.component.html b/projects/nshmp-apps/src/app/ncm/dashboard/app.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..35b0fc3979cb93c2dc36bf4feefbcb73a1c0666c
--- /dev/null
+++ b/projects/nshmp-apps/src/app/ncm/dashboard/app.component.html
@@ -0,0 +1,19 @@
+<nshmp-lib-ng-template #template [navigationList]="navigationList" [title]="">
+  <!-- Dashboard -->
+  <nshmp-lib-ng-dashboard [sections]="sections">
+    <nshmp-lib-ng-dashboard-title>
+      USGS Earthquake Hazard Toolbox:
+      <br />
+      National Crustal Model Applications
+    </nshmp-lib-ng-dashboard-title>
+    <nshmp-lib-ng-dashboard-description />
+  </nshmp-lib-ng-dashboard>
+
+  <!-- About page -->
+  <nshmp-lib-ng-about-page>
+    <nshmp-lib-ng-about-content
+      [showSavingSettingPanel]="false"
+      [showUsingApplicationPanel]="false"
+    />
+  </nshmp-lib-ng-about-page>
+</nshmp-lib-ng-template>
diff --git a/projects/nshmp-apps/src/app/ncm/dashboard/app.component.scss b/projects/nshmp-apps/src/app/ncm/dashboard/app.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/projects/nshmp-apps/src/app/ncm/dashboard/app.component.spec.ts b/projects/nshmp-apps/src/app/ncm/dashboard/app.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..10ce8a0027da801bcb011e66163c0de975d46b49
--- /dev/null
+++ b/projects/nshmp-apps/src/app/ncm/dashboard/app.component.spec.ts
@@ -0,0 +1,30 @@
+import {provideHttpClient} from '@angular/common/http';
+import {ComponentFixture, TestBed} from '@angular/core/testing';
+import {provideNoopAnimations} from '@angular/platform-browser/animations';
+import {provideRouter} from '@angular/router';
+
+import {AppComponent} from './app.component';
+
+describe('AppComponent', () => {
+  let component: AppComponent;
+  let fixture: ComponentFixture<AppComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [AppComponent],
+      providers: [
+        provideHttpClient(),
+        provideNoopAnimations(),
+        provideRouter([]),
+      ],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(AppComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/projects/nshmp-apps/src/app/ncm/dashboard/app.component.ts b/projects/nshmp-apps/src/app/ncm/dashboard/app.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..7a677f638d236d6c4d2c19bc88f761e6748c8c75
--- /dev/null
+++ b/projects/nshmp-apps/src/app/ncm/dashboard/app.component.ts
@@ -0,0 +1,47 @@
+import {Component} from '@angular/core';
+import {
+  NshmpLibNgAboutContentComponent,
+  NshmpLibNgAboutPageComponent,
+} from '@ghsc/nshmp-lib-ng/about';
+import {
+  ApplicationSections,
+  NshmpLibNgDashboardComponent,
+  NshmpLibNgDashboardDescriptionComponent,
+  NshmpLibNgDashboardTitleComponent,
+  NshmpLibNgTemplateComponent,
+} from '@ghsc/nshmp-lib-ng/nshmp';
+import {
+  navigation,
+  ncmApps,
+} from 'projects/nshmp-apps/src/shared/utils/navigation.utils';
+
+@Component({
+  imports: [
+    NshmpLibNgTemplateComponent,
+    NshmpLibNgAboutPageComponent,
+    NshmpLibNgDashboardComponent,
+    NshmpLibNgDashboardTitleComponent,
+    NshmpLibNgDashboardDescriptionComponent,
+    NshmpLibNgAboutContentComponent,
+  ],
+  selector: 'app-app',
+  standalone: true,
+  styleUrl: './app.component.scss',
+  templateUrl: './app.component.html',
+})
+export class AppComponent {
+  /** Navigation list for menu */
+  navigationList = navigation();
+
+  sections: ApplicationSections[] = [
+    {
+      gridClass: 'grid-col-10',
+      sections: [
+        {
+          applications: ncmApps().map(navigation => ({navigation})),
+          gridClass: 'grid-col-12 tablet-lg:grid-col-8 grid-offset-1',
+        },
+      ],
+    },
+  ];
+}
diff --git a/projects/nshmp-apps/src/app/ncm/ncm.routes.ts b/projects/nshmp-apps/src/app/ncm/ncm.routes.ts
index b339f3475347653801bcf163954e59191c7a6739..6db1834d1672227dbdfcd42b1b62d1b6982cedbb 100644
--- a/projects/nshmp-apps/src/app/ncm/ncm.routes.ts
+++ b/projects/nshmp-apps/src/app/ncm/ncm.routes.ts
@@ -1,6 +1,11 @@
 import {Routes} from '@angular/router';
 
 const routes: Routes = [
+  {
+    loadComponent: () =>
+      import('./dashboard/app.component').then(com => com.AppComponent),
+    path: '',
+  },
   {
     loadComponent: () =>
       import('./geophysical-profiles/app.component').then(
diff --git a/projects/nshmp-apps/src/app/source/dashboard/app.component.html b/projects/nshmp-apps/src/app/source/dashboard/app.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..a39713d9b34abad6f55e9e2bc11c1a30c7676772
--- /dev/null
+++ b/projects/nshmp-apps/src/app/source/dashboard/app.component.html
@@ -0,0 +1,19 @@
+<nshmp-lib-ng-template #template [navigationList]="navigationList" [title]="">
+  <!-- Dashboard -->
+  <nshmp-lib-ng-dashboard [sections]="sections">
+    <nshmp-lib-ng-dashboard-title>
+      USGS Earthquake Hazard Toolbox:
+      <br />
+      Source Model Applications
+    </nshmp-lib-ng-dashboard-title>
+    <nshmp-lib-ng-dashboard-description />
+  </nshmp-lib-ng-dashboard>
+
+  <!-- About page -->
+  <nshmp-lib-ng-about-page>
+    <nshmp-lib-ng-about-content
+      [showSavingSettingPanel]="false"
+      [showUsingApplicationPanel]="false"
+    />
+  </nshmp-lib-ng-about-page>
+</nshmp-lib-ng-template>
diff --git a/projects/nshmp-apps/src/app/source/dashboard/app.component.scss b/projects/nshmp-apps/src/app/source/dashboard/app.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/projects/nshmp-apps/src/app/source/dashboard/app.component.spec.ts b/projects/nshmp-apps/src/app/source/dashboard/app.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..10ce8a0027da801bcb011e66163c0de975d46b49
--- /dev/null
+++ b/projects/nshmp-apps/src/app/source/dashboard/app.component.spec.ts
@@ -0,0 +1,30 @@
+import {provideHttpClient} from '@angular/common/http';
+import {ComponentFixture, TestBed} from '@angular/core/testing';
+import {provideNoopAnimations} from '@angular/platform-browser/animations';
+import {provideRouter} from '@angular/router';
+
+import {AppComponent} from './app.component';
+
+describe('AppComponent', () => {
+  let component: AppComponent;
+  let fixture: ComponentFixture<AppComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [AppComponent],
+      providers: [
+        provideHttpClient(),
+        provideNoopAnimations(),
+        provideRouter([]),
+      ],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(AppComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/projects/nshmp-apps/src/app/source/dashboard/app.component.ts b/projects/nshmp-apps/src/app/source/dashboard/app.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..a19b283acfda3311353dbc7c031970ef15598f1a
--- /dev/null
+++ b/projects/nshmp-apps/src/app/source/dashboard/app.component.ts
@@ -0,0 +1,47 @@
+import {Component} from '@angular/core';
+import {
+  NshmpLibNgAboutContentComponent,
+  NshmpLibNgAboutPageComponent,
+} from '@ghsc/nshmp-lib-ng/about';
+import {
+  ApplicationSections,
+  NshmpLibNgDashboardComponent,
+  NshmpLibNgDashboardDescriptionComponent,
+  NshmpLibNgDashboardTitleComponent,
+  NshmpLibNgTemplateComponent,
+} from '@ghsc/nshmp-lib-ng/nshmp';
+import {
+  navigation,
+  sourceModelApps,
+} from 'projects/nshmp-apps/src/shared/utils/navigation.utils';
+
+@Component({
+  imports: [
+    NshmpLibNgTemplateComponent,
+    NshmpLibNgAboutPageComponent,
+    NshmpLibNgDashboardComponent,
+    NshmpLibNgDashboardTitleComponent,
+    NshmpLibNgDashboardDescriptionComponent,
+    NshmpLibNgAboutContentComponent,
+  ],
+  selector: 'app-app',
+  standalone: true,
+  styleUrl: './app.component.scss',
+  templateUrl: './app.component.html',
+})
+export class AppComponent {
+  /** Navigation list for menu */
+  navigationList = navigation();
+
+  sections: ApplicationSections[] = [
+    {
+      gridClass: 'grid-col-10',
+      sections: [
+        {
+          applications: sourceModelApps().map(navigation => ({navigation})),
+          gridClass: 'grid-col-12 tablet-lg:grid-col-8 grid-offset-1',
+        },
+      ],
+    },
+  ];
+}
diff --git a/projects/nshmp-apps/src/app/source/source.routes.ts b/projects/nshmp-apps/src/app/source/source.routes.ts
index 36e53d53bbf319fb4fc9ff83332325089d2da692..5054debe490160c7202507414ec78e7c83a7cd27 100644
--- a/projects/nshmp-apps/src/app/source/source.routes.ts
+++ b/projects/nshmp-apps/src/app/source/source.routes.ts
@@ -2,6 +2,11 @@ import {Routes} from '@angular/router';
 
 /** Routes for source model applications */
 const routes: Routes = [
+  {
+    loadComponent: () =>
+      import('./dashboard/app.component').then(com => com.AppComponent),
+    path: '',
+  },
   // model maps application
   {
     loadComponent: () =>
diff --git a/projects/nshmp-apps/src/shared/models/applications.model.ts b/projects/nshmp-apps/src/shared/models/applications.model.ts
index b5f1244072365aaea6c44c262ec04bea4dd981cb..e308e0beaf0deae6f01015b312c107283b61c787 100644
--- a/projects/nshmp-apps/src/shared/models/applications.model.ts
+++ b/projects/nshmp-apps/src/shared/models/applications.model.ts
@@ -70,6 +70,8 @@ export interface DevHazardApplications {
  * ERP design maps applications.
  */
 export interface DesignMapsApplications {
+  /** Design map dashboard */
+  dashboard: Navigation;
   rtgm: Navigation;
 }
 
@@ -105,6 +107,8 @@ export interface HazardApplications {
  * NCM applications.
  */
 export interface NcmApplications {
+  /** NCM dashboard */
+  dashboard: Navigation;
   /** Geophysical profiles application */
   geophysicalProfiles: Navigation;
 }
@@ -113,6 +117,8 @@ export interface NcmApplications {
  * Source applications
  */
 export interface SourceApplications {
+  /** Source model dashboard */
+  dashboard: Navigation;
   /** Data mapping application */
   data: Navigation;
   /** Magnitude frequency distribution application */
diff --git a/projects/nshmp-apps/src/shared/utils/applications.utils.ts b/projects/nshmp-apps/src/shared/utils/applications.utils.ts
index 2bcd035fdca30eb2666a1ed1fc2dcd2b7920dd9e..64c22fdcd6ab4d1e8cf5b1b30363bd097b8fbc53 100644
--- a/projects/nshmp-apps/src/shared/utils/applications.utils.ts
+++ b/projects/nshmp-apps/src/shared/utils/applications.utils.ts
@@ -13,6 +13,11 @@ export function apps(): Applications {
       routerLink: '/',
     },
     designMaps: {
+      dashboard: {
+        display: 'Design Maps Dashboard',
+        routerLink: '/designmaps',
+        showInDashboard: false,
+      },
       rtgm: {
         display: 'Risk-Targeted Ground Motion',
         routerLink: '/designmaps/rtgm',
@@ -57,6 +62,11 @@ export function apps(): Applications {
       },
     },
     ncm: {
+      dashboard: {
+        display: 'NCM Dashboard',
+        routerLink: '/ncm',
+        showInDashboard: false,
+      },
       geophysicalProfiles: {
         display: 'NCM Geophysical Profiles',
         routerLink: '/ncm/geophysical-profiles',
@@ -67,6 +77,11 @@ export function apps(): Applications {
       routerLink: '/services',
     },
     source: {
+      dashboard: {
+        display: 'Source Model Dashboard',
+        routerLink: '/source',
+        showInDashboard: false,
+      },
       data: {
         display: 'Model Maps',
         routerLink: '/source/model-maps',