Skip to main content

Architecture Overview

This section provides comprehensive documentation of the Broadford Living platform architecture, covering all major systems and design patterns.

System Architecture

┌─────────────────────────────────────────────────────────────────────────────┐
│ Clients │
├─────────────────────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Web App │ │ Mobile App │ │ SmartThings │ │ Yale │ │
│ │ (SvelteKit)│ │ (Tauri) │ │ Webhooks │ │ Webhooks │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
└─────────┼────────────────┼────────────────┼────────────────┼───────────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ Cloudflare Edge │
├─────────────────────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ bf_resident │ │ bf_auth │ │ bf_notify │ │ bf_smart │ │
│ │ Worker │ │ Worker │ │ Worker │ │ Worker │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │
│ │ │ │ │ │
│ └────────────────┴────────────────┴────────────────┘ │
│ │ │
│ ┌────────────────────────────────┼────────────────────────────────────┐ │
│ │ ▼ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌───────────┐ │ │
│ │ │ D1 │ │ Durable │ │ R2 │ │ KV │ │ │
│ │ │ Database │ │ Objects │ │ Storage │ │ Cache │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ └───────────┘ │ │
│ │ Cloudflare Storage │ │
│ └──────────────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────────────┘

Documentation Sections

Core Infrastructure

The foundational components of the platform:

  • Workers Architecture - Multi-worker design with bf_resident, bf_auth, bf_notify, and bf_smart
  • sqlx-d1 Patterns - Database abstraction for D1 and Durable Object SQLite
  • User Durable Object - Per-property isolated storage with RPC protocol

Authentication

Security and access control:

  • Clerk Authentication - JWT verification with JWKS rotation
  • Service-to-Service Auth - HMAC-based internal communication
  • Permissions - Role hierarchy and property-based access control

External Integrations

Smart device platform integrations:

  • Smart Device Abstraction - Unified SmartClient trait across platforms
  • Device Resolution - Matching internal devices to external platform IDs
  • Webhook Handling - Signature verification and event processing

Shared Types

Cross-crate type definitions:

  • bf_types Library - Shared types for all crates
  • OpenAPI Generation - TypeScript type generation for frontend

Notifications

Real-time communication:

  • Notification System - FCM push delivery with platform-specific payloads
  • Real-time Events - WebSocket infrastructure and event broadcasting

Property Lifecycle

Property and tenant management:

  • Property Lifecycle - Status state machine (Setup → Tenancy)
  • Move-In/Move-Out - Tenant transitions and data handling
  • Admin & PM Roles - Portfolio management and access control

IT Setup

Device commissioning:

  • IT Setup Flow - SmartThings/Yale/Hive configuration
  • Credential Management - Deterministic credential generation

Mobile App

Tauri-based mobile application:

  • Mobile Architecture - Tauri commands and Clerk SDK
  • OTA Updates - A/B versioning with Ed25519 signatures
  • Client Caching - Asset and credential caching

Security

Security analysis and practices:

  • Security Audit - Comprehensive security assessment
  • Secret Management - Credential storage and rotation

Key Design Principles

1. Data Isolation

Each property has its own Durable Object, ensuring complete isolation of tenant data. No cross-property data access is possible at the storage layer.

2. Platform Abstraction

The SmartClient trait abstracts away platform differences. Code that controls devices doesn't need to know whether it's talking to SmartThings, Yale, or Hive.

3. Compile-Time Safety

  • SQL queries are verified at compile time via sqlx
  • Type generation ensures frontend/backend contract alignment
  • Mock mode is compile-time excluded from production builds

4. Event-Driven Architecture

Webhooks from external platforms are processed asynchronously via queues, enabling reliable event handling without blocking API responses.