<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>The Grand Project — Platform Overview</title>
<style>
:root{--bg:#07111f;--panel:#102238;--panel2:#0c1a2b;--ink:#eef7ff;--muted:#aac0d4;--line:#2d4e6e;--blue:#4dc8ff;--green:#74e3b4;--gold:#ffd06d;--purple:#c49bff;--red:#ff8a8a;--radius:18px;--shadow:0 18px 50px rgba(0,0,0,.28)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(circle at 10% 0%,rgba(77,200,255,.13),transparent 30rem),radial-gradient(circle at 100% 15%,rgba(116,227,180,.09),transparent 28rem),var(--bg);color:var(--ink);font:16px/1.6 Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}.wrap{width:min(1180px,calc(100% - 36px));margin:auto}.hero{padding:76px 0 42px}.hero-grid{display:grid;grid-template-columns:1.5fr .8fr;gap:24px;align-items:end}.eyebrow{display:inline-block;padding:7px 12px;border:1px solid var(--line);border-radius:999px;color:var(--green);background:rgba(16,34,56,.7);font-size:.8rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}h1{font-size:clamp(2.7rem,7vw,5.6rem);line-height:.98;margin:20px 0}h2{font-size:clamp(1.8rem,3vw,2.5rem);line-height:1.15;margin:0 0 16px}h3{margin:0 0 8px;font-size:1.06rem}p{margin:0 0 14px}.lead,.section-intro,.card p,.small{color:var(--muted)}.lead{max-width:850px;font-size:1.15rem}.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.stat,.card,.diagram,.callout{background:linear-gradient(180deg,rgba(16,34,56,.98),rgba(12,26,43,.98));border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.stat{padding:18px}.stat strong{display:block;font-size:2rem;color:var(--blue)}section{padding:34px 0}.section-intro{max-width:850px;margin-bottom:22px}.diagram{padding:24px;overflow-x:auto}.layers{min-width:840px;display:grid;gap:12px}.layer{display:grid;grid-template-columns:180px 1fr;gap:16px}.layer-label{display:flex;align-items:center;padding:18px;border-radius:14px;border:1px solid var(--line);background:rgba(7,17,31,.65);font-weight:900}.layer-content{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.node{min-height:74px;display:flex;align-items:center;justify-content:center;text-align:center;padding:12px;border-radius:12px;border:1px solid var(--line);background:rgba(16,34,56,.78);font-weight:750}.identity .layer-label,.identity .node{border-color:rgba(77,200,255,.55)}.framework .layer-label,.framework .node{border-color:rgba(116,227,180,.55)}.services .layer-label,.services .node{border-color:rgba(255,208,109,.55)}.apps .layer-label,.apps .node{border-color:rgba(196,155,255,.55)}.arrow-down{text-align:center;color:var(--muted);font-size:1.4rem;line-height:1}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.card{padding:20px}.core-list{columns:2;column-gap:32px;margin:0;padding-left:20px}.core-list li{break-inside:avoid;margin:0 0 8px;color:var(--muted)}.dependency{display:grid;grid-template-columns:1fr auto 1fr;gap:18px;align-items:center;padding:22px;border:1px solid var(--line);border-radius:var(--radius);background:rgba(12,26,43,.9)}.dependency .box{padding:20px;border-radius:14px;background:var(--panel);border:1px solid var(--line)}.dependency .arrow{font-size:2rem;color:var(--green);font-weight:900}.pipeline{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));gap:8px;overflow-x:auto;padding-bottom:8px}.step{text-align:center;padding:16px 10px;border-radius:12px;border:1px solid var(--line);background:var(--panel);font-weight:800}.backup{border-color:var(--gold);color:var(--gold)}.restore{border-color:var(--red);color:var(--red)}.manifest{display:grid;grid-template-columns:1fr 1fr;gap:16px}.callout{padding:22px;border-left:4px solid var(--green)}pre{margin:0;padding:20px;overflow:auto;border-radius:14px;background:#050b13;border:1px solid var(--line);color:#dff5ff;font:13px/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}footer{padding:48px 0 64px;color:var(--muted);text-align:center}.small{font-size:.9rem}.tag{display:inline-block;padding:4px 9px;border-radius:999px;border:1px solid var(--line);font-size:.78rem;color:var(--blue);margin-bottom:10px}
@media(max-width:900px){.hero-grid,.manifest{grid-template-columns:1fr}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.core-list{columns:1}}@media(max-width:620px){.grid,.stats{grid-template-columns:1fr}.dependency{grid-template-columns:1fr;text-align:center}.dependency .arrow{transform:rotate(90deg)}}@media print{:root{--bg:#fff;--panel:#fff;--panel2:#f4f7fa;--ink:#122033;--muted:#53657a;--line:#cbd6df}body{background:#fff}.stat,.card,.diagram,.callout{box-shadow:none}}
.plugin-card .eyebrow,
.plugin-card .badge,
.plugin-card .label,
.plugin-card .tag {
display: none !important;
}
</style>
</head>
<body>
<header class="hero"><div class="wrap hero-grid"><div><span class="eyebrow">The Grand Project</span><h1>One platform. Many applications. Shared foundations.</h1><p class="lead">The Grand Project is a modular web-application ecosystem spanning multiple domains and subdomains. A central authentication service, common application framework and reusable platform services support independently installed business applications and specialised plugins.</p></div><div class="stats"><div class="stat"><strong>13</strong><span>core platform services</span></div><div class="stat"><strong>15</strong><span>application plugins</span></div><div class="stat"><strong>10</strong><span>asset-class plugins</span></div><div class="stat"><strong>1</strong><span>shared identity layer</span></div></div></div></header>
<main>
<section><div class="wrap"><h2>Grand Project layers</h2><p class="section-intro">Identity sits at the top, the Common Application Framework supplies the runtime, shared services provide reusable capabilities, and installable applications deliver business functionality.</p><div class="diagram"><div class="layers"><div class="layer identity"><div class="layer-label">Identity layer</div><div class="layer-content"><div class="node">Central Authentication</div><div class="node">Single Sign-On</div><div class="node">Users, Roles & Permissions</div><div class="node">Google / Apple Login</div></div></div><div class="arrow-down">↓</div><div class="layer framework"><div class="layer-label">Framework layer</div><div class="layer-content"><div class="node">Templating & UI</div><div class="node">Routing, Forms & Validation</div><div class="node">Plugin Runtime & Manifests</div><div class="node">Installer, Updater & Recovery</div></div></div><div class="arrow-down">↓</div><div class="layer services"><div class="layer-label">Shared services</div><div class="layer-content"><div class="node">Companies & Relationships</div><div class="node">Files, PDFs & Notifications</div><div class="node">API, Jobs, Audit & Monitoring</div><div class="node">AI Agent Integration</div></div></div><div class="arrow-down">↓</div><div class="layer apps"><div class="layer-label">Application layer</div><div class="layer-content"><div class="node">Asset Registry</div><div class="node">ServiceVault incl. Customer & Technician Portals</div><div class="node">Commerce, Sales & Inventory</div><div class="node">OpsRoom, BI & Website Builder</div></div></div></div></div></div></section>
<section><div class="wrap"><h2>Core platform projects</h2><p class="section-intro">The core provides reusable capabilities. Applications consume them through framework services and secure APIs instead of rebuilding the same plumbing until everyone forgets which copy is authoritative.</p><div class="card"><ul class="core-list"><li>Central Authentication Service</li><li>Common Application Framework</li><li>Central Administration Portal</li><li>Company & Relationship Service</li><li>File & Document Service</li><li>Notification & Communications Service</li><li>PDF & Report Engine</li><li>Audit & Logging Service</li><li>Background Jobs & Scheduler</li><li>API & Integration Service</li><li>Application & Plugin Registry</li><li>Monitoring, Backup & Recovery</li><li>AI Agent Integration Service</li></ul></div></div></section>
<section><div class="wrap"><h2>Common Application Framework</h2><div class="grid"><article class="card"><h3>Application runtime</h3><p>Standard routing, controllers, services, models, templates, API endpoints, jobs, events, tests and configuration.</p></article><article class="card"><h3>Security by default</h3><p>SSO integration, tenant context, server-side permissions, CSRF protection, secure sessions, validation, rate limiting and audit logging.</p></article><article class="card"><h3>Shared services</h3><p>Files, PDFs, notifications, background jobs, search, APIs, AI-agent tools and application-to-application events.</p></article><article class="card"><h3>Plugin lifecycle</h3><p>Install, configure, enable, update, disable and remove plugins while preserving historical records where required.</p></article><article class="card"><h3>Automatic updates</h3><p>Signed packages, compatibility checks, dependency resolution, pre-update backups, migrations and automated health checks.</p></article><article class="card"><h3>Instant recovery</h3><p>Automatic rollback after failed updates and an independent recovery utility that works even when the main framework cannot start.</p></article></div></div></section>
<section><div class="wrap"><h2>Application plugins</h2><p class="section-intro">Each application is independently versioned and declares dependencies, capabilities, permissions, migrations, health checks and rollback details in its manifest.</p><div class="grid">
<article class="card"><span class="tag"></span><h3>Asset Registry</h3><p>Authoritative assets, properties, locations, maintenance definitions, manuals, warranties, QR identities, relationships and lifecycle history.</p></article>
<article class="card"><h3>Developer Platform</h3><p>Scaffolding, diagnostics, migrations, deployment tooling, testing support and developer documentation.</p></article>
<article class="card"><span class="tag">Requires Asset Registry</span><h3>ServiceVault</h3><p>Service requests, work orders, technician assignments, site visits, maintenance completion and service reports.</p></article>
<article class="card"><h3>OpsRoom</h3><p>Internal operations, projects, procedures, documents, workflows and business knowledge.</p></article>
<article class="card"><h3>Customer Portal</h3><p>Customer access to authorised assets, reports, files, requests, invoices, notifications and account details.</p></article>
<article class="card"><h3>Technician Portal</h3><p>Field-service access for technicians and third-party contractors, including jobs, readings, photos, signatures and service history.</p></article>
<article class="card"><h3>Partner Portal</h3><p>Partner, distributor and reseller access to authorised products, pricing, documents, orders and shared records.</p></article>
<article class="card"><h3>Business Intelligence & Reporting</h3><p>Dashboards, KPIs, analytics, cross-application reporting, trends and exports.</p></article>
<article class="card"><h3>Website Builder</h3><p>Websites, pages, themes, menus, forms, reusable content blocks, media, SEO, publishing and domains.</p></article>
<article class="card"><h3>E-commerce</h3><p>Products, variants, categories, carts, checkout, orders, discounts, shipping, tax, returns and refunds. Requires Products, Suppliers, Payments & Billing, and Invoice Generation. Optionally integrates with Inventory Tracking, Order Processing and Website Builder.</p></article>
<article class="card"><h3>Payments & Billing</h3><p>Stripe, PayPal and future payment-provider integrations for deposits, payment links, subscriptions, refunds and reconciliation. Requires Invoice Generation and supports secure Xero API integration for accounting synchronisation.</p></article>
<article class="card"><h3>Invoice Generation</h3><p>Invoices, credit notes, statements, tax handling, numbering, PDF output, email delivery and payment status.</p></article>
<article class="card"><h3>Lead Pipeline</h3><p>Leads, opportunities, quotes, estimates, revisions, approvals, deposits and conversion into jobs, orders, projects or invoices.</p></article>
<article class="card"><h3>Project Tendering</h3><p>Tender registers, scope breakdowns, pricing, deadlines, clarifications, compliance documents, approvals and submission packs.</p></article>
<article class="card"><h3>Inventory Tracking</h3><p>Stock across warehouses, stores, vehicles, technicians and other locations, including transfers, serials, batches and reorder alerts. Requires Products.</p></article>
</div></div></section>
<section><div class="wrap"><h2>ServiceVault dependency</h2><div class="dependency"><div class="box"><h3>Asset Registry</h3><p>Owns the authoritative asset, property, location, specification, manual, warranty, maintenance, QR and lifecycle records.</p></div><div class="arrow">→</div><div class="box"><h3>ServiceVault</h3><p>Owns service requests, work orders, technicians, site visits, maintenance completion, reports and customer communications.</p></div></div><p class="small" style="margin-top:12px">ServiceVault declares Asset Registry as a required manifest dependency. Asset Registry must be installed first and cannot be disabled while ServiceVault remains enabled.</p></div></section>
<section><div class="wrap"><h2>Key dependency: Payments & Billing</h2><div class="dependency"><div class="box"><h3>Invoice Generation</h3><p>Creates invoices, credit notes, statements, tax calculations, numbering, PDFs, delivery records and payment status.</p></div><div class="arrow">→</div><div class="box"><h3>Payments & Billing</h3><p>Processes payments through Stripe, PayPal and future providers, including deposits, payment links, subscriptions, refunds and reconciliation. It can also connect to Xero through the Xero API to synchronise accounting records.</p></div></div><p class="small" style="margin-top:12px">Payments & Billing has Invoice Generation as a required manifest dependency. The framework must install Invoice Generation first, prevent it being disabled while Payments & Billing is enabled, and verify compatibility during updates.</p></div></section><section><div class="wrap"><h2>Xero accounting integration</h2>
<div class="grid"> <article class="card"><h3>Secure connection</h3><p>Connects authorised companies to Xero through OAuth-based API access. Credentials and tokens are stored using the Grand Project secret-management and audit systems.</p></article> <article class="card"><h3>Data synchronisation</h3><p>Supports synchronisation of customers/contacts, invoices, credit notes, payments, refunds, tax information and payment references, subject to configured permissions and mapping rules.</p></article> <article class="card"><h3>Reconciliation</h3><p>Links Grand Project payment transactions to Xero accounting records, records sync status and failures, and avoids creating duplicate records through external IDs and idempotent processing.</p></article>
</div>
<p class="small" style="margin-top:12px">Invoice Generation remains the source of Grand Project invoice records. Payments & Billing handles payment-provider activity and the Xero connection. Xero is an external accounting system, not the authoritative source for Grand Project application state.</p>
</div></section><section>
<div class="wrap">
<h2>Plugin dependency map</h2>
<p class="section-intro">
Dependencies are declared in each plugin manifest and resolved by the framework before install, enable, disable or update operations.
Required dependencies are kept deliberately minimal; useful but non-essential integrations remain optional.
</p>
<div class="diagram">
<div class="layers">
<div class="layer apps">
<div class="layer-label">Service</div>
<div class="layer-content">
<div class="node">Asset Registry</div>
<div class="node">→</div>
<div class="node">ServiceVault</div>
<div class="node">Customer + Technician Portals inside ServiceVault</div>
</div>
</div>
<div class="layer services">
<div class="layer-label">Product & Stock</div>
<div class="layer-content">
<div class="node">Products</div>
<div class="node">→</div>
<div class="node">Inventory Tracking</div>
<div class="node">→ Order Processing</div>
</div>
</div>
<div class="layer services">
<div class="layer-label">Commerce</div>
<div class="layer-content">
<div class="node">Products → E-commerce</div>
<div class="node">Suppliers → E-commerce</div>
<div class="node">Invoice Generation → Payments & Billing</div>
<div class="node">Payments & Billing + Invoice Generation → E-commerce</div>
</div>
</div>
<div class="layer framework">
<div class="layer-label">Sales & Supply</div>
<div class="layer-content">
<div class="node">Suppliers → Supplier Portal</div>
<div class="node">Lead Pipeline: no hard plugin dependency</div>
<div class="node">Project Tendering: optional Lead Pipeline integration</div>
<div class="node">Partner Portal: relationship-driven access</div>
</div>
</div>
</div>
</div>
<div class="grid" style="margin-top:16px">
<article class="card">
<h3>Required dependencies</h3>
<ul>
<li><strong>ServiceVault</strong> → Asset Registry</li>
<li><strong>Inventory Tracking</strong> → Products</li>
<li><strong>Order Processing</strong> → Inventory Tracking</li>
<li><strong>Payments & Billing</strong> → Invoice Generation</li>
<li><strong>E-commerce</strong> → Products + Suppliers + Payments & Billing + Invoice Generation</li>
<li><strong>Supplier Portal</strong> → Suppliers</li>
</ul>
</article>
<article class="card">
<h3>Important optional integrations</h3>
<ul>
<li><strong>Lead Pipeline</strong> ↔ Suppliers, Products, Project Tendering, Invoice Generation, Order Processing</li>
<li><strong>E-commerce</strong> ↔ Inventory Tracking, Order Processing, Website Builder</li>
<li><strong>ServiceVault</strong> ↔ Products, Inventory Tracking, Invoice Generation, Payments & Billing</li>
<li><strong>Products</strong> ↔ Suppliers</li>
<li><strong>Project Tendering</strong> ↔ Lead Pipeline, Products, Suppliers, Invoice Generation</li>
</ul>
</article>
</div>
</div>
</section><section><div class="wrap"><h2>Update and recovery transaction</h2><p class="section-intro">Framework and plugin updates are handled as controlled transactions. No update proceeds without a valid restore point.</p><div class="pipeline"><div class="step">Check</div><div class="step">Resolve dependencies</div><div class="step">Verify signature</div><div class="step backup">Create backup</div><div class="step">Apply files & migrations</div><div class="step">Run health checks</div><div class="step restore">Rollback on failure</div></div></div></section>
<section><div class="wrap"><h2>Manifest and dependency model</h2><div class="manifest"><div class="callout"><h3>The manifest is authoritative</h3><p>It defines what a plugin is, what it provides, what it requires, its compatible framework range, permissions, routes, migrations, events, health checks and rollback behaviour.</p><p>Dependencies may be required, optional, recommended, conflicting or capability-based.</p></div><pre>id: servicevault
name: ServiceVault
package: grand-project/servicevault
version: 1.0.0 framework: minimum_version: 1.0.0 dependencies: required: - id: asset-registry package: grand-project/asset-registry minimum_version: 1.0.0 auto_install: true permissions: - service.requests.read - service.requests.write - service.reports.create</pre></div></div></section>
<section><div class="wrap"><h2>Asset Registry extension layer</h2><p class="section-intro">Asset Registry is a Grand Project application with its own specialised asset-class plugin layer. Initial asset plugins include Generic Equipment, Pool, Spa, Pump, Filter, Salt Chlorinator, Chemical Dosing System, Heat Pump, HVAC and Refrigeration.</p><div class="callout"><strong>Architectural rule:</strong> Asset Registry owns what physical assets are. ServiceVault owns what service work happens to them. Inventory Tracking owns stock before it becomes an installed asset. Sales, commerce, invoicing and payments handle the commercial path around those records.</div></div></section>
</main>
<section><div class="wrap"><h2>Project folder model</h2><pre>The Grand Project/
├── Core Platform/
│ ├── Authentication/
│ ├── Common Application Framework/
│ └── Administration/
├── Core System Services/
│ ├── Update Server/
│ ├── Backup Restore Server/
│ ├── Storage Server/
│ └── Analytics Server/
└── Plugin Modules/ ├── Asset Registry/ ├── Suppliers/ ├── Products/ ├── ServiceVault/ ├── OpsRoom/ ├── Partner Portal/ ├── Supplier Portal/ ├── Business Intelligence & Reporting/ ├── Website Builder/ ├── E-commerce/ ├── Payments & Billing/ ├── Invoice Generation/ ├── Lead Pipeline/ ├── Project Tendering/ ├── Inventory Tracking/ ├── Order Processing/ └── Developer Platform/</pre></div></section><footer><div class="wrap"><p><strong>The Grand Project</strong></p><p>Core capabilities are shared. Business functionality is modular. Dependencies are explicit. Updates are reversible.</p></div></footer>
</body>
</html>