diff --git a/projects/nshmp-apps/src/app/dev/gmm/dashboard/app.component.html b/projects/nshmp-apps/src/app/dev/gmm/dashboard/app.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..389a2c0fdcf728e3193e7472f0deb41ebd34c4a2
--- /dev/null
+++ b/projects/nshmp-apps/src/app/dev/gmm/dashboard/app.component.html
@@ -0,0 +1,21 @@
+<nshmp-lib-ng-template #template [navigationList]="navigationList" [title]="">
+  <!-- Dashboard -->
+  <nshmp-lib-ng-dashboard [sections]="sections">
+    <nshmp-lib-ng-dashboard-title>
+      USGS Development
+      <br />
+      Earthquake Hazard Toolbox:
+      <br />
+      Ground Motion 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/dev/gmm/dashboard/app.component.scss b/projects/nshmp-apps/src/app/dev/gmm/dashboard/app.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/projects/nshmp-apps/src/app/dev/gmm/dashboard/app.component.spec.ts b/projects/nshmp-apps/src/app/dev/gmm/dashboard/app.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..10ce8a0027da801bcb011e66163c0de975d46b49
--- /dev/null
+++ b/projects/nshmp-apps/src/app/dev/gmm/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/dev/gmm/dashboard/app.component.ts b/projects/nshmp-apps/src/app/dev/gmm/dashboard/app.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f7275a6cdd22b5560f1a63ab313e848b4518eaa6
--- /dev/null
+++ b/projects/nshmp-apps/src/app/dev/gmm/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 {
+  devGmmApps,
+  devNavigation,
+} 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 = devNavigation();
+
+  sections: ApplicationSections[] = [
+    {
+      gridClass: 'grid-col-10',
+      sections: [
+        {
+          applications: devGmmApps().map(navigation => ({navigation})),
+          gridClass: 'grid-col-12 tablet-lg:grid-col-8 grid-offset-1',
+        },
+      ],
+    },
+  ];
+}
diff --git a/projects/nshmp-apps/src/app/dev/gmm/gmm.routes.ts b/projects/nshmp-apps/src/app/dev/gmm/gmm.routes.ts
index 2535e4b485a8ab2fc24ade03ba70dde0efa02051..8cf6b0c4c4d5415c6cd5f015952d9e885e82b9df 100644
--- a/projects/nshmp-apps/src/app/dev/gmm/gmm.routes.ts
+++ b/projects/nshmp-apps/src/app/dev/gmm/gmm.routes.ts
@@ -2,6 +2,11 @@ import {Routes} from '@angular/router';
 
 /** Routes for dev GMM applications */
 const routes: Routes = [
+  {
+    loadComponent: () =>
+      import('./dashboard/app.component').then(com => com.AppComponent),
+    path: '',
+  },
   {
     loadComponent: () =>
       import('./hanging-wall-effects/app.component').then(
diff --git a/projects/nshmp-apps/src/app/dev/hazard/dashboard/app.component.html b/projects/nshmp-apps/src/app/dev/hazard/dashboard/app.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..389d2a21b6a519e7dcffea32e4e9fb05f75f8064
--- /dev/null
+++ b/projects/nshmp-apps/src/app/dev/hazard/dashboard/app.component.html
@@ -0,0 +1,21 @@
+<nshmp-lib-ng-template #template [navigationList]="navigationList" [title]="">
+  <!-- Dashboard -->
+  <nshmp-lib-ng-dashboard [sections]="sections">
+    <nshmp-lib-ng-dashboard-title>
+      USGS Development
+      <br />
+      Earthquake Hazard Toolbox:
+      <br />
+      Hazard 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/dev/hazard/dashboard/app.component.scss b/projects/nshmp-apps/src/app/dev/hazard/dashboard/app.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/projects/nshmp-apps/src/app/dev/hazard/dashboard/app.component.spec.ts b/projects/nshmp-apps/src/app/dev/hazard/dashboard/app.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..10ce8a0027da801bcb011e66163c0de975d46b49
--- /dev/null
+++ b/projects/nshmp-apps/src/app/dev/hazard/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/dev/hazard/dashboard/app.component.ts b/projects/nshmp-apps/src/app/dev/hazard/dashboard/app.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..6c827f6c1f7870aed51cb846af146f98848d0659
--- /dev/null
+++ b/projects/nshmp-apps/src/app/dev/hazard/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 {
+  devHazardApps,
+  devNavigation,
+} 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 = devNavigation();
+
+  sections: ApplicationSections[] = [
+    {
+      gridClass: 'grid-col-10',
+      sections: [
+        {
+          applications: devHazardApps().map(navigation => ({navigation})),
+          gridClass: 'grid-col-12 tablet-lg:grid-col-8 grid-offset-1',
+        },
+      ],
+    },
+  ];
+}
diff --git a/projects/nshmp-apps/src/app/dev/hazard/hazard.routes.ts b/projects/nshmp-apps/src/app/dev/hazard/hazard.routes.ts
index 5e7bea6247cfd40f5d9165367d3cae50b7e445bf..8b81c2fb12be005c071b24373c9e9796e04f7fe4 100644
--- a/projects/nshmp-apps/src/app/dev/hazard/hazard.routes.ts
+++ b/projects/nshmp-apps/src/app/dev/hazard/hazard.routes.ts
@@ -5,6 +5,11 @@ import {DynamicHazardCompareGuard} from './dynamic-compare/guards/dynamic-hazard
 
 /** Routes for dev hazard applications */
 const routes: Routes = [
+  {
+    loadComponent: () =>
+      import('./dashboard/app.component').then(com => com.AppComponent),
+    path: '',
+  },
   {
     canActivate: [() => inject(DynamicHazardCompareGuard).canActivate()],
     loadComponent: () =>
diff --git a/projects/nshmp-apps/src/app/dev/math/dashboard/app.component.html b/projects/nshmp-apps/src/app/dev/math/dashboard/app.component.html
new file mode 100644
index 0000000000000000000000000000000000000000..56569f555f18ce131d8497a4bdff82c980f01160
--- /dev/null
+++ b/projects/nshmp-apps/src/app/dev/math/dashboard/app.component.html
@@ -0,0 +1,21 @@
+<nshmp-lib-ng-template #template [navigationList]="navigationList" [title]="">
+  <!-- Dashboard -->
+  <nshmp-lib-ng-dashboard [sections]="sections">
+    <nshmp-lib-ng-dashboard-title>
+      USGS Development
+      <br />
+      Earthquake Hazard Toolbox:
+      <br />
+      Math 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/dev/math/dashboard/app.component.scss b/projects/nshmp-apps/src/app/dev/math/dashboard/app.component.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/projects/nshmp-apps/src/app/dev/math/dashboard/app.component.spec.ts b/projects/nshmp-apps/src/app/dev/math/dashboard/app.component.spec.ts
new file mode 100644
index 0000000000000000000000000000000000000000..10ce8a0027da801bcb011e66163c0de975d46b49
--- /dev/null
+++ b/projects/nshmp-apps/src/app/dev/math/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/dev/math/dashboard/app.component.ts b/projects/nshmp-apps/src/app/dev/math/dashboard/app.component.ts
new file mode 100644
index 0000000000000000000000000000000000000000..9ecce1d8a5c240c168ede347467a98795a37ec69
--- /dev/null
+++ b/projects/nshmp-apps/src/app/dev/math/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 {
+  devMathApps,
+  devNavigation,
+} 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 = devNavigation();
+
+  sections: ApplicationSections[] = [
+    {
+      gridClass: 'grid-col-10',
+      sections: [
+        {
+          applications: devMathApps().map(navigation => ({navigation})),
+          gridClass: 'grid-col-12 tablet-lg:grid-col-8 grid-offset-1',
+        },
+      ],
+    },
+  ];
+}
diff --git a/projects/nshmp-apps/src/app/dev/math/exceedance-explorer/app.component.ts b/projects/nshmp-apps/src/app/dev/math/exceedance-explorer/app.component.ts
index 6fe0117fb816c6108fe8b50393385d60f049c6c4..9040ede33913c0edc4eaf313b8a09df7ddc4434e 100644
--- a/projects/nshmp-apps/src/app/dev/math/exceedance-explorer/app.component.ts
+++ b/projects/nshmp-apps/src/app/dev/math/exceedance-explorer/app.component.ts
@@ -42,5 +42,5 @@ export class AppComponent {
   /** Navigation list for menu */
   navigationList = devNavigation();
   /** Application title */
-  title = devApps().exceedanceExplorer.display;
+  title = devApps().math.exceedanceExplorer.display;
 }
diff --git a/projects/nshmp-apps/src/app/dev/math/math.routes.ts b/projects/nshmp-apps/src/app/dev/math/math.routes.ts
index ce59f47f59015c626730f7554c4d1b23600a7397..864c1b0afa667f76e57eb52764ca88c67b0e089f 100644
--- a/projects/nshmp-apps/src/app/dev/math/math.routes.ts
+++ b/projects/nshmp-apps/src/app/dev/math/math.routes.ts
@@ -2,6 +2,11 @@ import {Routes} from '@angular/router';
 
 /** Routes for math applications */
 const routes: Routes = [
+  {
+    loadComponent: () =>
+      import('./dashboard/app.component').then(com => com.AppComponent),
+    path: '',
+  },
   {
     loadComponent: () =>
       import('./exceedance-explorer/app.component').then(