diff --git a/src/angular/frontend/src/app/components/tenant/tenant-grid/tenant-grid.component.html b/src/angular/frontend/src/app/components/tenant/tenant-grid/tenant-grid.component.html
new file mode 100644
index 0000000..e522168
--- /dev/null
+++ b/src/angular/frontend/src/app/components/tenant/tenant-grid/tenant-grid.component.html
@@ -0,0 +1,12 @@
+@if (loading()) {
+ Loading...
+} @else {
+ @for (tenant of tenants(); track tenant.id) {
+
+ {{tenant.name}}
+
+ View Details
+
+
+ }
+}
diff --git a/src/angular/frontend/src/app/components/tenant/tenant-grid/tenant-grid.component.scss b/src/angular/frontend/src/app/components/tenant/tenant-grid/tenant-grid.component.scss
new file mode 100644
index 0000000..7d02c8e
--- /dev/null
+++ b/src/angular/frontend/src/app/components/tenant/tenant-grid/tenant-grid.component.scss
@@ -0,0 +1,13 @@
+:host {
+ display: flex;
+ flex-direction: column;
+ gap: .5rem;
+
+ app-panel {
+ display: flex;
+ }
+
+ .actions {
+ margin-left: auto;
+ }
+}
diff --git a/src/angular/frontend/src/app/components/tenant/tenant-grid/tenant-grid.component.spec.ts b/src/angular/frontend/src/app/components/tenant/tenant-grid/tenant-grid.component.spec.ts
new file mode 100644
index 0000000..02d547a
--- /dev/null
+++ b/src/angular/frontend/src/app/components/tenant/tenant-grid/tenant-grid.component.spec.ts
@@ -0,0 +1,23 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+
+import { TenantGridComponent } from './tenant-grid.component';
+
+describe('TenantGridComponent', () => {
+ let component: TenantGridComponent;
+ let fixture: ComponentFixture;
+
+ beforeEach(async () => {
+ await TestBed.configureTestingModule({
+ imports: [TenantGridComponent]
+ })
+ .compileComponents();
+
+ fixture = TestBed.createComponent(TenantGridComponent);
+ component = fixture.componentInstance;
+ fixture.detectChanges();
+ });
+
+ it('should create', () => {
+ expect(component).toBeTruthy();
+ });
+});
diff --git a/src/angular/frontend/src/app/components/tenant/tenant-grid/tenant-grid.component.ts b/src/angular/frontend/src/app/components/tenant/tenant-grid/tenant-grid.component.ts
new file mode 100644
index 0000000..9816a7a
--- /dev/null
+++ b/src/angular/frontend/src/app/components/tenant/tenant-grid/tenant-grid.component.ts
@@ -0,0 +1,31 @@
+import {Component, inject, OnInit, signal} from '@angular/core';
+import {TenantService} from '../../../clients/gandalf/mithrandir/tenant/tenant.service';
+import {TenantGridViewDto} from '../../../clients/gandalf/mithrandir/tenant/dtos/tenant-grid-view-dto';
+import {PanelComponent} from '../../panel/panel.component';
+import {LinkComponent} from '../../link/link.component';
+
+@Component({
+ selector: 'app-tenant-grid',
+ imports: [
+ PanelComponent,
+ LinkComponent
+ ],
+ templateUrl: './tenant-grid.component.html',
+ styleUrl: './tenant-grid.component.scss'
+})
+export class TenantGridComponent implements OnInit {
+
+ protected tenants = signal([]);
+ protected loading = signal(true);
+
+ private tenantService = inject(TenantService);
+
+ async ngOnInit(): Promise {
+
+ const tenants = await this.tenantService.tenantsAsync();
+ this.tenants.set(tenants);
+ this.loading.set(false);
+
+ }
+
+}