diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx
new file mode 100644
index 0000000..27f6118
--- /dev/null
+++ b/src/app/admin/page.tsx
@@ -0,0 +1,199 @@
+import type { Metadata } from 'next';
+import Link from 'next/link';
+import { Section } from '@/components/Section';
+import { bookingCatalog, formatPoundsFromCents } from '@/lib/booking';
+import { contentPages, site, featuredProperties } from '@/lib/site';
+
+const adminAreas = [
+ {
+ id: 'properties',
+ title: 'Properties',
+ description: 'Create, publish, and maintain the public inventory.',
+ actions: ['Create property', 'Edit details', 'Publish / unpublish', 'Archive property'],
+ },
+ {
+ id: 'pricing',
+ title: 'Availability and pricing',
+ description: 'Set rules that control quoting, seasonal pricing, and holds.',
+ actions: ['Add pricing rule', 'Add availability block', 'Override season rate', 'Review hold expiry'],
+ },
+ {
+ id: 'bookings',
+ title: 'Bookings and payments',
+ description: 'Track payment truth, booking states, and recovery steps.',
+ actions: ['Review booking state', 'Inspect payment record', 'Reconcile webhook event', 'Confirm notification'],
+ },
+ {
+ id: 'content',
+ title: 'Content and testimonials',
+ description: 'Edit the public copy without altering the booking model.',
+ actions: ['Edit page copy', 'Publish FAQ update', 'Manage testimonials', 'Adjust SEO metadata'],
+ },
+ {
+ id: 'settings',
+ title: 'Site settings',
+ description: 'Keep the business name, contact details, and booking rules aligned.',
+ actions: ['Update contact details', 'Adjust booking hold', 'Update defaults', 'Review guardrails'],
+ },
+];
+
+const managementNotes = [
+ 'Admin access is scoped to the back office surface and is expected to require login before mutation actions are enabled.',
+ 'Booking and payment records remain read-only truth sources until the webhook flow validates them.',
+ 'Availability and pricing overrides should always be visible in the admin UI before they affect the public quote path.',
+];
+
+export const metadata: Metadata = {
+ title: `Admin console | ${site.name}`,
+ description: 'Admin console planning surface for properties, bookings, pricing, content, and settings.',
+};
+
+export default function AdminPage() {
+ return (
+ <>
+
+
Admin console
+
Operations control room for Holiday Property Booking
+
+ This console gives the day-to-day shape for managing properties, pricing, bookings, content, and settings
+ without weakening the payment truth model.
+
+
+
+
+
Published properties
+ {featuredProperties.length}
+ Catalog entries available to guests
+
+
+
Booking rules
+ {bookingCatalog.reduce((sum, property) => sum + property.seasonalRates.length + property.availabilityBlocks.length, 0)}
+ Seasonal and availability overrides captured
+
+
+
Editable pages
+ {contentPages.length}
+ Public content routes ready for editing
+
+