Skip to content

feat: BOPS walkthrough, screenshots, and password output#127

Merged
chrisns merged 20 commits into
mainfrom
feat/bops-planning
Mar 19, 2026
Merged

feat: BOPS walkthrough, screenshots, and password output#127
chrisns merged 20 commits into
mainfrom
feat/bops-planning

Conversation

@chrisns
Copy link
Copy Markdown
Member

@chrisns chrisns commented Mar 18, 2026

Summary

  • 4-step walkthrough for the Back Office Planning System (BOPS) scenario
  • Completion page with takeaways, production readiness checklist, and ODP links
  • 14 Playwright screenshots covering CloudFormation, BOPS back-office, applicants portal, and AWS Console
  • CloudFormation template updated: Lambda custom resource generates unique password per deployment, displayed in plain text in stack outputs
  • Walkthrough data, exploration YAML, and screenshots YAML wired up
  • Naming standardised to "Back Office Planning System (BOPS)" with links to opendigitalplanning.org throughout

Test plan

  • npx @11ty/eleventy builds 135 files with no errors
  • All 7 walkthrough pages render correctly (index, steps 1-4, complete)
  • Each step shows correct step-specific screenshots
  • Sidebar navigation shows all 4 steps with correct titles
  • Previous/Next pagination works between steps
  • CloudFormation stack deploys with password in plain text in outputs
  • Login works with generated password
  • Both portals (back-office + applicants) accessible via HTTPS
  • OS Maps rendering on applicants portal

chrisns added 20 commits March 16, 2026 19:50
CDK infrastructure for deploying BOPS (Back Office Planning System) on AWS:
- ECS Fargate (3 services: web, worker, applicants)
- Aurora PostgreSQL Serverless v2 with PostGIS
- ElastiCache Redis 7.0
- ALB (port 80 + 8080), CloudFront HTTPS
- S3 for Active Storage, seed task custom resource
- Docker overlays, GitHub Actions workflow, scenario pages
Verified with Playwright:
- Login page renders at CloudFront URL
- Admin login succeeds (confirmed_at set, otp disabled)
- Redirects to Administrator dashboard
- Routing patched for single-tenant (base64 encoded)
- assume_ssl=true (CloudFront HTTPS), force_ssl=false
- Seed creates LocalAuthority + admin/assessor/reviewer users
…tes, 50% assignment

Seed creates 35 planning applications via PlanningApplication.create! + build_case_record
(not raw SQL) so all callbacks fire and views render correctly.

Includes:
- ApplicationType creation from upstream fixtures with correct config categories
- User creation with confirmed_at + otp_required_for_login=false
- 50% apps assigned to assessor (shows in 'My cases')
- Backdated received_at/expiry_date for varied 'days to determination'
- All dates relative to Time.current (works whenever deployed)

Playwright-verified on live AWS:
- Login, My cases, All cases, Application detail all render without 500s
- 18/35 apps assigned to assessor
- Varied expiry dates (17-32 days to determination)
…PI auth fixed

Applicants portal verified locally via Playwright:
- Homepage renders with GOV.UK design ('NDX Demo Council Applicant Portal')
- HttpClient patched to not prepend subdomain to API host
- ApplicationController#current_local_authority returns DEFAULT_LOCAL_AUTHORITY
- API calls to BOPS back-office succeed (bearer token auth working)
- CDK container runs as root for sed patches, drops to app user
- Published apps (published_at set) return make_public=true from API

Remaining: application detail 500s on map rendering (nil boundary_geojson)
- needs dummy geojson in seed data for map to render
- core API integration is working
…on dates for applicants portal

Both portals now fully working and verified via Playwright:
- BOPS back-office: login, My cases (18 assigned), All cases (35), application detail
- BOPS applicants: homepage, application detail with map, consultation status, comment link
- Seed publishes 10 in-assessment apps with boundary geojson and consultation end dates
- ApiUser with full permissions for API auth between portals
…d output

- Walkthrough: 4-step guide (login, browse applications, review detail, applicants portal)
- Complete page with takeaways, production readiness, ODP links
- 14 Playwright screenshots (CloudFormation, BOPS back-office, applicants portal, AWS Console)
- walkthroughs.yaml, scenarios.yaml, exploration YAML, screenshots YAML
- CloudFormation template: Lambda custom resource for unique password per deployment
  shown in plain text in stack outputs (replaces Secrets Manager console link)
- Naming updated to "Back Office Planning System (BOPS)" throughout
- Links to opendigitalplanning.org/back-office-planning-system-bops
@chrisns chrisns added this pull request to the merge queue Mar 19, 2026
Merged via the queue into main with commit 668cba6 Mar 19, 2026
10 checks passed
@chrisns chrisns deleted the feat/bops-planning branch March 19, 2026 09:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant