
Plan✕ is composed of a number of services which interact with each other. The multi-service architecture is designed to isolate public and private concerns, ensuring that the high-traffic public sites remain fast and secure while decoupled from the complex, data-intensive logic of the Editor and administrative tools. This split allows each service to scale independently and maintain its own strict security boundaries.
| Service | Stack | Description | Links |
|---|---|---|---|
| Plan✕ Public | React, MUI | The public-facing site that dynamically renders digital services ("flows"). It fetches service definitions from the GraphQL API and manages complex user state. | Example service (staging) / Example service (production) |
| Plan✕ Editor | React, MUI | An authenticated, low-code platform for building digital services (”flows”). It allows authorised editors to design, test, and publish planning services without writing code. Editors can also manage settings, team members, view submissions, and other admin-related tasks | Staging / Production |
| Plan✕ Storybook | Storybook | A centralised user interface component library and style guide. This ensures visual consistency and accessibility compliance across all Plan✕ frontends. | Staging / Production |
| REST API | Express | Orchestrates specialised backend services including authentication, GIS queries, GovPay integrations, file upload processing, LLM integration, and secure proxying to Ordnance Survey. | Staging / Production |
| GraphQL API | Hasura | Provides a high-performance data access layer between the client frontends and the Postgres database. It enforces granular Role-Based Access Control (RBAC). | Staging Console / Production Console |
GraphQL Endpoint (staging) / GraphQL Endpoint (production) | | ShareDB | ShareDB | A real-time operational transformation (OT) engine. This enables multiple authorised users to edit the same flow simultaneously in the Editor without conflicts. | Staging / Production | | Metabase | Metabase | A business intelligence and analytics platform. It generates the public and private dashboards used by authorities to monitor service performance and planning trends. | Staging / Production | | LocalPlanning.services | Astro, React | A static directory of services and user dashboard. It aggregates Plan✕ services across authorities and allows the public to track their applications prior to submission. | Staging / Production |
Plan✕ manages its cloud infrastructure using Pulumi, which is an “Infrastructure as Code” (IaC) platform. This approach ensures that our entire environment is reproducible, documented, and highly maintainable. It also allows us to version control our infrastructure.