Architecture Deployment API

FlowerShop IoT Platform — Architecture

The FlowerShop IoT Platform is a multi-tenant SaaS platform connecting flower vendors with customers through IoT-enabled smart vases that display QR codes linking to bouquet information.

Key Business Concepts

Concept Description
Vendor Traditional Flower Shop (physical store) or Freelance Florist (home-based)
Smart Vase IoT device displaying QR codes; reports sensor data via MQTT
Bouquet Flower arrangement placed in a smart vase, purchasable by customers
Customer Browses nearby bouquets via map, purchases through mobile app or web
Platform Admin Manages vendors, vases, and platform analytics

Technology Stack

Layer Technology
Framework .NET 8 / ASP.NET Core
ORM Entity Framework Core 8 + PostgreSQL 15
Auth Keycloak 23.0 (OIDC, JWT)
CQRS MediatR
Validation FluentValidation (pipeline behaviour)
Cache Redis 7 (RedisCacheService)
Messaging InMemoryEventBus (RabbitMQ wired, pending EP-09)
Real-time SignalR (BouquetHub)
IoT MQTT (Mosquitto)
Payments Stripe
SMS Twilio
Portals Razor Pages (Admin, Vendor) + MVC (Customer Web App)

Architecture Layers

┌─────────────────────────────────────────┐
│  API Layer (Controllers, Middleware)    │
├─────────────────────────────────────────┤
│  Application Layer (CQRS via MediatR)  │
├─────────────────────────────────────────┤
│  Domain Layer (Aggregates, Events)     │
├─────────────────────────────────────────┤
│  Infrastructure (EF Core, Keycloak…)   │
└─────────────────────────────────────────┘

Documentation Pages

Rozanski & Woods Architecture Viewpoints

Page Contents
Functional View Functional elements, responsibilities, interfaces, and actor interactions
Information View Data structure, aggregate ownership, data lifecycles, store responsibilities
Concurrency View Processes, background services, race conditions, coordination mechanisms
Development View Source organisation, module boundaries, CQRS conventions, test strategy
Deployment View Docker topology, port map, startup dependencies, environment variables
Operational View Health checks, error handling, runbook, monitoring signals, known gaps

C4 Model

Page Contents
C4 Context System-level view: users and external systems
C4 Containers All runtime containers and their communication
C4 Components API layer internals: controllers → handlers → domain
Domain Model ER diagram of all 14 aggregates

Flow Diagrams

Page Contents
Auth Flows Keycloak OIDC, dev-token, tenant resolution, token blacklist
Customer Flows Browse, QR scan, cart, order, payment, delivery
Vendor Flows Onboarding, bouquet lifecycle, order fulfillment
Admin Flows Vendor approval, suspension, analytics
IoT Flows Vase registration, MQTT, heartbeat, sensor data
Payment Flows Stripe checkout, webhook, outbox, confirmation
Real-time Flows SignalR hub groups, outbox dispatch
Cross-cutting Middleware pipeline, caching, multi-tenancy, idempotency

API Reference

Full REST and SignalR contract: API-CONTRACTS.md

Planned Work

Upcoming epics and gap analysis: docs/tasks/