This is the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Documentation

Hut Forty Two internal documentation.

1 - Platforms

Platform documentation and stack information

Documentation for the various platforms and infrastructure stacks used across our applications.

1.1 - Heroku

Heroku platform and stack documentation

Heroku is a cloud platform that enables companies to build, deliver, monitor and scale apps. This section covers the different Heroku stacks (runtime environments) and their support lifecycles.

Stack Overview

Heroku stacks are the different runtime environments available for applications. Each stack is based on a specific Ubuntu LTS version and has a defined support lifecycle.

Current Stacks

  • Heroku-24: Default stack (Ubuntu 24.04) - Supported until April 2029
  • Heroku-22: Active (Ubuntu 22.04) - Supported until April 2027
  • Heroku-20: End of Life (April 30, 2025)
  • Heroku-18: End of Life (April 30, 2023)
  • Heroku-16: End of Life (May 1, 2021)

1.1.1 - heroku-24

Heroku-24 stack based on Ubuntu 24.04 - Current default stack

Overview

Heroku-24 is the current default stack for new Heroku applications, based on Ubuntu 24.04 LTS.

Support Timeline

  • General Availability: June 2024
  • Default Stack: December 2024
  • End of Life: April 2029

Key Features

Base Image Optimizations

  • Reduced base image size by removing less frequently used packages (Bazaar, Mercurial)
  • Build tools (GCC, Make, Git, system Python) available only at build time, not at runtime
  • More efficient resource utilization

Multi-Architecture Support

  • Published images support both amd64 and arm64 architectures
  • Default Linux user changed from root to heroku

Build and Runtime Changes

  • Git available only at build time (not at runtime)
  • Limited locale support: C, C.utf8, POSIX, and en_US.utf8 only
  • APT sources list uses new deb822 format at /etc/apt/sources.list.d/ubuntu.sources
  • Reduced timezone data (only geographical regions and city names)

Fir Apps

  • Only heroku/builder:24 is supported for Fir apps
  • Heroku-24 is the exclusive base image for new Fir applications

Upgrading to Heroku-24

Applications should be upgraded to Heroku-24 to benefit from the latest security updates, performance improvements, and extended support timeline.

References

1.1.2 - heroku-22

Heroku-22 stack based on Ubuntu 22.04 - Active support

Overview

Heroku-22 is based on Ubuntu 22.04 LTS and is currently in active support.

Support Timeline

  • Release: June 2022
  • Superseded by: Heroku-24 (June 2024)
  • End of Life: April 2027

Key Changes from Heroku-20

OpenSSL Version

  • Ships with OpenSSL 3.0
  • OpenSSL 1.1 is not available as a runtime library
  • Applications depending on OpenSSL 1.1 must be updated

Ubuntu Base

  • Based on Ubuntu 22.04 (Jammy Jellyfish)
  • Upgraded from Ubuntu 20.04 in Heroku-20

Migration Considerations

Applications should plan migration to Heroku-24 before April 2027 to ensure continued security updates and support.

References

1.1.3 - heroku-20

Heroku-20 stack based on Ubuntu 20.04 - END OF LIFE

⚠️ End of Life Notice

Heroku-20 reached end of life on April 30, 2025.

Overview

Heroku-20 was based on Ubuntu 20.04 LTS.

Support Timeline

  • Release: 2020
  • Deprecated: June 2024
  • End of Life: April 30, 2025
  • Build Cutoff: Approximately May 30, 2025

Post-EOL Status

  • Existing apps continue to run at customer’s own risk
  • No security updates provided
  • No new builds/deployments allowed after build cutoff
  • Limited technical support available

Required Action

All applications on Heroku-20 must be upgraded to Heroku-22 or Heroku-24 immediately.

Running applications on an end-of-life stack exposes them to security vulnerabilities and compliance risks.

Migration Path

  1. Test application on Heroku-24 (recommended) or Heroku-22
  2. Update dependencies and configurations as needed
  3. Deploy to new stack
  4. Monitor for any runtime issues

References

1.1.4 - heroku-18

Heroku-18 stack based on Ubuntu 18.04 - END OF LIFE

⚠️ End of Life Notice

Heroku-18 reached end of life on April 30, 2023.

Overview

Heroku-18 was based on Ubuntu 18.04 LTS (Bionic Beaver).

Support Timeline

  • Release: 2018
  • Deprecated: June 22, 2022
  • End of Life: April 30, 2023
  • Build Cutoff: May 1, 2023

Post-EOL Status

  • Existing apps continue to run at customer’s own risk
  • No security updates since April 30, 2023
  • No new builds/deployments allowed since May 1, 2023
  • No technical support available

Critical Action Required

All applications still on Heroku-18 are severely outdated and must be upgraded immediately.

This stack has been unsupported for over 2 years and poses significant security and compliance risks.

Migration Path

Applications on Heroku-18 should be upgraded directly to Heroku-24 to ensure the longest support timeline.

References

1.1.5 - heroku-16

Heroku-16 stack based on Ubuntu 16.04 - END OF LIFE

⚠️ End of Life Notice

Heroku-16 reached end of life on May 1, 2021.

Overview

Heroku-16 was based on Ubuntu 16.04 LTS (Xenial Xerus).

Support Timeline

  • Release: 2016
  • Deprecated: December 11, 2020
  • End of Life: May 1, 2021
  • Build Cutoff: June 1, 2021

Post-EOL Status

  • Existing apps continue to run at customer’s own risk
  • No security updates since May 1, 2021
  • No new builds/deployments allowed since June 1, 2021
  • No technical support available

Critical Action Required

Applications on Heroku-16 are critically outdated (4+ years unsupported) and represent a severe security risk.

Immediate upgrade to Heroku-24 is essential for security, compliance, and operational stability.

Migration Path

Direct upgrade to Heroku-24 is strongly recommended. Given the age of this stack, significant application updates will likely be required.

References

1.2 - Elastic Beanstalk

AWS Elastic Beanstalk platform documentation

AWS Elastic Beanstalk is a fully managed service for deploying and scaling web applications and services.

These pages document the various Elastic Beanstalk platform versions used across our applications.

1.2.1 - Amazon Linux 2023 v4.9.0

Elastic Beanstalk Python platform - Amazon Linux 2023 v4.9.0

Overview

Amazon Linux 2023 v4.9.0 is an Elastic Beanstalk platform version for running Python applications on 64-bit Amazon Linux 2023.

Platform Timeline

  • Created: December 15, 2025
  • Last Updated: December 16, 2025
  • Lifecycle State: Recommended (Current recommended version)
  • Status: Ready

Note: AWS does not publish specific EOL dates for Elastic Beanstalk platforms. Platform versions typically receive 90-day retirement notices when end-of-life is planned. Check the Python Platform History for updates.

Platform Details

Base System

  • Operating System: Amazon Linux 2023
  • Architecture: 64-bit (x86_64)
  • Platform Version: 4.9.0

Python Support

This platform version supports Python applications. Common Python versions available:

  • Python 3.12
  • Python 3.11
  • Python 3.9

The specific Python version is determined by your application’s configuration.

Key Features

Amazon Linux 2023 Benefits

  • Security-focused: Regular security updates and long-term support
  • Optimized for AWS: Built specifically for AWS environments
  • Modern tooling: Updated system packages and build tools
  • Performance: Optimized for cloud workloads

Elastic Beanstalk Integration

  • Managed platform updates
  • Auto-scaling capabilities
  • Integrated monitoring with CloudWatch
  • Load balancing
  • Rolling deployments

Framework Support

This platform is commonly used for:

  • Django applications
  • Flask applications
  • FastAPI applications
  • Generic WSGI/ASGI applications

Configuration

Applications on this platform can be configured through:

  • Environment variables
  • .ebextensions configuration files
  • Platform-specific settings in the EB console

References

1.2.2 - Amazon Linux 2023 v4.8.0

Elastic Beanstalk Python platform - Amazon Linux 2023 v4.8.0

Overview

Amazon Linux 2023 v4.8.0 is an Elastic Beanstalk platform version for running Python applications on 64-bit Amazon Linux 2023.

Platform Timeline

  • Created: November 20, 2025
  • Last Updated: December 16, 2025
  • Lifecycle State: Available (Superseded by v4.9.0)
  • Status: Ready

Note: AWS does not publish specific EOL dates for Elastic Beanstalk platforms. Platform versions typically receive 90-day retirement notices when end-of-life is planned. Check the Python Platform History for updates.

Platform Details

Base System

  • Operating System: Amazon Linux 2023
  • Architecture: 64-bit (x86_64)
  • Platform Version: 4.8.0

Python Support

This platform version supports Python applications. Common Python versions available:

  • Python 3.12
  • Python 3.11
  • Python 3.9

The specific Python version is determined by your application’s configuration.

Key Features

Amazon Linux 2023 Benefits

  • Security-focused: Regular security updates and long-term support
  • Optimized for AWS: Built specifically for AWS environments
  • Modern tooling: Updated system packages and build tools
  • Performance: Optimized for cloud workloads

Elastic Beanstalk Integration

  • Managed platform updates
  • Auto-scaling capabilities
  • Integrated monitoring with CloudWatch
  • Load balancing
  • Rolling deployments

Framework Support

This platform is commonly used for:

  • Django applications
  • Flask applications
  • FastAPI applications
  • Generic WSGI/ASGI applications

Configuration

Applications on this platform can be configured through:

  • Environment variables
  • .ebextensions configuration files
  • Platform-specific settings in the EB console

Migration Considerations

Applications on this platform should plan to upgrade to v4.9.0 or later to benefit from the latest security patches and platform improvements.

References

1.2.3 - Amazon Linux 2023

Elastic Beanstalk Python platform - Amazon Linux 2023

Overview

Amazon Linux 2023 is the base platform for Elastic Beanstalk Python applications running on 64-bit architecture.

Support Timeline

  • Initial Release: May 2023 (Platform v4.0.0)
  • Current Recommended: v4.9.0 (December 2025)
  • Amazon Linux 2023 Support: 5 years from release (through 2028)
  • Update Frequency: Monthly security and feature updates

Note: AWS provides a 90-day notice before retiring platform versions. Active environments continue to run on their selected platform version, but new features and security updates are only available on current versions. Monitor the Python Platform History for announcements.

Platform Details

Base System

  • Operating System: Amazon Linux 2023
  • Architecture: 64-bit (x86_64)

Python Support

Amazon Linux 2023 supports multiple Python versions for Elastic Beanstalk applications:

  • Python 3.12
  • Python 3.11
  • Python 3.9
  • Python 3.8

Key Features

Amazon Linux 2023 Benefits

  • Next-generation AL2: Successor to Amazon Linux 2
  • Security-focused: SELinux enabled by default
  • Deterministic updates: Predictable release schedule every 2 years
  • Standard support: 5 years of support
  • Modern tooling: Updated system packages and development tools
  • Performance: Kernel and system optimizations for AWS

Elastic Beanstalk Advantages

  • Fully managed: AWS handles provisioning, load balancing, scaling
  • Auto-scaling: Automatically scales based on application demand
  • Monitoring: Integrated CloudWatch metrics and logging
  • Rolling updates: Zero-downtime deployments
  • Multi-environment: Easy management of dev, staging, and production

Framework Support

Amazon Linux 2023 on Elastic Beanstalk supports:

  • Django: Full-featured web framework
  • Flask: Lightweight WSGI web application framework
  • FastAPI: Modern async web framework
  • Pyramid: Flexible web framework
  • Custom WSGI/ASGI applications

Platform Versions

For specific platform version details, see:

Configuration Options

Environment Variables

  • Set via EB console, CLI, or configuration files
  • Accessible to your application at runtime

.ebextensions

  • Configuration files for customizing EB environment
  • Install packages, run commands, configure services

Procfile

  • Define custom processes to run in your application

Best Practices

  1. Use specific platform versions for production stability
  2. Pin dependencies in requirements.txt
  3. Configure health checks for reliable auto-scaling
  4. Use environment variables for configuration
  5. Enable enhanced health reporting for better monitoring

References

2 - Applications

2.1 - Adrian Flux

Adrian Flux Applications

2.1.1 - buying-service-al202339-live

REST based service for caravan buying
URIType
https://buying-service-al202339-live.eba-r3mwqfca.eu-west-1.elasticbeanstalk.comelastic beanstalk url

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • ALLOW_BROWSABLE_RENDERER
  • AWS_ACCESS_KEY_ID
  • AWS_S3TRACEFILE_ACCESS_KEY_ID
  • AWS_S3TRACEFILE_BUCKET_NAME
  • AWS_S3TRACEFILE_REGION_NAME
  • AWS_S3TRACEFILE_SECRET_ACCESS_KEY
  • AWS_SECRET_ACCESS_KEY
  • AWS_STORAGE_BUCKET_NAME
  • BUYING_COOKIE_DOMAIN
  • DATABASE_URL
  • ENABLE_DRF_LOGGING
  • ENVIRONMENT
  • FRONTEND_GENERIC_ERROR_URL
  • FURY_AUTH
  • POLICY_PRECHECK_ENDPOINT
  • POST_3D_REDIRECT_URL
  • PYTHONPATH
  • SENTRY_DSN
  • SENTRY_ENVIRONMENT

2.1.2 - flix-epa-data312-live

EPA logger for metrics/incompletes
URIType
https://flix-epa-data312-live.eba-pp3hhz3t.eu-west-1.elasticbeanstalk.comelastic beanstalk url

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • BROKER_URL
  • DATABASE_URL
  • ENVIRONMENT
  • FLUX_MONITOR_TOPIC_ARN
  • FURY_AUTH
  • INCOMPLETES_SNS_TOPIC_ARN
  • PYTHONPATH
  • QAB_WEBHOOK_REPLY_TOPIC_ARN
  • SECRET_KEY
  • SENTRY_DSN
  • SITE_ID

2.1.3 - flux-callme-service-al39

Django REST based service for Callback table inserts in private VPC
URIType
https://flux-callme-service-al39.rcqs4fy6wv.eu-west-1.elasticbeanstalk.comelastic beanstalk url

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • DATABASE_URL
  • DATABASE_URL_CALLMEWEB
  • DATABASE_URL_CALLMEWEB_READ_REPLICA
  • PYTHONPATH
  • SENTRY_DSN
  • SENTRY_ENVIRONMENT

2.1.4 - flux-exchange-service-al239

Django REST based Web Service for Exchange Message workflows
URIType
https://flux-exchange-service-al239.3p44hjsmmn.eu-west-1.elasticbeanstalk.comelastic beanstalk url

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • API_URL
  • BIKESURE_TRUSTPILOT_LINK
  • CW_ACCESS_KEY_ID
  • CW_SECRET_ACCESS_KEY
  • DATABASE_URL
  • DATABASE_URL_EXCHANGE_PRIVATE
  • DEFAULT_FROM_EMAIL
  • EMAIL_HOST
  • EMAIL_HOST_PASSWORD
  • EMAIL_HOST_USER
  • EMAIL_PORT
  • EMAIL_USE_TLS
  • EXCHANGE_ENCRYPTION_KEY
  • FD_TRUSTPILOT_LINK
  • FLUX_TRUSTPILOT_LINK
  • FURY_AUTH
  • HIC_TRUSTPILOT_LINK
  • INSTILLER_API_URL
  • INSTILLER_BIKESURE_API_ID
  • INSTILLER_BIKESURE_API_KEY
  • INSTILLER_FLUX_API_ID
  • INSTILLER_FLUX_API_KEY
  • INSTILLER_INFLUX_API_ID
  • INSTILLER_INFLUX_API_KEY
  • LEGACY_ADRIANFLUX_SUBSCRIBE_TOKEN
  • PURE_360_SUBSCRIBE_ENDPOINT
  • PYTHONPATH
  • SECURE_SSL_HOST
  • SENTRY_DSN
  • SENTRY_ENVIRONMENT
  • STERLING_TRUSTPILOT_LINK
  • USE_X_FORWARDED_HOST
  • USE_X_FORWARDED_PORT

2.1.5 - flux-qab-service-live

Django REST based webservice for TGSL quotes to (new) EPA forms
URIType
https://flux-qab-service-live.eba-pqpbj2ty.eu-west-1.elasticbeanstalk.comelastic beanstalk url

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • BROKER_URL
  • DATABASE_URL
  • ENVIRONMENT
  • EXCHANGE_ENDPOINT
  • EXCHANGE_ENDPOINT_FLUX_CAR
  • EXCHANGE_ENDPOINT_FLUX_CAR_LEARNER
  • EXCHANGE_ENDPOINT_STERLING_CAR
  • EXCHANGE_TOKEN
  • PYTHONPATH
  • SECRET_KEY
  • SENTRY_DSN
  • SITE_ID
  • SOURCES_ENDPOINT
  • TGSL_AF_CAR_QUOTE_ENDPOINT
  • TGSL_BIKE_QUOTE_ENDPOINT
  • TGSL_BUY_ENDPOINT
  • TGSL_QUOTE_ENDPOINT
  • TGSL_STERLING_CAR_ENDPOINT

2.1.6 - flux-quote-service-311-live

Django REST based webservice for TGSL quotes to legacy Laravel EPA forms
URIType
https://flux-quote-service-311-live.3cg4gnpw8u.eu-west-1.elasticbeanstalk.comelastic beanstalk url

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • BROKER_URL
  • DATABASE_URL
  • DEFAULT_FROM_EMAIL
  • EMAIL_HOST
  • EMAIL_HOST_PASSWORD
  • EMAIL_HOST_USER
  • EMAIL_USE_TLS
  • ENVIRONMENT
  • EXCHANGE_SERVICE
  • EXCHANGE_SERVICE_PASSWORD
  • EXCHANGE_SERVICE_TOKEN
  • EXCHANGE_SERVICE_USER
  • FLUX_AGG_SERVICE
  • FURY_AUTH
  • HIC_AGG_SERVICE
  • HUT_API_KEY
  • INSTILLER_API_URL
  • INSTILLER_MICROSERVICE_TOKEN
  • INSTILLER_MICROSERVICE_URL
  • PYTHONPATH
  • QUOTE_TIMEOUT
  • SECRET_KEY
  • SEND_QUOTE_DEBUG_MAIL
  • SENTRY_DSN
  • SHARED_DATA_DB
  • SHARED_DATA_HOST
  • SHARED_DATA_PASSWORD
  • SHARED_DATA_USER
  • SIRA_CLIENT_NAME
  • SIRA_PASSWORD
  • SIRA_USERNAME
  • SIRA_WSDL
  • SLACK_MONITORING_ENDPOINT
  • ZEEP_LOG_LEVEL

2.1.7 - fluxlite-service38-live

Django REST based backend service for Fluxlite mobile app.
URIType
https://fluxlite-service38-live.xygjc5t8iq.eu-west-1.elasticbeanstalk.comelastic beanstalk url

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • DATABASE_URL
  • DEFAULT_FROM_EMAIL
  • DEFAULT_TO_EMAIL
  • EMAIL_HOST
  • EMAIL_HOST_PASSWORD
  • EMAIL_HOST_USER
  • EMAIL_PORT
  • EMAIL_USE_TLS
  • FURY_AUTH
  • PYTHONPATH
  • QUOTE_SERVICE_URL
  • SENTRY_DSN
  • SENTRY_ENVIRONMENT

2.1.8 - goahead-testsuite

TGSL request / response logger for TGSL service development
URIType
https://goahead-testsuite.eba-cznxb3pk.eu-west-1.elasticbeanstalk.comelastic beanstalk url

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • ALLOW_BROWSABLE_RENDERER
  • AWS_S3TRACEFILE_ACCESS_KEY_ID
  • AWS_S3TRACEFILE_BUCKET_NAME
  • AWS_S3TRACEFILE_REGION_NAME
  • AWS_S3TRACEFILE_SECRET_ACCESS_KEY
  • BUYING_SERVICE_LIVE_CREATE_URL
  • DATABASE_URL
  • DEBUG
  • ENCRYPTION_KEY_2020_02
  • FURY_AUTH
  • PYTHONPATH
  • SENTRY_DSN
  • SENTRY_ENVIRONMENT

2.1.9 - landscape-311-live

Infrastructure graph generator for Adrian Flux applications
URIType
https://landscape-311-live.eba-ithywivc.eu-west-1.elasticbeanstalk.comelastic beanstalk url

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • BROKER_URL
  • DATABASE_URL
  • ENCRYPTION_KEYS
  • ENVIRONMENT
  • ENVIRONMNET
  • HKDF_SALT
  • PYTHONPATH
  • SECRET_KEY
  • SENTRY_DSN
  • SITE_ID

2.1.10 - short-term-api-live

Django REST based web service for Short Term Mobile app backend
URIType
https://short-term-api-live.eba-zk22fxhj.eu-west-1.elasticbeanstalk.comelastic beanstalk url

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • BACKEND_PRIVATE_API
  • BACKEND_PUBLIC_API
  • BROKER_URL
  • CF_AUD
  • DATABASE_URL
  • DEFAULT_FROM_EMAIL
  • EMAIL_BACKEND
  • EMAIL_HOST
  • EMAIL_HOST_PASSWORD
  • EMAIL_HOST_USER
  • EMAIL_PORT
  • EMAIL_USE_TLS
  • ENVIRONMENT
  • FURY_AUTH
  • GEOSERVICE_PROXY_TOKEN
  • GEOSERVICE_PROXY_URL
  • PASSWORD_RESET_DOMAIN
  • PYTHONPATH
  • REGSERVICE_PROXY_TOKEN
  • REGSERVICE_PROXY_URL
  • SECRET_KEY
  • SENTRY_DSN
  • TRUSTPILOT_BUSINESS_UNIT_ID
  • TRUSTPILOT_KEY
  • TRUSTPILOT_URL

2.1.11 - sterling-breakdown38-live

Fullstack Django Application for breakdown purchasing
URIType
https://sterling-breakdown38-live.yk9bkntgfj.eu-west-1.elasticbeanstalk.comelastic beanstalk url

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • AGENT_ID
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • CC_PAYMENT_PLAN_ID
  • CELERY_TASK_ALWAYS_EAGER
  • CLIENT_REF_PREFIX
  • COMPARISON_CREATOR_REAL_TIME_SALES_ENDPOINT
  • CREATED_BY
  • DATABASE_URL
  • DEFAULT_FROM_EMAIL
  • EMAIL_HOST
  • EMAIL_HOST_PASSWORD
  • EMAIL_HOST_USER
  • EMAIL_PORT
  • EMAIL_USE_TLS
  • EXCHANGE_SERVICE_TOKEN
  • EXCHANGE_SERVICE_URL
  • FURY_AUTH
  • GOOGLE_TAG_MANAGER
  • HIC_EXCHANGE_SERVICE_TOKEN
  • HIC_EXCHANGE_SERVICE_URL
  • PAYMENT_ERROR_PHONE_NUMBER
  • PAYMENT_PLAN_ID
  • POLICY_NUMBER_PREFIX
  • POLICY_NUMBER_PREFIX_COMPARISON
  • PORTFOLIO_KEY
  • PRODUCT_ID
  • PRODUCT_TYPE
  • PYCURL_SSL_LIBRARY
  • PYTHONPATH
  • REGABI_API
  • REGABI_AUTH_TOKEN
  • REGABI_SERVICE_URL
  • SAGEPAY_3D_CALLBACK_URL
  • SAGEPAY_DIRECT_3D_SECURE_URL
  • SAGEPAY_DIRECT_URL
  • SAGEPAY_VENDOR
  • SCHEMA
  • SCHEME_TABLE_ID
  • SEND_MAIL_ON_GENERATE
  • SENTRY_DSN
  • SENTRY_ENVIRONMENT
  • SESSION_EXPIRE_AT_BROWSER_CLOSE
  • SESSION_KEY_ENCRYPTION_KEY
  • SOURCE_BUSINESS_ID
  • SUBAGENT_ID
  • THEME
  • TRANSACTOR_URL
  • URL_PREPEND

2.1.12 - tgsl-data-service312

Django based backend for TGSL data synchronisation
URIType
https://tgsl-data-service312.eba-bz4yw6se.eu-west-1.elasticbeanstalk.comelastic beanstalk url

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • BROKER_URL
  • DATABASE_URL
  • ENVIRONMENT
  • ODBC_DRIVER
  • PYTHONPATH
  • SECRET_KEY
  • SENTRY_DSN
  • TGSL_DB_HOST
  • TGSL_DB_NAME
  • TGSL_DB_PASSWORD
  • TGSL_DB_USER

2.1.13 - bikesure-affiliates

Bikesure Dealer Directory public frontend
URIType
https://8e0de5fbadee4176a467eae0a014ff8f.bikesure.co.ukfrontend
https://bikesure-affiliates-a4ab7315b191.herokuapp.comheroku url
https://www.bikesure.co.uk/directory/dealers/frontend

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • CF_AUD
  • CSRF_TRUSTED_ORIGINS
  • DEALER_ENQUIRY_EMAILS
  • DEFAULT_FROM_EMAIL
  • EMAIL_BACKEND
  • EMAIL_HOST
  • EMAIL_HOST_PASSWORD
  • EMAIL_HOST_USER
  • EMAIL_PORT
  • EMAIL_USE_TLS
  • ENVIRONMENT
  • FURY_AUTH
  • GOOGLE_MAPS_API_KEY
  • PROXY_DIR
  • SECRET_KEY
  • SENTRY_DSN

2.1.14 - fakertrail

Django based HTTP Python Logger

Application URLs

https://fakertrail.herokuapp.comheroku urlshould not be used or shared publically
https://zugd76r23tzfezte653fzdssds.insurergate.co.ukfrontend

Overview

This was intended as a universal logger for Qab type services.

Deprecation

This app can be gracefully removed as it is self-contained on Heroku/Heroku-postgres. Feature flags on flux-quote-service and flux-buying-service to enable this.

2.1.15 - flux-bannerclick-app

Simple custom URL redirects

Application URLs

https://flux-bannerclick-app.herokuapp.comheroku urlshould not be used or shared publically
https://bannerclick.hut42.co.ukservice url
https://bannerclick-app.adrianflux.co.ukservice url
https://flux-bannerclick-app.herokuapp.com/DG9HV30L/admin url

Overview

This is a simple redirecting application. Main user is nancy@mazemedia.co.uk . A “link” is added that will redirect to an endpoint such as “https://www.adrianflux.co.uk/?utm_source=Website&utm_medium=Banner&utm_id=FreeLocalNewsBanner" . The “link” will be used to redirect to the appropriate Adrian Flux page.

img.png

Known issues

This is “Yet Another Redirection App” and should probably be placed into a unified service.

Deprecation

Since this is a simple redirection type app then it could fall under the “Web/Redirects” proposal. However, I can see no reason why the links that it is redirecting to be used directly.

Propose we scope out current usage patterns with Maze in order to figure out the deprecation path.

2.1.16 - flux-buying-pages-tour-caravan

Placeholder description

Application URLs

2.1.17 - flux-callback-service

Django REST based web service for callback sending

Application URLs

2.1.18 - flux-customer-portal

Legacy Policy Documents service for Customer Portal
URIType
https://docs.bikesure.co.ukfrontend
https://docs.adrianflux.co.ukfrontend
https://faqs.insurergate.co.ukfrontend
https://customers.adrianflux.co.ukfrontend
https://customers-service.insurergate.co.ukfrontend
https://customers.sterling-insurance.co.ukfrontend
https://customers.hertsinsurance.comfrontend
https://customers-service.adrianflux.co.ukfrontend
https://flux-customer-portal.herokuapp.comheroku url
https://customers.bikesure.co.ukfrontend

Environment Variables

Configuration variables for this application:

  • AWS_ACCESS_KEY_ID
  • AWS_S3DUMP_ACCESS_KEY_ID
  • AWS_S3DUMP_BUCKET_LOCATION
  • AWS_S3DUMP_BUCKET_NAME
  • AWS_S3DUMP_REGION_NAME
  • AWS_S3DUMP_SECRET_ACCESS_KEY
  • AWS_SECRET_ACCESS_KEY
  • AWS_STORAGE_BUCKET_NAME
  • CAPTCHA_REQUIRED
  • CLOUDFRONT_URL
  • EXCHANGE_AUTH_TOKEN
  • EXCHANGE_SERVICE
  • EXCHANGE_SERVICE_TOKEN
  • EXHANGE_SERVICE_URL
  • FURY_AUTH
  • HANDLER_SERVICE_URL
  • PAPERTRAIL_API_TOKEN
  • PGBOUNCER_MAX_CLIENT_CONN
  • RECAPTCHA_PRIVATE_KEY
  • RECAPTCHA_PUBLIC_KEY
  • S3DIRECT_REGION
  • SATISFACTION_THRESHOLD
  • SENTRY_DSN
  • SENTRY_ENVIRONMENT
  • TALKATIVE_BIKESURE_DEFAULT_QUEUE_CALLOUT
  • TALKATIVE_FLUX_DEFAULT_QUEUE_CALLOUT
  • TALKATIVE_VERSION
  • WEB_CONCURRENCY

2.1.19 - flux-epa

EPA version 1.9 (Caravan, Household, Bike, Car)

| URI | Type | |

——
https://quotes2.triumph-bikeinsurance.co.uk
https://quotes2.ducati-insurance.com
https://quotes2.adrianflux.co.uk
https://flux-epa-fcaedf8a6b75.herokuapp.com
https://quotes2.kawasaki-insurance.com
https://quotes2.honda-bikeinsurance.co.uk
https://quotes2.sterling-insurance.co.uk
https://quotes2.bikesure.co.uk
https://quotes2.suzukibikeinsurance.com

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • BROKER_URL
  • CSRF_TRUSTED_ORIGINS
  • ENVIRONMENT
  • EPA_DATA_SERVICE_TOKEN
  • EPA_DATA_SERVICE_URL
  • FONTAWESOME_NPM_AUTH_TOKEN
  • IGATE_API_KEY
  • PAPERTRAIL_API_TOKEN
  • PIP_EXTRA_INDEX_URL
  • QAB_SERVICE_ENDPOINT
  • QAB_SERVICE_TOKEN
  • QUOTE_LOG_SNS_TOPIC_ARN
  • REDIS_MAX_CONNECTIONS
  • REGSERVICE_PROXY_TOKEN
  • REGSERVICE_PROXY_URL
  • SECRET_KEY
  • SENTRY_DSN
  • SOURCES_ENDPOINT
  • SQS_QUEUE_NAME

2.1.19.1 - Incompletes

Managing incomplete quotes in flux-epa

Overview

This page documents the handling of incomplete quotes in the flux-epa application.

What are Incompletes?

Incomplete quotes are quote journeys that users have started but not completed. These represent potential conversions and are valuable for follow-up and marketing purposes.

Incomplete Quote Data

Information captured for incomplete quotes typically includes:

  • Quote uuid
  • Contact information (email, phone)
  • Vehicle/property details entered
  • Quote stage reached
  • Timestamp of last activity

Epa Data Logging

At the start of an EPA quote session (“first page”, typically containing the vehicle lookup) the session data object for that epa is sent to flux-epa-data . On subsequent postbacks, this telemetry data is passed to the data service. The quote uuid is used as the identifying key. Non-postback events may also be logged for things like link/button clicks, lookup states entered, etc.

This data is captured within flux-epa-data in epa logs as an EpaLog object. These are single post / event data captures with the quote uuid being the link in the individual quote journey.

When an EpaLog is created for the first time in a quote journey (i.e. the first time that quote uuid has been sent to the epa log) a QuoteLog is created. This is a singular object with the same quote uuid as the primary key. On subsequent EpaLog entries to that quote uuid, the QuoteLog object is updated to reflect the current (data) state. This means that many EpaLogs for that quote uuid will only ever have one QuoteLog.

This QuoteLog holds critical information about the current completion status of the quote.

Incomplete definition

Follow-up Process

[Document the process for following up on incomplete quotes]

Retention Policy

[Document how long incomplete quote data is retained]

Technical Implementation

[Document technical details about how incompletes are stored and processed]

2.1.20 - flux-epa-laravel-car

Legacy PHP EPA (Adrianflux/Car)
URIType
https://flux-epa-laravel-car.herokuapp.comheroku url
https://quotes-car.adrianflux.co.ukfrontend

Environment Variables

Configuration variables for this application:

  • ADDRESS_API
  • ADRIANFLUX_CAR_GOOGLE_TAGMANAGER
  • APP_ENV
  • APP_KEY
  • APP_URL
  • CALLBACK_URL
  • CDN_URL
  • EPA_APPLICATION
  • EPA_TYPE
  • Help
  • LOG_CHANNEL
  • METADATA_API
  • METADATA_AUTH_TOKEN
  • PAPERTRAIL_API_TOKEN
  • QUOTE_API
  • REGABI_API
  • REGABI_AUTH_TOKEN
  • SENTRY_DSN
  • SESSION_HTTP_ONLY
  • SESSION_SECURE_COOKIE

2.1.21 - flux-epa-laravel-car-docker

Legacy PHP EPA (Adrianflux/Car) - container version
URIType
https://flux-epa-laravel-car-docker-c06df0942647.herokuapp.comheroku url
https://qc.adrianflux.co.ukfrontend

Environment Variables

Configuration variables for this application:

  • ADDRESS_API
  • ADRIANFLUX_CAR_GOOGLE_TAGMANAGER
  • APP_ENV
  • APP_KEY
  • APP_URL
  • CALLBACK_URL
  • CDN_URL
  • EPA_APPLICATION
  • EPA_TYPE
  • Help
  • LOG_CHANNEL
  • METADATA_API
  • METADATA_AUTH_TOKEN
  • PAPERTRAIL_API_TOKEN
  • QUOTE_API
  • REGABI_API
  • REGABI_AUTH_TOKEN
  • SENTRY_DSN
  • SESSION_HTTP_ONLY
  • SESSION_SECURE_COOKIE

2.1.22 - flux-epa-laravel-laid-bike

Legacy PHP EPA (Bikesure/Bike Laid-Up)
URIType
https://flux-epa-laravel-laid-bike.herokuapp.comheroku url
https://quotes-laid.bikesure.co.ukfrontend

Environment Variables

Configuration variables for this application:

  • ADDRESS_API
  • APP_ENV
  • APP_KEY
  • APP_URL
  • EPA_APPLICATION
  • EPA_TYPE
  • HELP
  • LOG_CHANNEL
  • METADATA_API
  • METADATA_AUTH_TOKEN
  • PAPERTRAIL_API_TOKEN
  • QUOTE_API
  • REGABI_API
  • REGABI_AUTH_TOKEN
  • SENTRY_LARAVEL_DSN
  • SESSION_SECURE_COOKIE

2.1.23 - flux-epa-laravel-laid-bike-doc

Legacy PHP EPA (Bikesure/Bike Laid-Up) - container version
URIType
https://qd.bikesure.co.ukfrontend
https://flux-epa-laravel-laid-bike-doc-745078615d70.herokuapp.comheroku url

Environment Variables

Configuration variables for this application:

  • ADDRESS_API
  • APP_ENV
  • APP_KEY
  • APP_URL
  • EPA_APPLICATION
  • EPA_TYPE
  • HELP
  • LOG_CHANNEL
  • METADATA_API
  • METADATA_AUTH_TOKEN
  • PAPERTRAIL_API_TOKEN
  • QUOTE_API
  • REGABI_API
  • REGABI_AUTH_TOKEN
  • SENTRY_LARAVEL_DSN
  • SESSION_SECURE_COOKIE

2.1.24 - flux-epa-laravel-van

Legacy PHP EPA (Adrianflux/Van)
URIType
https://flux-epa-laravel-van.herokuapp.comheroku url
https://quotes-van.adrianflux.co.ukfrontend

Environment Variables

Configuration variables for this application:

  • ADDRESS_API
  • ADRIANFLUX_VAN_GOOGLE_TAGMANAGER
  • APP_ENV
  • APP_KEY
  • APP_URL
  • CALLBACK_URL
  • CDN_URL
  • EPA_APPLICATION
  • EPA_TYPE
  • HELP
  • LOG_CHANNEL
  • METADATA_API
  • METADATA_AUTH_TOKEN
  • PAPERTRAIL_API_TOKEN
  • QUOTE_API
  • REGABI_API
  • REGABI_AUTH_TOKEN
  • SESSION_SECURE_COOKIE
  • THEME

2.1.25 - flux-epa-laravel-van-docker

Legacy PHP EPA (Adrianflux/Van) - container version
URIType
https://flux-epa-laravel-van-docker-827aa6265d32.herokuapp.comheroku url
https://qv.adrianflux.co.ukfrontend

Environment Variables

Configuration variables for this application:

  • ADDRESS_API
  • ADRIANFLUX_VAN_GOOGLE_TAGMANAGER
  • APP_ENV
  • APP_KEY
  • APP_URL
  • CALLBACK_URL
  • CDN_URL
  • EPA_APPLICATION
  • EPA_TYPE
  • HELP
  • LOG_CHANNEL
  • METADATA_API
  • METADATA_AUTH_TOKEN
  • PAPERTRAIL_API_TOKEN
  • QUOTE_API
  • REGABI_API
  • REGABI_AUTH_TOKEN
  • SESSION_SECURE_COOKIE
  • THEME

2.1.26 - flux-epa-learner

Legacy PHP EPA (Adrianflux/learner)
URIType
https://quotes-learner.adrianflux.co.ukfrontend
https://flux-epa-learner.herokuapp.comheroku url

Environment Variables

Configuration variables for this application:

  • ADDRESS_API
  • ADRIANFLUX_LEARNER_GOOGLE_TAGMANAGER
  • APP_DEBUG
  • APP_ENV
  • APP_KEY
  • APP_URL
  • CDN_URL
  • EPA_APPLICATION
  • EPA_TYPE
  • GOOGLE_ANALYTICS
  • HANDLER_REDIRECT
  • HELP
  • LOG_CHANNEL
  • METADATA_API
  • METADATA_AUTH_TOKEN
  • PAPERTRAIL_API_TOKEN
  • QUOTE_API
  • REGABI_API
  • REGABI_AUTH_TOKEN
  • SENTRY_LARAVEL_DSN
  • SESSION_SECURE_COOKIE
  • THEME

2.1.27 - flux-epa-learner-docker

Legacy PHP EPA (Adrianflux/learner) - container version
URIType
https://ql.adrianflux.co.ukfrontend
https://flux-epa-learner-docker-803877447f91.herokuapp.comheroku url

Environment Variables

Configuration variables for this application:

  • ADDRESS_API
  • ADRIANFLUX_LEARNER_GOOGLE_TAGMANAGER
  • APP_DEBUG
  • APP_ENV
  • APP_KEY
  • APP_URL
  • CDN_URL
  • EPA_APPLICATION
  • EPA_TYPE
  • GOOGLE_ANALYTICS
  • HELP
  • LOG_CHANNEL
  • METADATA_API
  • METADATA_AUTH_TOKEN
  • PAPERTRAIL_API_TOKEN
  • QUOTE_API
  • REGABI_API
  • REGABI_AUTH_TOKEN
  • SENTRY_LARAVEL_DSN
  • SESSION_SECURE_COOKIE
  • THEME

2.1.28 - flux-epa-prd

EPA version 2.0 (Adrian Flux Leaner, Sterling Learner)
URIType
https://quotes3.adrianflux.co.ukfrontend
https://quotes3.sterling-insurance.co.ukfrontend
https://flux-epa-prd-203eafc4b020.herokuapp.comheroku url

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • CACHE_KEY_PREFIX
  • CF_MIDDLEWARE_CF_AUD
  • CSRF_TRUSTED_ORIGINS
  • ENVIRONMENT
  • FONTAWESOME_NPM_AUTH_TOKEN
  • FURY_AUTH
  • IGATE_API_KEY
  • QAB_SERVICE_ENDPOINT
  • QAB_WEBHOOK_REPLY_TOPIC_ARN
  • QUOTE_LOG_SNS_TOPIC_ARN
  • REDIS_MAX_CONNECTIONS
  • REGSERVICE_PROXY_TOKEN
  • REGSERVICE_PROXY_URL
  • SECRET_KEY
  • SENTRY_DSN
  • SOURCES_ENDPOINT

2.1.29 - flux-epa-service-new

Metadata data service for Legacy Laravel EPAs
URIType
https://flux-epa-service-new.herokuapp.comheroku url
https://brannigan.insurergate.co.ukfrontend

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • CF_AUD
  • METADATEN_API_LOGGING
  • PAPERTRAIL_API_TOKEN
  • PIP_EXTRA_INDEX_URL
  • SENTRY_DSN
  • SENTRY_ENVIRONMENT

2.1.30 - flux-geo-service

Django REST based web service for GeoData lookups

| URI | Type | |

——
https://flux-geo-service.herokuapp.com
https://geoaddress-service.adrianflux.co.uk
https://geo-service.insurergate.co.uk
https://geo-service.adrianflux.co.uk

Environment Variables

Configuration variables for this application:

  • ADDRESS_IO_API
  • ADDRESS_IO_API_KEY
  • ADMIN_PATH
  • CSRF_TRUSTED_ORIGINS
  • ENVIRONMENT
  • PAPERTRAIL_API_TOKEN
  • PIP_EXTRA_INDEX_URL
  • SECRET_KEY
  • SENTRY_DSN
  • SITE_ID

2.1.31 - flux-geodata-service

Django REST based web service for GeoData lookups (“legacy” apps)
URIType
https://flux-geodata-service-90a9459c132a.herokuapp.comheroku url
https://geo.insurergate.co.ukfrontend

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • CACHE_BACKEND
  • CSRF_TRUSTED_ORIGINS
  • FIELD_ENCRYPTION_KEY
  • PIP_EXTRA_INDEX_URL
  • SECRET_KEY

2.1.32 - flux-handler-service

Django REST based web service for Department Info (opening times etc.) lookups

| URI | Type | |

——
https://handler-flux.insurergate.co.uk
https://handler-bikesure.insurergate.co.uk
https://handler-sterling.insurergate.co.uk
https://handler-service.insurergate.co.uk
https://flux-handler-service.herokuapp.com

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • FURY_AUTH
  • PAPERTRAIL_API_TOKEN
  • PIP_EXTRA_INDEX_URL
  • SECURE_SSL_REDIRECT
  • SENTRY_DSN
  • SENTRY_ENVIRONMENT
  • SOURCES_SERVICE
  • SOURCES_SERVICE_ENDPOINT

2.1.33 - flux-jaf

Adrian Flux (public) Job Application Form (JAF)
URIType
https://apply2.adrianflux.co.ukfrontend
https://apply.sterling-insurance.co.ukfrontend
https://flux-jaf-7367d32e97e8.herokuapp.comheroku url

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • CSRF_TRUSTED_ORIGINS
  • ENVIRONMENT
  • EXCHANGE_API_KEY
  • EXCHANGE_URL
  • IGATE_API_KEY
  • PAPERTRAIL_API_TOKEN
  • PIP_EXTRA_INDEX_URL
  • SECRET_KEY
  • SENTRY_DSN
  • TURNSTILE_SECRET
  • TURNSTILE_SITEKEY

2.1.34 - flux-jam

Job Application Management (JAM) backend for Adrian Flux job applications

| URI | Type | |

——
https://flux-jam-5d1d2152f6b1.herokuapp.com
https://jam.sterling-insurance.co.uk
https://jam.adrianflux.co.uk

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • CSRF_TRUSTED_ORIGINS
  • DEFAULT_FROM_EMAIL
  • EMAIL_HOST
  • EMAIL_HOST_PASSWORD
  • EMAIL_HOST_USER
  • EMAIL_PORT
  • EMAIL_USE_TLS
  • FONTAWESOME_NPM_AUTH_TOKEN
  • PAPERTRAIL_API_TOKEN
  • PIP_EXTRA_INDEX_URL
  • SECRET_KEY
  • WEBHOOK_TOKEN

2.1.35 - flux-policy-documents-service

Django REST based web service for Sterling Policy Documents

| URI | Type | |

——
https://flux-policy-documents-service.herokuapp.com

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • AWS_ACCESS_KEY_ID
  • AWS_S3_REGION_NAME
  • AWS_SECRET_ACCESS_KEY
  • AWS_STORAGE_BUCKET_NAME
  • CLOUDFRONT_URL
  • CORS_ORIGIN_WHITELIST
  • DATABASE_URL_CUSTOMER_PORTAL
  • DEBUG
  • FURY_AUTH
  • SECRET_KEY

2.1.36 - flux-redirects-service

Redirects manager for Adrian Flux brands URLs

| URI | Type | |

——
https://redirects-service.insurergate.co.uk
https://flux-redirects-service.herokuapp.com

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • CLOUDFLARE_ACCOUNT
  • CLOUDFLARE_TOKEN
  • CSRF_TRUSTED_ORIGINS
  • ENVIRONMENT
  • PAPERTRAIL_API_TOKEN
  • PIP_EXTRA_INDEX_URL
  • SECRET_KEY
  • SENTRY_DSN
  • SITE_ID

2.1.37 - flux-regabi-data-live

Django REST based web service for car registration / information lookups
URIType
https://flux-regabi-data-live.herokuapp.comheroku url
https://zoidberg.insurergate.co.ukfrontend

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • AWS_ACCESS_KEY_ID
  • AWS_S3_ENDPOINT_URL
  • AWS_S3_HOST
  • AWS_S3_REGION_NAME
  • AWS_SECRET_ACCESS_KEY
  • AWS_STORAGE_BUCKET_NAME
  • CARWEBUK_CLIENTDESC
  • CARWEBUK_CLIENTREF
  • CARWEBUK_KEY1
  • CARWEBUK_PASSWORD
  • CARWEBUK_URL
  • CARWEBUK_USERNAME
  • CARWEBUK_VERSION
  • CSRF_TRUSTED_ORIGINS
  • ENVIRONMENT
  • FURY_AUTH
  • PAPERTRAIL_API_TOKEN
  • PIP_EXTRA_INDEX_URL
  • SENTRY_DSN
  • WEB_CONCURRENCY

2.1.38 - flux-shorturl-app

Simple custom URL redirects for “short” Flux brand URLs
URIType
https://blog.hertsinsurance.comfrontend
https://flux-shorturl-app.herokuapp.comheroku url
https://hicrides.comfrontend
https://www.hicrides.comfrontend
https://ster.lvfrontend
https://flux.cxfrontend
https://hicrides.co.ukfrontend
https://docs.trinitylane.co.ukfrontend
https://bikesu.refrontend
https://hic.cxfrontend
https://shorturl.hut42.co.ukfrontend
https://www.hicrides.co.ukfrontend

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • ENVIRONMENT
  • PAPERTRAIL_API_TOKEN
  • PIP_EXTRA_INDEX_URL
  • REDIRECT_URL_POLICY_BOOK
  • SECRET_KEY
  • SENTRY_DSN

2.1.39 - flux-sitedata-service

Django REST based service for Metadata management Adrian Flux brand sites

| URI | Type | |

——
https://sitedata-service.insurergate.co.uk
https://sitedata-bikesure.insurergate.co.uk
https://sitedata-sterling.insurergate.co.uk
https://sitedata-flux.insurergate.co.uk
https://sitedata-trinitylane.insurergate.co.uk
https://sitedata-sterlinglite.insurergate.co.uk
https://sitedata-adrianflux.insurergate.co.uk
https://flux-sitedata-service.herokuapp.com

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • CACHE_BACKEND
  • CACHE_LOCATION
  • CORS_ALLOWED_ORIGINS
  • "https://www.sterling-insurance.co.uk",
  • "https://adrianflux.co.uk",
  • "https://www.adrianflux.co.uk",
  • "https://customers.adrianflux.co.uk",
  • "https://bikesure.co.uk",
  • "https://www.bikesure.co.uk",
  • "https://customers.bikesure.co.uk",
  • "https://hertsinsurance.com",
  • "https://www.hertsinsurance.com",
  • "https://customers.hertsinsurance.com",
  • "https://influx.co.uk",
  • "https://www.influx.co.uk",
  • "https://fluxdirect.co.uk",
  • "https://www.fluxdirect.co.uk",
  • "https://chartwellinsurance.co.uk",
  • "https://www.chartwellinsurance.co.uk",
  • "https://flux-sitedata-client.pages.dev",
  • "https://www.adrianflux.gg",
  • "https://www.adrianflux.je",
  • "https://www.trinitylane.co.uk"
  • ]
  • CSRF_TRUSTED_ORIGINS
  • DEFERRED_LOG
  • ENVIRONMENT
  • FIELD_ENCRYPTION_KEY
  • PAPERTRAIL_API_TOKEN
  • PIP_EXTRA_INDEX_URL
  • SECRET_KEY
  • SENTRY_DSN

2.1.40 - flux-sources-service

Django REST based web service for Flux source code lookups

| URI | Type | |

——
https://flux-sources-service.herokuapp.com
https://sources-service.insurergate.co.uk

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • APIREQUESTLOG_RETENTION_HOURS
  • PIP_EXTRA_INDEX_URL
  • SECURE_SSL_REDIRECT
  • SENTRY_ENVIRONMENT

2.1.41 - flux-worker-service

Worker service for Adrian Flux brand content variables.

| URI | Type | |

——
https://flux-app.af-test.co.uk
https://sterling-app.af-test.co.uk
https://flux-worker-service.herokuapp.com
https://worker-service.insurergate.co.uk

Overview

This is a Django based app with no frontend. It’s primary purpose is to provide a backend interface (Django Admin) to provide metadata type variable values such as “FLUX_HOME_INSURANCE_SAVING_PERCENTAGE” to inject into Adrian Flux brand pages.

The db stored values (postgres) sync up with a Cloudflare KV store, which a Cloudflare Worker uses to do shortcode style replacements like [[ FLUX_HOME_INSURANCE_SAVING_PERCENTAGE ]] which do the actual replacement in usually, Wordpress content pages.

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • CLOUDFLARE_ACCOUNT_ID
  • CLOUDFLARE_API_KEY
  • DEBUG
  • FURY_AUTH
  • SECRET_KEY

2.1.42 - hut-app-launcher

Application Launcher for Adrian Flux brand backends

| URI | Type | |

——
https://apps.insurergate.co.uk
https://hut-app-launcher.herokuapp.com

Environment Variables

Configuration variables for this application:

  • ADMIN_PATH
  • AWS_ACCESS_KEY_ID
  • AWS_S3_REGION_NAME
  • AWS_SECRET_ACCESS_KEY
  • AWS_STORAGE_BUCKET_NAME
  • CSRF_TRUSTED_ORIGINS
  • PAPERTRAIL_API_TOKEN
  • PIP_EXTRA_INDEX_URL
  • SECRET_KEY
  • WPENGINE_PASSWORD
  • WPENGINE_USER_ID

2.1.43 - proxy-bikesure

Reverse proxy for www.bikesure.co.uk
URIType
https://dashboard.heroku.com/apps/proxy-bikesuredeployment
https://proxy-bikesure.herokuapp.comheroku urlshould not be used or shared publically
https://www.bikesure.co.ukfrontendMain public front end
https://adrianflux.co.ukfrontendTo be removed: nominally Cloudflare will redirect this to www

Overview

This runs dyno(s) on Heroku that act as a reverse proxy for the various applications running under the www.bikesure.co.uk domain.

For example:

https://www.bikesure.co.uk > Main WP on WP Engine
https://www.bikesure.co.uk/blog > Bikesure blog on WP Engine

The proxys work with a proxy_pass to a subdomain, e.g blog.bikesure.co.uk. Cloudflare DNS for blog.bikesure.co.uk will point directly to the site on WP Engine. www.bikesure.co.uk will point to this proxy on Heroku and that will do the routing.

Known Issues

There are limitations regarding this kind of proxying. These can be summarised as:

  • Client makes a request to a WP proxied site, i.e. https://www.bikesure.co.uk/blog
  • WP Engine is slow to return the response, blocking the NGINX worker
  • This worker block affects all requests hitting the www.bikesure.co.uk domain, including the main page and other critical pages such as callback.
  • This problem is exaggerated on cache-misses on WP Engine which happens a lot on requests such as https://www.bikesure.co.uk/blog?some-tracking-code=somerandomsttring as these will always cause a cache miss
  • Can cause 2-5 second delays on main site, which blocks the workers again and a negative feedback cycle ensues

Environment Variables

Configuration variables for this application:

  • PAPERTRAIL_API_TOKEN

2.1.44 - proxy-flux

Reverse proxy for www.adrianflux.co.uk
URIType
https://dashboard.heroku.com/apps/proxy-fluxdeployment
https://proxy-flux.herokuapp.comheroku urlshould not be used or shared publically
https://www.adrianflux.co.ukfrontendMain public front end
https://adrianflux.co.ukfrontendTo be removed: nominally Cloudflare will redirect this to www

Overview

This runs dyno(s) on Heroku that act as a reverse proxy for the various applications running under the www.adrianflux.co.uk domain.

For example:

https://www.adrianflux.co.uk > Main WP on WP Engine
https://www.adrianflux.co.uk/blog > Fluxposure on WP Engine
https://www.adrianflux.co.uk/uk-us-car-part-names > UK v US on WP Engine

The proxys work with a proxy_pass to a subdomain, e.g blog.adrianflux.co.uk. Cloudflare DNS for blog.adrianflux.co.uk will point directly to the site on WP Engine. www.adrianflux.co.uk will point to this proxy on Heroku and that will do the routing.

Known Issues

There are limitations regarding this kind of proxying. These can be summarised as:

  • Client makes a request to a WP proxied site, i.e. https://www.adrianflux.co.uk/blog
  • WP Engine is slow to return the response, blocking the NGINX worker
  • This worker block affects all requests hitting the www.adrianflux.co.uk domain, including the main page and other critical pages such as callback.
  • This problem is exaggerated on cache-misses on WP Engine which happens a lot on requests such as https://www.adrianflux.co.uk/blog?some-tracking-code=somerandomsttring as these will always cause a cache miss
  • Can cause 2-5 second delays on main site, which blocks the workers again and a negative feedback cycle ensues

Environment Variables

Configuration variables for this application:

  • PAPERTRAIL_API_TOKEN

2.1.45 - proxy-sterling

URIType
https://dashboard.heroku.com/apps/proxy-sterlingdeployment
https://proxy-sterling.herokuapp.comheroku urlshould not be used or shared publically
https://www.sterling-insurance.co.ukfrontendMain public front end
https://adrianflux.co.ukfrontendTo be removed: nominally Cloudflare will redirect this to www

Overview

This runs dyno(s) on Heroku that act as a reverse proxy for the various applications running under the www.sterling-insurance.co.uk domain.

For example:

https://www.sterling-insurance.co.uk > Main WP on WP Engine
https://www.sterling-insurance.co.uk/blog > Sterling blog on WP Engine

The proxys work with a proxy_pass to a subdomain, e.g blog.sterling.co.uk. Cloudflare DNS for blog.sterling.co.uk will point directly to the site on WP Engine. www.sterling-insurance.co.uk will point to this proxy on Heroku and that will do the routing.

Known Issues

There are limitations regarding this kind of proxying. These can be summarised as:

  • Client makes a request to a WP proxied site, i.e. https://www.sterling-insurance.co.uk/blog
  • WP Engine is slow to return the response, blocking the NGINX worker
  • This worker block affects all requests hitting the www.sterling-insurance.co.uk domain, including the main page and other critical pages such as callback.
  • This problem is exaggerated on cache-misses on WP Engine which happens a lot on requests such as https://www.sterling-insurance.co.uk/blog?some-tracking-code=somerandomsttring as these will always cause a cache miss
  • Can cause 2-5 second delays on main site, which blocks the workers again and a negative feedback cycle ensues

Environment Variables

Configuration variables for this application:

  • PAPERTRAIL_API_TOKEN

2.1.46 - sterling-epa-laravel-car

Legacy PHP EPA (Sterling/Car)
URIType
https://quotes.sterling-insurance.co.ukfrontend
https://sterling-epa-laravel-car.herokuapp.comheroku url

Environment Variables

Configuration variables for this application:

  • ADDRESS_API
  • APP_ENV
  • APP_KEY
  • APP_URL
  • CDN_URL
  • EPA_APPLICATION
  • EPA_TYPE
  • HANDLER_DEPARTMENT
  • HANDLER_REDIRECT
  • HELP
  • LOG_CHANNEL
  • METADATA_API
  • METADATA_AUTH_TOKEN
  • METADATA_SOURCE
  • PAPERTRAIL_API_TOKEN
  • QUOTE_API
  • REGABI_API
  • REGABI_AUTH_TOKEN
  • SESSION_SECURE_COOKIE
  • STERLING_GOOGLE_TAGMANAGER
  • THEME

2.1.47 - sterling-epa-laravel-car-docke

Legacy PHP EPA (Sterling/Car) - container version
URIType
https://qc.sterling-insurance.co.ukfrontend
https://sterling-epa-laravel-car-docke-8090fe679347.herokuapp.comheroku url

Environment Variables

Configuration variables for this application:

  • ADDRESS_API
  • APP_ENV
  • APP_KEY
  • APP_URL
  • CDN_URL
  • EPA_APPLICATION
  • EPA_TYPE
  • HANDLER_DEPARTMENT
  • HELP
  • LOG_CHANNEL
  • METADATA_API
  • METADATA_AUTH_TOKEN
  • METADATA_SOURCE
  • PAPERTRAIL_API_TOKEN
  • QUOTE_API
  • REGABI_API
  • REGABI_AUTH_TOKEN
  • SESSION_SECURE_COOKIE
  • STERLING_GOOGLE_TAGMANAGER
  • THEME

2.1.48 - sterling-epa-laravel-van

Legacy PHP EPA (Sterling/Van)
URIType
https://sterling-epa-laravel-van.herokuapp.comheroku url
https://quotes-van.sterling-insurance.co.ukfrontend

Environment Variables

Configuration variables for this application:

  • ADDRESS_API
  • APP_ENV
  • APP_KEY
  • APP_URL
  • CDN_URL
  • EPA_APPLICATION
  • EPA_TYPE
  • HANDLER_DEPARTMENT
  • HANDLER_REDIRECT
  • HELP
  • LOG_CHANNEL
  • METADATA_API
  • METADATA_AUTH_TOKEN
  • METADATA_SOURCE
  • PAPERTRAIL_API_TOKEN
  • QUOTE_API
  • REGABI_API
  • REGABI_AUTH_TOKEN
  • SESSION_SECURE_COOKIE
  • STERLING_VAN_GOOGLE_TAGMANAGER
  • THEME

2.1.49 - sterling-epa-laravel-van-docke

Legacy PHP EPA (Sterling/Van) - container version
URIType
https://qv.sterling-insurance.co.ukfrontend
https://sterling-epa-laravel-van-docke-f02a122fa86e.herokuapp.comheroku url

Environment Variables

Configuration variables for this application:

  • ADDRESS_API
  • APP_ENV
  • APP_KEY
  • APP_URL
  • CDN_URL
  • EPA_APPLICATION
  • EPA_TYPE
  • HANDLER_DEPARTMENT
  • HELP
  • LOG_CHANNEL
  • METADATA_API
  • METADATA_AUTH_TOKEN
  • METADATA_SOURCE
  • PAPERTRAIL_API_TOKEN
  • QUOTE_API
  • REGABI_API
  • REGABI_AUTH_TOKEN
  • SESSION_SECURE_COOKIE
  • STERLING_VAN_GOOGLE_TAGMANAGER
  • THEME

2.2 - WordPress

WordPress Applications on WP Engine

2.2.1 - aahadleightran

WordPress site hosted on WP Engine

Overview

WordPress site aahadleightran hosted on WP Engine.

URLType
https://www.hadleighbreakdown.co.ukPrimary Domain
https://aahadleightran.wpengine.comWP Engine URL

Site Information

  • Site Name: HB | Hadliegh Breakdown

  • Install Name: aahadleightran

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2023-11-09

Tags

  • Hadleigh Breakdown

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 14cf3790-23ce-40f3-bd8c-1f9bbc2fe9b1
  • Site ID: 2ee3a06f-6f92-47a3-9721-86ad7453f927
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.2 - adrianflux1

WordPress site hosted on WP Engine

Overview

WordPress site adrianflux1 hosted on WP Engine.

URLType
https://wpe.adrianflux.co.ukPrimary Domain
https://adrianflux1.wpengine.comWP Engine URL

Site Information

  • Site Name: Adrian Flux

  • Install Name: adrianflux1

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2025-02-28

Tags

  • Adrian Flux
  • Instant Callback
  • Scheduled Callback

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: d9333181-d1f8-47b9-ad6a-6e3f46ceacff
  • Site ID: 7914e381-fff9-40a7-ad98-8dbe545bd9fb
  • Account ID: d7fb8db5-7276-4093-b390-bab079dada24

2.2.3 - adrianfluxcomp

WordPress site hosted on WP Engine

Overview

WordPress site adrianfluxcomp hosted on WP Engine.

URLType
https://competitions.adrianflux.co.ukPrimary Domain
https://adrianfluxcomp.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Competitions

  • Install Name: adrianfluxcomp

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2022-04-30

Tags

  • Adrian Flux
  • WP Forms

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 2bb49253-7dd3-457f-b65b-c7425443558d
  • Site ID: 1bd04bae-6184-4eb0-bb86-07ef825203eb
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.4 - afcustomers

WordPress site hosted on WP Engine

Overview

WordPress site afcustomers hosted on WP Engine.

URLType
https://customers.adrianflux.co.ukPrimary Domain
https://afcustomers.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Adrian Flux Customers

  • Install Name: afcustomers

  • WordPress Version: 6.9

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2023-11-10

Tags

  • Customer Sites

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 83c67f66-1cc0-4a8b-a216-8509a39a2272
  • Site ID: 47ff9070-663d-497c-bf4b-32d29b018a4f
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.5 - afdubtales

WordPress site hosted on WP Engine

Overview

WordPress site afdubtales hosted on WP Engine.

URLType
https://dubtales.adrianflux.co.ukPrimary Domain
https://afdubtales.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Dubtales

  • Install Name: afdubtales

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2023-07-25

Tags

  • Adrian Flux
  • Scheduled Callback

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: be22999d-3a5d-471b-88fd-e250dea57f5d
  • Site ID: dbb0ac9f-addc-4727-b1e9-ff5247a9a188
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.6 - afguernsey

WordPress site hosted on WP Engine

Overview

WordPress site afguernsey hosted on WP Engine.

URLType
https://www.adrianflux.ggPrimary Domain
https://afguernsey.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Islands (Guernsey)

  • Install Name: afguernsey

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2023-11-10

Tags

  • Adrian Flux
  • Scheduled Callback

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 80de8ec6-be87-4e7b-be40-d29aa7cbebde
  • Site ID: 18381815-b746-44ad-aa94-ed2e9442d41c
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.7 - afjersey

WordPress site hosted on WP Engine

Overview

WordPress site afjersey hosted on WP Engine.

URLType
https://www.adrianflux.jePrimary Domain
https://afjersey.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Islands (Jersey)

  • Install Name: afjersey

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2023-11-10

Tags

  • Adrian Flux
  • Scheduled Callback

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 0c0a06d4-3f6f-4c12-931a-7839776f8386
  • Site ID: a5721410-1811-4e55-9441-057ea807859c
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.8 - aflearnerdrive

WordPress site hosted on WP Engine

Overview

WordPress site aflearnerdrive hosted on WP Engine.

URLType
https://learner-drivers.adrianflux.co.ukPrimary Domain
https://aflearnerdrive.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Learner Driver Hub

  • Install Name: aflearnerdrive

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2023-07-15

Tags

  • Adrian Flux

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 8b43afe6-abf0-474f-b8b4-717f7d647e95
  • Site ID: 1901cbc0-5c79-48a7-ac6b-42d20df1fc22
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.9 - afmotorsport

WordPress site hosted on WP Engine

Overview

WordPress site afmotorsport hosted on WP Engine.

URLType
https://motorsport.adrianflux.co.ukPrimary Domain
https://afmotorsport.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Motorsport

  • Install Name: afmotorsport

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2022-05-10

Tags

  • Adrian Flux
  • Scheduled Callback

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: d25786f4-e627-4973-91ec-53bec9918774
  • Site ID: 612812f0-9e7d-484f-910c-29bfbe3e6b5b
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.10 - afownersclubs

WordPress site hosted on WP Engine

Overview

WordPress site afownersclubs hosted on WP Engine.

URLType
https://oci.adrianflux.co.ukPrimary Domain
https://afownersclubs.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Owners Clubs

  • Install Name: afownersclubs

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2024-02-06

Tags

  • Adrian Flux
  • Instant Callback

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: e1cf0d35-ac14-48fa-bb5e-c2378d74f851
  • Site ID: 5933cffe-c848-444a-9af6-0a42cef5e8a2
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.11 - afreferral

WordPress site hosted on WP Engine

Overview

WordPress site afreferral hosted on WP Engine.

URLType
https://referral-scheme.adrianflux.co.ukPrimary Domain
https://afreferral.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Referral Scheme

  • Install Name: afreferral

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2023-11-10

Tags

  • Adrian Flux

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 59d89e7a-2487-4914-9faa-c79eae3fae2d
  • Site ID: 7c0fd93c-56ee-4b2e-bd15-9c7b415a6370
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.12 - afsupercars

WordPress site hosted on WP Engine

Overview

WordPress site afsupercars hosted on WP Engine.

URLType
https://supercars.adrianflux.co.ukPrimary Domain
https://afsupercars.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Supercars

  • Install Name: afsupercars

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2022-05-09

Tags

  • Adrian Flux

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: c8729817-8220-40e6-86f2-bd2250b837d7
  • Site ID: a2f54b49-f137-47db-9f4a-502a20fd4660
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.13 - afvictorianhom

WordPress site hosted on WP Engine

Overview

WordPress site afvictorianhom hosted on WP Engine.

URLType
https://victorian-homes.adrianflux.co.ukPrimary Domain
https://afvictorianhom.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Victorian Homes

  • Install Name: afvictorianhom

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2023-08-16

Tags

  • Adrian Flux
  • Scheduled Callback

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 59b0a8f6-9a22-4fec-82f8-bc63b45c21e6
  • Site ID: ad4c4df4-a6a9-4a93-ad1c-b71a6e1403d8
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.14 - bangerrally

WordPress site hosted on WP Engine

Overview

WordPress site bangerrally hosted on WP Engine.

URLType
https://banger-rally-guide.sterling-insurance.co.ukPrimary Domain
https://bangerrally.wpengine.comWP Engine URL

Site Information

  • Site Name: ST | Sterling Insurance Banger Rally

  • Install Name: bangerrally

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2024-02-06

Tags

  • Sterling Insurance
  • Scheduled Callback

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: f88a87df-f193-46ca-9f19-9062dda99bd9
  • Site ID: 6eeec0ed-097a-413e-9bfd-c5c82efc6cd2
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.15 - bikesurecomps

WordPress site hosted on WP Engine

Overview

WordPress site bikesurecomps hosted on WP Engine.

URLType
https://competitions.bikesure.co.ukPrimary Domain
https://bikesurecomps.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Competitions

  • Install Name: bikesurecomps

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2022-04-30

Tags

  • Bikesure

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: d64d1a9e-b49e-45ee-bbd5-72833784a366
  • Site ID: 0062bbd4-8520-482b-9b16-5b300356ae80
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.16 - bksbikesure

WordPress site hosted on WP Engine

Overview

WordPress site bksbikesure hosted on WP Engine.

URLType
https://bikesure.bikesure.co.ukPrimary Domain
https://bksbikesure.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Bikesure

  • Install Name: bksbikesure

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2023-11-11

Tags

  • Bikesure
  • Instant Callback
  • Scheduled Callback

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: c9c0313e-d694-4e27-a802-a4491fe6a540
  • Site ID: 8d3d1ab2-3f1c-45f0-a948-350f857101bf
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.17 - bksblog

WordPress site hosted on WP Engine

Overview

WordPress site bksblog hosted on WP Engine.

URLType
https://bikesureblog.bikesure.co.ukPrimary Domain
https://bksblog.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Blog

  • Install Name: bksblog

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2023-04-26

Tags

  • Bikesure

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 5716a101-0360-4840-af16-88dd15394a1c
  • Site ID: 13cf8867-3393-4863-a595-801c62e40bd1
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.18 - bkscustomers

WordPress site hosted on WP Engine

Overview

WordPress site bkscustomers hosted on WP Engine.

URLType
https://customers.bikesure.co.ukPrimary Domain
https://bkscustomers.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Bikesure Customers

  • Install Name: bkscustomers

  • WordPress Version: 6.9

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2023-11-11

Tags

  • Bikesure

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 93f17f25-edd4-4f77-9a92-c70f7448afb7
  • Site ID: d346aedb-7c74-4281-bd92-49132d5bf0e8
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.19 - bksdigipr

WordPress site hosted on WP Engine

Overview

WordPress site bksdigipr hosted on WP Engine.

URLType
https://digital.bikesure.co.ukPrimary Domain
https://bksdigipr.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Digi PR

  • Install Name: bksdigipr

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2025-05-06

Tags

  • Bikesure

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 599fcd60-c7f9-43b0-9742-9fde7be61001
  • Site ID: 6444423e-ee23-4978-8a13-bcee2f83438f
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.20 - bksextinction

WordPress site hosted on WP Engine

Overview

WordPress site bksextinction hosted on WP Engine.

URLType
https://motorbike-extinction.bikesure.co.ukPrimary Domain
https://bksextinction.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Extinction

  • Install Name: bksextinction

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2024-10-15

Tags

  • Bikesure

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 78dbe646-d694-4510-9571-d3b8ca027233
  • Site ID: f9a03ad5-06a9-46db-ae31-0122b22274ca
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.21 - bksforeverbike

WordPress site hosted on WP Engine

Overview

WordPress site bksforeverbike hosted on WP Engine.

URLType
https://forever-bikes.bikesure.co.ukPrimary Domain
https://bksforeverbike.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Forever Bikes

  • Install Name: bksforeverbike

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2023-04-25

Tags

  • Bikesure

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 5a1e9165-2c82-4ea7-90b8-dd81cd37c199
  • Site ID: 3c4d6256-7989-4f0b-883a-49e42eeb49df
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.22 - bkskawasakiins

WordPress site hosted on WP Engine

Overview

WordPress site bkskawasakiins hosted on WP Engine.

URLType
https://callback.kawasaki-insurance.comPrimary Domain
https://bkskawasakiins.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Kawasaki Insurance

  • Install Name: bkskawasakiins

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2025-05-15

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: fa9f06ae-d4e9-4cd3-8134-e69fad39f3fc
  • Site ID: a72d8730-8a59-4894-8c58-f8dae4daa833
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.23 - bksmanufacture

WordPress site hosted on WP Engine

Overview

WordPress site bksmanufacture hosted on WP Engine.

URLType
https://callback.ducati-insurance.comPrimary Domain
https://bksmanufacture.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Ducati Insurance

  • Install Name: bksmanufacture

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2024-10-28

Tags

  • Bikesure
  • Scheduled Callback

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 3154f071-fa96-4895-b7ca-6d21ea00b0e6
  • Site ID: b863a504-9f73-4a76-a469-3f1c4d892201
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.24 - bksmotorcycles

WordPress site hosted on WP Engine

Overview

WordPress site bksmotorcycles hosted on WP Engine.

URLType
https://motorcycle-stunt-riders.bikesure.co.ukPrimary Domain
https://bksmotorcycles.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Motorcycle Stunt Riders

  • Install Name: bksmotorcycles

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2023-04-26

Tags

  • Bikesure

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 3b8f7a5a-5f33-4b4b-ada4-d806ea9d6043
  • Site ID: bf24b0f3-1b6c-4948-9416-93320f7253c0
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.25 - bksquadbikeloc

WordPress site hosted on WP Engine

Overview

WordPress site bksquadbikeloc hosted on WP Engine.

URLType
https://best-quad-bike-locations-world.bikesure.co.ukPrimary Domain
https://bksquadbikeloc.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Quad Bike Locations

  • Install Name: bksquadbikeloc

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2023-10-30

Tags

  • Bikesure

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 51a79ab7-b4b0-430c-a497-d5c8110c015b
  • Site ID: b47405bb-b872-483c-bb62-226095f89558
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.26 - bksreferral

WordPress site hosted on WP Engine

Overview

WordPress site bksreferral hosted on WP Engine.

URLType
https://referral-scheme.bikesure.co.ukPrimary Domain
https://bksreferral.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Referral Scheme

  • Install Name: bksreferral

  • WordPress Version: 6.7.4

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2023-11-10

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: a818cabc-247a-47f1-8b95-900c95c5c070
  • Site ID: 26c15f82-dc02-4304-8566-a3470ce4137b
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.27 - bkssuzukiinsur

WordPress site hosted on WP Engine

Overview

WordPress site bkssuzukiinsur hosted on WP Engine.

URLType
https://callback.suzukibikeinsurance.comPrimary Domain
https://bkssuzukiinsur.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Suzuki Insurance

  • Install Name: bkssuzukiinsur

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2025-05-15

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: f9debae0-c248-4b3f-acee-d7e4114991e2
  • Site ID: 12e7cccf-b516-4307-934e-52e18c56e6da
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.28 - bkstriumphinsu

WordPress site hosted on WP Engine

Overview

WordPress site bkstriumphinsu hosted on WP Engine.

URLType
https://callback.triumph-bikeinsurance.co.ukPrimary Domain
https://bkstriumphinsu.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Triumph Insurance

  • Install Name: bkstriumphinsu

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2025-05-15

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 6edd4bed-2f66-4699-950b-6b8897a93230
  • Site ID: 0d5be307-f89c-4269-92b0-0c53c65fccea
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.29 - bksultimatebik

WordPress site hosted on WP Engine

Overview

WordPress site bksultimatebik hosted on WP Engine.

URLType
https://ultimate-bike-collection.bikesure.co.ukPrimary Domain
https://bksultimatebik.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Ultimate Bike Collection

  • Install Name: bksultimatebik

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2024-03-21

Tags

  • Bikesure

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: ab4ec812-f653-4f3d-8f21-bf21dcf1b9d1
  • Site ID: efb673b8-30fc-436c-85c8-d34d6524fff7
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.30 - carextinction

WordPress site hosted on WP Engine

Overview

WordPress site carextinction hosted on WP Engine.

URLType
https://car-extinction.adrianflux.co.ukPrimary Domain
https://carextinction.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Extinction

  • Install Name: carextinction

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2024-07-12

Tags

  • Adrian Flux

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 3a4773fd-b6e9-4589-aac4-8343753b6004
  • Site ID: f3eb883c-8d0e-4047-9b08-dfd5df21f419
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.31 - cultclassics

WordPress site hosted on WP Engine

Overview

WordPress site cultclassics hosted on WP Engine.

URLType
https://cult-classics.adrianflux.co.ukPrimary Domain
https://cultclassics.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Cult Classics

  • Install Name: cultclassics

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2023-05-25

Tags

  • Adrian Flux

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 07f72c95-b228-4eb6-b932-be092a3b3c0e
  • Site ID: cbf001a0-8586-460a-be35-b48bb103c5c6
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.32 - datacapturedoc

WordPress site hosted on WP Engine

Overview

WordPress site datacapturedoc hosted on WP Engine.

URLType
https://form-docs.af-dev.co.ukPrimary Domain
https://datacapturedoc.wpengine.comWP Engine URL

Site Information

  • Site Name: ZZZ | Forms Documentation

  • Install Name: datacapturedoc

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2025-02-21

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 2cd37d36-aa46-4bc7-aa07-95a8c4dc5142
  • Site ID: 894de0ae-2740-4a2d-9cda-ec6a3a859649
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.33 - driverlesscars

WordPress site hosted on WP Engine

Overview

WordPress site driverlesscars hosted on WP Engine.

URLType
https://driverlesscars.adrianflux.co.ukPrimary Domain
https://driverlesscars.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Driverless Cars

  • Install Name: driverlesscars

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2022-05-04

Tags

  • Adrian Flux

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 20aa3817-6d5d-4a78-a307-378d20cd3879
  • Site ID: e0a933bd-ff59-41a6-8979-30631581005c
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.34 - fluxcapacitor

WordPress site hosted on WP Engine

Overview

WordPress site fluxcapacitor hosted on WP Engine.

URLType
https://www.flux-capacitor.co.ukPrimary Domain
https://fluxcapacitor.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Flux Capacitor

  • Install Name: fluxcapacitor

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2022-05-10

Tags

  • Adrian Flux

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 3b5bfa68-fb4a-4887-a1db-90ee49e75dc8
  • Site ID: ec8a80e0-57e2-4ca5-8bbb-d5b3e7f2a6a6
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.35 - fluxposure

WordPress site hosted on WP Engine

Overview

WordPress site fluxposure hosted on WP Engine.

URLType
https://blog.adrianflux.co.ukPrimary Domain
https://fluxposure.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Fluxposure

  • Install Name: fluxposure

  • WordPress Version: 6.9

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2024-02-01

Tags

  • Adrian Flux
  • Instant Callback

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 1079b877-d9d8-4c2c-905a-a4422609364b
  • Site ID: b7902e37-72dc-4169-8e14-fa7322e69f53
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.36 - forevercars

WordPress site hosted on WP Engine

Overview

WordPress site forevercars hosted on WP Engine.

URLType
https://forever-cars.adrianflux.co.ukPrimary Domain
https://forevercars.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Forever Cars

  • Install Name: forevercars

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2022-04-11

Tags

  • Adrian Flux

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 4e86bc0f-00b1-484f-9e76-81f46c3f2e0f
  • Site ID: 4740c365-295c-4e49-9690-49855c8cfbe2
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.37 - fuellingaround

WordPress site hosted on WP Engine

Overview

WordPress site fuellingaround hosted on WP Engine.

URLType
https://fuelling-around.adrianflux.co.ukPrimary Domain
https://fuellingaround.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Fuelling Around

  • Install Name: fuellingaround

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2022-04-06

Tags

  • Adrian Flux

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 33d85a40-ec51-45fd-9ce9-3826f5aedefe
  • Site ID: ee7b18d5-4c1c-4935-930b-f4de646a640a
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.38 - fullchat

WordPress site hosted on WP Engine

Overview

WordPress site fullchat hosted on WP Engine.

URLType
https://full-chat.bikesure.co.ukPrimary Domain
https://fullchat.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Full Chat Podcast

  • Install Name: fullchat

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2024-04-16

Tags

  • Bikesure

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 7a02b523-8fbe-402f-9d82-9a923822966b
  • Site ID: d97cb978-c1d9-4d6d-805d-7e49ee21e7d4
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.39 - hondainsurance

WordPress site hosted on WP Engine

Overview

WordPress site hondainsurance hosted on WP Engine.

URLType
https://callback.honda-bikeinsurance.co.ukPrimary Domain
https://hondainsurance.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Honda Insurance

  • Install Name: hondainsurance

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2025-03-13

Tags

  • Bikesure
  • Scheduled Callback

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: fe4847cf-0c87-469a-b8f3-5704a4540e61
  • Site ID: b49f2956-cbdd-41d1-8224-5d1914168936
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.40 - intelligentins

WordPress site hosted on WP Engine

Overview

WordPress site intelligentins hosted on WP Engine.

URLType
https://intelligent-instructor.adrianflux.co.ukPrimary Domain
https://intelligentins.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Intelligent Instructor

  • Install Name: intelligentins

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2023-11-09

Tags

  • Adrian Flux
  • Scheduled Callback

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: e8a92d05-5739-4fc1-a488-608b0df57118
  • Site ID: 6ba3d253-1a23-4129-8979-d48823ea111a
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.41 - kawasakiinsura

WordPress site hosted on WP Engine

Overview

WordPress site kawasakiinsura hosted on WP Engine.

URLType
https://kawasaki-callback.bks-test.co.ukPrimary Domain
https://kawasakiinsura.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Kawasaki Insurance

  • Install Name: kawasakiinsura

  • WordPress Version: 6.8.3

  • Environment: staging

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2025-04-21

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: d5db4684-da9d-4749-b59d-f5ef38184d04
  • Site ID: a72d8730-8a59-4894-8c58-f8dae4daa833
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.42 - meganchallenge

WordPress site hosted on WP Engine

Overview

WordPress site meganchallenge hosted on WP Engine.

URLType
https://www.meganschallenge.co.ukPrimary Domain
https://meganchallenge.wpengine.comWP Engine URL

Site Information

  • Site Name: ZZZ | Megans Challenge

  • Install Name: meganchallenge

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2022-10-08

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: b8cbfc0e-5757-4df4-a2f3-c57414565d1b
  • Site ID: 0fc8e3e8-d768-4832-9a4f-f2d370f88eca
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.43 - noboxins

WordPress site hosted on WP Engine

Overview

WordPress site noboxins hosted on WP Engine.

URLType
https://www.noboxinsurance.co.ukPrimary Domain
https://noboxins.wpengine.comWP Engine URL

Site Information

  • Site Name: NB | Nobox Insurance

  • Install Name: noboxins

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2023-11-10

Tags

  • Nobox Insurance

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 51703f02-dbd4-4dcf-aaf2-2c50ed9471c9
  • Site ID: 1e6355a2-c2bb-429b-859a-59cd7298e39f
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.44 - silverstonecl1

WordPress site hosted on WP Engine

Overview

WordPress site silverstonecl1 hosted on WP Engine.

URLType
https://silverstone-festival.adrianflux.co.ukPrimary Domain
https://silverstonecl1.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Silverstone Festival

  • Install Name: silverstonecl1

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2022-12-12

Tags

  • Adrian Flux
  • Scheduled Callback

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: ff78bdaa-a561-478e-bf1a-dc1321c6d5f0
  • Site ID: 77ae1250-38c0-4c0e-a000-85e747ea8fae
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.45 - stcustomers

WordPress site hosted on WP Engine

Overview

WordPress site stcustomers hosted on WP Engine.

URLType
https://customers.sterling-insurance.co.ukPrimary Domain
https://stcustomers.wpengine.comWP Engine URL

Site Information

  • Site Name: ST | Sterling Insurance Customers

  • Install Name: stcustomers

  • WordPress Version: 6.9

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2024-01-23

Tags

  • Sterling Insurance

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 4b23f949-23f4-4d54-8017-cd51a9d0ba4e
  • Site ID: 2bbc0614-4771-473c-9989-9c4887417c49
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.46 - sterblog

WordPress site hosted on WP Engine

Overview

WordPress site sterblog hosted on WP Engine.

URLType
https://blog.sterling-insurance.co.ukPrimary Domain
https://sterblog.wpengine.comWP Engine URL

Site Information

  • Site Name: ST | Sterling Insurance Blog

  • Install Name: sterblog

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2024-02-06

Tags

  • Sterling Insurance

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 2037eb20-3182-44e9-9dc2-7f0ec6bc811d
  • Site ID: 26a4c5b8-3499-4d91-a461-4262f24c89dd
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.47 - sterlingcomps

WordPress site hosted on WP Engine

Overview

WordPress site sterlingcomps hosted on WP Engine.

URLType
https://competitions.sterling-insurance.co.ukPrimary Domain
https://sterlingcomps.wpengine.comWP Engine URL

Site Information

  • Site Name: ST | Sterling Insurance Competitions

  • Install Name: sterlingcomps

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2022-04-30

Tags

  • Sterling Insurance

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: dbdacfd1-fef1-42de-8e36-43c764165e89
  • Site ID: a96d229a-e6da-4732-a242-9af4d208fcde
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.48 - sterlinginsni

WordPress site hosted on WP Engine

Overview

WordPress site sterlinginsni hosted on WP Engine.

URLType
https://northern-ireland.sterling-insurance.co.ukPrimary Domain
https://sterlinginsni.wpengine.comWP Engine URL

Site Information

  • Site Name: ST | Sterling Insurance Northern Ireland

  • Install Name: sterlinginsni

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2023-11-11

Tags

  • Sterling Insurance
  • Instant Callback
  • Scheduled Callback

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: b37f38fd-fd10-46e7-8c4b-54a9449bc244
  • Site ID: a5200a7c-56b8-4007-97d6-c1ae5ec82acd
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.49 - sterlinginsure

WordPress site hosted on WP Engine

Overview

WordPress site sterlinginsure hosted on WP Engine.

URLType
https://sterling-insurance.sterling-insurance.co.ukPrimary Domain
https://sterlinginsure.wpengine.comWP Engine URL

Site Information

  • Site Name: ST | Sterling Insurance

  • Install Name: sterlinginsure

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2024-03-21

Tags

  • Sterling Insurance
  • Instant Callback
  • Scheduled Callback

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 2205b380-82b6-46e0-a1b2-4cf6a77d81bb
  • Site ID: cdc4017c-3860-4766-8b7f-e9dc970ec444
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.50 - ststerlingins1

WordPress site hosted on WP Engine

Overview

WordPress site ststerlingins1 hosted on WP Engine.

URLType
https://sterling-insurance.ster-test.co.ukPrimary Domain
https://ststerlingins1.wpengine.comWP Engine URL

Site Information

  • Site Name: ST | Sterling Insurance

  • Install Name: ststerlingins1

  • WordPress Version: 6.8.3

  • Environment: staging

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2024-02-20

Tags

  • Sterling Insurance
  • Instant Callback
  • Scheduled Callback

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 8c5d40bb-92c1-4021-8d33-d31f567c16f4
  • Site ID: cdc4017c-3860-4766-8b7f-e9dc970ec444
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.51 - suzukiinsuranc

WordPress site hosted on WP Engine

Overview

WordPress site suzukiinsuranc hosted on WP Engine.

URLType
https://suzuki-callback.bks-test.co.ukPrimary Domain
https://suzukiinsuranc.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Suzuki Insurance

  • Install Name: suzukiinsuranc

  • WordPress Version: 6.8.3

  • Environment: staging

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2025-04-22

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: a7628976-9fc3-4147-a705-bbcb13ad1f23
  • Site ID: 12e7cccf-b516-4307-934e-52e18c56e6da
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.52 - top10cars

WordPress site hosted on WP Engine

Overview

WordPress site top10cars hosted on WP Engine.

URLType
https://top-10-cars.adrianflux.co.ukPrimary Domain
https://top10cars.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | Top 10 Cars

  • Install Name: top10cars

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2022-05-09

Tags

  • Adrian Flux

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 5e3b0389-4216-4561-93f8-9e542f036390
  • Site ID: 35a7f537-be45-48f1-82b8-bc284ae0df25
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

2.2.53 - trinitylane

WordPress site hosted on WP Engine

Overview

WordPress site trinitylane hosted on WP Engine.

URLType
https://www.trinitylane.co.ukPrimary Domain
https://trinitylane.wpengine.comWP Engine URL

Site Information

  • Site Name: TL | Trinity Lane

  • Install Name: trinitylane

  • WordPress Version: 6.9

  • Environment: production

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2023-11-10

Tags

  • Trinity Lane

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 6190dda4-00f5-45b1-8a88-d79efc121283
  • Site ID: 95ce09c2-f1d8-437d-ba2e-37a7846f8909
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.54 - triumphinsuran

WordPress site hosted on WP Engine

Overview

WordPress site triumphinsuran hosted on WP Engine.

URLType
https://triumph-callback.bks-test.co.ukPrimary Domain
https://triumphinsuran.wpengine.comWP Engine URL

Site Information

  • Site Name: BKS | Triumph Insurance

  • Install Name: triumphinsuran

  • WordPress Version: 6.8.3

  • Environment: staging

  • PHP Version: 8.2

  • Status: active

  • Multisite: No

  • Created: 2025-04-22

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: 0ed8f23d-ef2a-469a-bb34-429814c668e6
  • Site ID: 0d5be307-f89c-4269-92b0-0c53c65fccea
  • Account ID: 1df5f442-982f-4ded-b8a8-ff64bf4f5c6b

2.2.55 - ukuscarparts

WordPress site hosted on WP Engine

Overview

WordPress site ukuscarparts hosted on WP Engine.

URLType
https://uk-us-car-part-names.adrianflux.co.ukPrimary Domain
https://ukuscarparts.wpengine.comWP Engine URL

Site Information

  • Site Name: AF | UK & US Car Part Names

  • Install Name: ukuscarparts

  • WordPress Version: 6.8.3

  • Environment: production

  • PHP Version: 8.4

  • Status: active

  • Multisite: No

  • Created: 2022-05-10

Tags

  • Adrian Flux

Plugins & Themes

Plugin and theme information is not available via WP Engine API. This section can be manually updated with active plugins and theme details.

WP Engine Details

  • Install ID: c4238792-85bc-4a56-bd8a-7bb7456a5f39
  • Site ID: 95b0d464-b95c-47b2-b575-e69414778ecf
  • Account ID: 67f3426d-ea0c-4d81-a2c6-cbdf3fd91900

3 - External

3rd party services and APIs

3.1 - Google

Google API/Services

3.1.1 - Google Maps API

Google Maps JavaScript API integration for location-based services

Overview

The Google Maps JavaScript API is used across our applications to provide interactive mapping, geocoding, and location-based functionality.

Official Documentation

For complete API reference and guides, see the Google Maps JavaScript API Documentation .

Usage in Our Applications

Common Features

  • Interactive Maps - Display dealerships and service locations
  • Geocoding - Convert addresses to coordinates
  • Place Search - Find nearby locations
  • Custom Markers - Branded map pins and info windows

API Key Management

Google Maps API keys are configured via environment variables:

  • GOOGLE_MAPS_API_KEY - API key for accessing Google Maps services

Key Resources

Support & Billing

4 - Memos

Technical memos and in-depth research documents

Overview

This section contains technical memos and in-depth research documents covering architectural decisions, technical analyses, and comprehensive guides for complex topics.

Browse Memos

Navigate through the sidebar to explore individual memos, or use the search feature to find specific documents.

4.1 - Sample Memo

A sample memo demonstrating the structure and format

Executive Summary

This is a sample memo that demonstrates the recommended structure and format for technical memos. It provides a template that can be used as a starting point for creating new memos.

Introduction

Purpose

Explain the purpose of the memo and what problems or questions it addresses.

Scope

Define the scope of the document, including what is covered and what is explicitly out of scope.

Audience

Identify the intended audience and any prerequisite knowledge required.

Background

Provide necessary background information and context for understanding the memo content.

Current State

Describe the current situation, challenges, or problems that motivated this memo.

Requirements

List any requirements or constraints that influenced the analysis or recommendations.

Technical Analysis

Approach

Describe the methodology or approach used in the analysis.

Findings

Present the key findings from the technical analysis.

Trade-offs

Discuss the trade-offs considered and how different options were evaluated.

Recommendations

Provide specific recommendations based on the analysis.

Implementation Considerations

Discuss practical considerations for implementing the recommendations.

Risk Assessment

Identify potential risks and mitigation strategies.

Conclusion

Summarize the key points and recommendations.

References

  • List relevant documentation
  • External resources
  • Related memos

4.2 - Viitata Tenancy Infrastructure

Migration from single-tenant to multi-tenant architecture

Executive Summary

This memo documents the strategic architecture migration for Viitata from a single-tenant-per-instance model to a multi-tenant architecture on Heroku. This migration addresses critical operational inefficiencies, enables deployment of the new Viitata version with its required worker architecture, and significantly reduces both current costs and the cost of scaling while eliminating DevOps friction for client onboarding.

Key Changes:

  • Architecture: Single-tenant-per-instance → Multi-tenant shared infrastructure
  • Platform: Heroku (no change)
  • Application Version: Current (single worker) → New version (3 workers required)
  • Cost Impact: $96/month currently → $288/month if upgraded on single-tenant → $130/month on multi-tenant
  • Cost Savings: 55% reduction vs. deploying new version on single-tenant architecture

Introduction

Purpose

This document outlines the rationale, technical approach, and benefits of migrating Viitata from a distributed single-tenant-per-instance model to a consolidated multi-tenant architecture on Heroku.

Scope

This memo covers:

  • Current single-tenant-per-instance architecture on Heroku
  • New Viitata version requirements (3-worker architecture)
  • Proposed multi-tenant architecture on Heroku
  • Cost analysis and operational benefits
  • Technical considerations and trade-offs

Out of scope:

  • Detailed application code changes for multi-tenancy
  • Specific Heroku configuration details
  • Data migration procedures and implementation timeline

Audience

This document is intended for technical leadership, DevOps engineers, and stakeholders involved in infrastructure planning and decision-making.

Background

Current State: Single-Tenant-Per-Instance on Heroku

Viitata currently operates with a single-tenant-per-instance model on Heroku, consisting of:

Infrastructure per Tenant:

  • 1 Heroku application instance (single worker)
  • 1 PostgreSQL database
  • 1 Redis cache instance
  • Cost: ~$16/month per tenant

Current Deployment:

  • 6 production instances running current Viitata version
  • Each instance operates as a single-worker application
  • Total monthly cost: ~$96 (6 instances × $16)
  • Each instance requires independent CI/CD pipeline
  • Each instance requires separate DevOps configuration

Important Note: The current architecture runs an older version of Viitata that does not require the 3-worker architecture. However, the new version of Viitata cannot be deployed without this infrastructure change.

Challenges with Current Architecture

1. Cost Scalability Concerns

With 6 production tenants at $16/month each, the current architecture costs approximately $96/month. While manageable at this scale, the cost scales linearly with each new tenant ($16 per additional tenant). More critically, the new version of Viitata requires a 3-worker architecture that would triple costs to approximately $288/month for the same 6 tenants.

2. DevOps Friction

Each new client onboarding requires:

  • Provisioning new Heroku application
  • Configuring new PostgreSQL database
  • Setting up new Redis cache
  • Configuring CI/CD pipeline
  • Managing environment variables and secrets
  • Setting up monitoring and logging

This creates substantial friction and delays in client onboarding.

3. CI/CD Maintenance Overhead

Maintaining 6 separate CI/CD pipelines creates:

  • Increased complexity in deployment processes
  • Higher risk of configuration drift
  • Difficulty in applying updates uniformly
  • Additional testing burden across instances

4. Blocking Issue: New Viitata Version Requirements

The new version of Viitata fundamentally requires three distinct worker types to function:

  • Web worker: Handles HTTP requests
  • Celery worker: Processes asynchronous tasks
  • Celery Beat worker: Manages scheduled tasks and periodic jobs

This is not optional - the new Viitata version cannot be deployed without all three workers running.

Under the single-tenant model, deploying the new version would require:

  • 18 total worker processes (6 instances × 3 workers)
  • Tripling of infrastructure costs per tenant (from $16 to ~$48 per tenant)
  • Total monthly cost increase from $96 to approximately $288/month
  • 18 separate processes to monitor and manage

Critical Impact: The single-tenant architecture makes it economically and operationally prohibitive to deploy the new version of Viitata. Without migrating to multi-tenant, the platform cannot evolve.

Technical Analysis

Proposed Architecture: Multi-Tenant on Heroku

The new architecture consolidates all tenants into a single shared Heroku infrastructure:

Shared Infrastructure:

  • 1 Heroku application (supporting 3 worker types)
  • 1 Heroku PostgreSQL database (with tenant isolation)
  • 1 Heroku Redis cache (with tenant namespacing)
  • Estimated cost: ~$130/month total

Worker Configuration:

  • 1 web worker (serving all tenants)
  • 1 Celery worker (processing tasks for all tenants)
  • 1 Celery Beat worker (managing schedules for all tenants)
  • Total: 3 workers supporting all tenants

Cost Analysis

Architecture ModelViitata VersionTenantsWorkersMonthly CostCost per Tenant
Current (Single-Tenant)Old66 (1 per instance)$96$16.00
Single-Tenant UpgradedNew618 (3 per instance)$288$48.00
Multi-Tenant (Proposed)New63 (shared)$130$21.67
Savings vs. Upgraded---83%-$158/month-55%

Key Insights:

  • Current architecture cannot run the new Viitata version without significant cost increase
  • New version’s 3-worker requirement would triple single-tenant costs ($96 → $288)
  • Multi-tenant architecture enables new version deployment at 55% lower cost than single-tenant upgrade
  • Marginal cost advantage: Adding tenant #7 costs $0/month (vs. $48/month in single-tenant)
  • Cost efficiency improves with scale: 10 tenants = $13/tenant, 20 tenants = $6.50/tenant

Benefits

1. Cost Reduction

  • 83% reduction in infrastructure costs
  • Costs remain flat as tenant count grows (until scaling threshold)
  • Predictable cost model

2. Operational Efficiency

  • Single CI/CD pipeline for all tenants
  • Unified deployment process
  • Consistent configuration across all tenants
  • Reduced maintenance overhead

3. Client Onboarding

  • Near-instant tenant provisioning (database record vs. full infrastructure)
  • Minimal DevOps involvement
  • Faster time-to-value for new clients
  • Reduced onboarding friction

4. Enables New Viitata Version Deployment

  • Supports required 3-worker architecture (web, Celery, Celery Beat)
  • 3 shared workers support all tenants (vs. 18 separate workers in single-tenant)
  • Makes new version economically viable to deploy
  • Simplified monitoring and management
  • Better resource utilization
  • Easier to scale horizontally when needed

Technical Considerations

Data Isolation

  • Tenant identification at application layer
  • Row-level security in PostgreSQL
  • Redis key namespacing by tenant ID
  • Careful query design to prevent data leakage

Performance

  • Shared resources require proper resource allocation
  • Connection pooling for database efficiency
  • Caching strategies to prevent tenant interference
  • Monitoring to identify tenant-specific performance issues

Security

  • Tenant isolation at application and data layers
  • Secure tenant context management
  • Audit logging for compliance
  • Regular security reviews of multi-tenant code paths

Scalability

  • Horizontal scaling when single instance reaches capacity
  • Database sharding if needed for very large tenant counts
  • CDN and edge caching for static assets
  • Load balancing across multiple application instances

Trade-offs

Advantages

  • Dramatic cost reduction
  • Simplified operations
  • Faster client onboarding
  • Better resource utilization
  • Easier maintenance and updates

Disadvantages

  • Tenant isolation complexity in application code
  • Potential “noisy neighbor” issues
  • Database restore impact: Currently, database snapshots can be restored per-tenant without affecting other clients. In multi-tenant architecture, a database restore would affect all tenants simultaneously, making it impossible to roll back a single client’s data due to a bug or data issue
  • More complex deployment rollback scenarios
  • Requires careful tenant-aware code design
  • Less isolation between tenants compared to separate instances

Risk Mitigation

  • Comprehensive testing of tenant isolation
  • Resource limits per tenant
  • Monitoring and alerting for anomalies
  • Gradual migration approach
  • Ability to isolate problematic tenants if needed
  • Database restore mitigation:
    • Implement application-level point-in-time recovery per tenant
    • Maintain granular database backups with tenant-specific restore capabilities
    • Use transaction logs to selectively restore tenant data
    • Establish procedures for tenant-specific data rollback without full database restore
    • More rigorous testing and staging processes to prevent production data issues
    • Consider automated daily tenant-level logical backups (pg_dump per tenant)

Conclusion

The migration from a single-tenant-per-instance architecture to a multi-tenant architecture on Heroku represents a strategic necessity for Viitata’s evolution. This change delivers:

  • Enables deployment of new Viitata version with required 3-worker architecture
  • 55% cost reduction vs. deploying new version on single-tenant ($288/month → $130/month)
  • Dramatic reduction in operational complexity (6 CI/CD pipelines → 1, 18 workers → 3)
  • Near-zero marginal cost for new tenants ($0 vs. $48/tenant in single-tenant)
  • Improving cost efficiency at scale: Cost per tenant decreases as platform grows
  • Eliminates DevOps friction in client onboarding

Without this migration, deploying the new version of Viitata would nearly triple costs while adding significant operational burden. The multi-tenant architecture not only makes the new version economically viable but also positions Viitata for sustainable growth with costs that improve with scale.

While multi-tenancy introduces complexity in application design around tenant isolation and data security, the alternative—remaining on single-tenant architecture—would either block the platform’s evolution or make it financially unsustainable. The operational benefits, cost savings, and improved scalability make this migration essential for Viitata’s future.

References

4.3 - Heroku to AWS Migration

Migration from Heroku to AWS for improved compliance, cost, and control

Executive Summary

This memo documents the strategic platform migration for Viitata from Heroku to AWS (Amazon Web Services). This migration addresses critical compliance requirements around UK data residency, reduces infrastructure costs, provides greater operational flexibility and control, and enables better performance and integration with additional AWS services.

Key Changes:

  • Platform: Heroku → AWS ECS (Elastic Container Service)
  • Region: EU-West-1 (Ireland) → EU-West-2 (London, UK)
  • Primary Driver: Compliance - UK data residency and backup retention
  • Additional Benefits: Cost reduction, greater control, performance improvements, AWS service ecosystem

Critical Compliance Issue: Currently on Heroku, while the primary database is in EU-West-1 (Ireland), database backups are retained in the USA. This creates compliance risks for UK data residency requirements. AWS enables full infrastructure and data containment within EU-West-2 (London).

Introduction

Purpose

This document outlines the rationale, technical approach, and benefits of migrating Viitata’s multi-tenant infrastructure from Heroku to AWS, with a focus on achieving UK data sovereignty and compliance requirements while improving operational capabilities.

Scope

This memo covers:

  • Current multi-tenant architecture on Heroku
  • Compliance and data residency challenges
  • Proposed multi-tenant architecture on AWS ECS
  • Cost analysis and operational benefits
  • Technical considerations and trade-offs

Out of scope:

  • Detailed AWS infrastructure-as-code configurations
  • Specific containerization implementation details
  • Data migration procedures and implementation timeline
  • Application code changes required for AWS

Audience

This document is intended for technical leadership, compliance officers, DevOps engineers, and stakeholders involved in infrastructure planning and decision-making.

Background

Current State: Multi-Tenant on Heroku

Viitata currently operates with a multi-tenant architecture on Heroku, consisting of:

Infrastructure:

  • 1 Heroku application (3 dynos: web, Celery worker, Celery Beat)
  • 1 Heroku PostgreSQL database in EU-West-1 (Ireland)
  • 1 Heroku Redis cache
  • Current cost: ~$130/month

Current Deployment:

  • Multi-tenant architecture supporting 6 production tenants
  • Single CI/CD pipeline
  • Heroku-managed infrastructure and scaling
  • Automatic SSL, DNS, and platform maintenance

Critical Issues with Current Platform

1. Compliance and Data Residency (Primary Driver)

Database Backup Location:

  • Primary database: EU-West-1 (Ireland, EU)
  • Database backups: Stored in USA (Heroku’s backup infrastructure)

This creates significant compliance risks:

  • UK data residency requirements cannot be met
  • Backup data crosses international boundaries
  • Potential violations of data protection regulations
  • Risk for clients requiring UK-only data storage
  • Audit and compliance reporting challenges

Regional Limitation:

  • Application and database in Ireland (EU-West-1), not UK
  • No option for UK-specific region on Heroku
  • Cannot guarantee UK data sovereignty

2. Cost Considerations

While Heroku provides managed services, the cost includes:

  • Premium for managed platform (~30-40% over raw compute)
  • Limited ability to optimize resource allocation
  • Dyno pricing model less flexible than AWS instance types
  • Add-on costs (PostgreSQL, Redis) with limited customization

3. Limited Control and Flexibility

Infrastructure Control:

  • Cannot customize underlying OS or runtime environment
  • Limited control over networking and security groups
  • Restricted access to infrastructure-level monitoring
  • Cannot implement custom security controls

Resource Optimization:

  • Fixed dyno sizes with limited granularity
  • Cannot right-size resources for specific workloads
  • Limited ability to use spot instances or reserved capacity
  • Cannot separate worker resources by type

4. Performance Constraints

Heroku Limitations:

  • Shared infrastructure with potential noisy neighbor issues
  • Limited database connection pooling options
  • Router timeout constraints (30 seconds)
  • Limited control over caching layers
  • Cannot implement custom CDN configurations

5. AWS Service Integration

Current limitations for integrating with AWS services:

  • External network calls to AWS services (S3, SES, etc.)
  • Additional latency for AWS service integration
  • Cannot use VPC peering or private networking
  • Limited IAM role-based security
  • Cannot leverage AWS-native monitoring and logging

Technical Analysis

Proposed Architecture: Multi-Tenant on AWS ECS

The new architecture migrates the multi-tenant application to AWS infrastructure with a fully containerized, role-based security model.

Architecture Overview

The following diagram illustrates the proposed AWS architecture:

graph TB
    subgraph Internet
        Users[Users/Clients]
    end

    subgraph "AWS EU-West-2 (London)"
        subgraph "VPC"
            subgraph "Public Subnets"
                ALB[Application Load Balancer<br/>HTTPS:443]
                NAT[NAT Gateway]
            end

            subgraph "Private Subnets"
                subgraph "ECS Fargate Cluster"
                    Web[Web Tasks<br/>nginx + gunicorn<br/>Auto-scaling]
                    Worker[Celery Worker Tasks<br/>Auto-scaling]
                    Beat[Celery Beat Task<br/>Single instance]
                end

                RDS[(RDS PostgreSQL<br/>Multi-AZ<br/>Automated Backups)]
                Cache[(ElastiCache Valkey<br/>Redis-compatible<br/>Cache & Results)]
            end
        end

        SQS[Amazon SQS<br/>Celery Message Broker<br/>Task Queue]
        S3[S3 Bucket<br/>Media Storage]
        CW[CloudWatch<br/>Logs & Metrics]
        SM[Secrets Manager<br/>Credentials]
    end

    Users -->|HTTPS| ALB
    ALB -->|Routes traffic| Web

    Web -->|IAM Role| S3
    Web -->|Read/Write| RDS
    Web -->|Cache/Sessions| Cache
    Web -->|Send tasks| SQS
    Web -->|Logs| CW
    Web -->|Get secrets| SM

    Worker -->|IAM Role| S3
    Worker -->|Read/Write| RDS
    Worker -->|Receive/Delete tasks| SQS
    Worker -->|Store results| Cache
    Worker -->|Logs| CW
    Worker -->|Get secrets| SM

    Beat -->|Send scheduled tasks| SQS
    Beat -->|Read/Write| RDS
    Beat -->|Logs| CW

    Web -.->|Outbound via| NAT
    Worker -.->|Outbound via| NAT
    Beat -.->|Outbound via| NAT

    classDef public fill:#e1f5ff,stroke:#01579b,stroke-width:2px
    classDef private fill:#f3e5f5,stroke:#4a148c,stroke-width:2px
    classDef data fill:#fff3e0,stroke:#e65100,stroke-width:2px
    classDef compute fill:#e8f5e9,stroke:#1b5e20,stroke-width:2px
    classDef aws fill:#fff9c4,stroke:#f57f17,stroke-width:2px

    class ALB,NAT public
    class Web,Worker,Beat compute
    class RDS,Cache data
    class S3,CW,SM,SQS aws

Core Infrastructure Components:

  1. Database Layer

    • Amazon RDS for PostgreSQL in EU-West-2 (London)
    • Multi-AZ deployment for high availability
    • Automated backups retained in EU-West-2
    • Point-in-time recovery capabilities
    • All tenant data with row-level isolation
  2. Cache Layer

    • Amazon ElastiCache with Valkey (Redis-compatible) in EU-West-2
    • Used for session storage, application caching, and Celery result backend
    • Tenant-namespaced keys for data isolation
    • High-performance in-memory data store
  3. Message Queue Layer

    • Amazon SQS (Simple Queue Service) in EU-West-2
    • Celery message broker for task distribution
    • Fully managed, serverless message queue
    • No infrastructure to maintain or scale
    • Automatic message retention and delivery
    • Dead letter queue for failed tasks
    • FIFO queues for task ordering if needed
    • Cost-effective: Pay only for messages processed
  4. Compute Layer - ECS Fargate

    Three separate ECS task definitions running on Fargate:

    Task Definition 1: Web Application

    • Container: nginx + gunicorn
    • Receives traffic from Application Load Balancer (ALB)
    • Handles HTTPS requests routed by ALB
    • Auto-scaling based on CPU/memory and request count
    • Appropriate resources: ~0.5-1 vCPU, 1-2GB memory
    • Multiple tasks for high availability and load distribution
    • ALB distributes traffic across all healthy web tasks

    Task Definition 2: Celery Worker

    • Container: Celery worker process
    • Consumes tasks from Amazon SQS queue
    • Auto-scaling based on SQS queue depth (ApproximateNumberOfMessagesVisible) and CPU utilization
    • Right-sized resources: ~0.25-0.5 vCPU, 0.5-1GB memory
    • Can scale independently based on task backlog in SQS

    Task Definition 3: Celery Beat

    • Container: Celery Beat scheduler
    • Manages periodic and scheduled tasks
    • Publishes scheduled tasks to SQS queue
    • Fixed scaling: Single task (Beat requires single instance)
    • Minimal resources: ~0.25 vCPU, 0.5GB memory
    • Auto-restart on failure

    Rationale for Separate Task Definitions:

    • Each workload has different resource requirements
    • Independent scaling policies per service type
    • Web scales with traffic, workers scale with queue depth
    • Cost optimization: Right-size each workload separately
    • Isolation: Issues in one service don’t affect others

    Auto-Scaling Configuration:

    ECS provides automatic scaling that adjusts the number of running tasks based on demand, with both scale-up and scale-down capabilities:

    Web Tasks Auto-Scaling:

    • Metrics: CPU utilization, memory utilization, ALB request count per target
    • Scale-up triggers:
      • CPU > 70% for 2 minutes → Add tasks
      • Requests per task > 1000/min → Add tasks
    • Scale-down triggers:
      • CPU < 30% for 5 minutes → Remove tasks
      • Requests per task < 200/min → Remove tasks
    • Min/Max tasks: 2 minimum (HA), 10 maximum
    • Benefits: Handles traffic spikes from multiple tenants, scales down during low usage to save costs

    Celery Worker Auto-Scaling:

    • Metrics: CPU utilization, SQS ApproximateNumberOfMessagesVisible (native CloudWatch metric)
    • Scale-up triggers:
      • SQS queue depth > 100 messages → Add workers
      • CPU > 80% for 3 minutes → Add workers
    • Scale-down triggers:
      • SQS queue depth < 10 messages for 10 minutes → Remove workers
      • CPU < 20% for 10 minutes → Remove workers
    • Min/Max tasks: 1 minimum, 5 maximum
    • Benefits: SQS provides native queue metrics for accurate scaling decisions; efficiently processes task backlog, reduces to minimum during idle periods

    Celery Beat Scaling:

    • Fixed at 1 task (Beat scheduler requires single instance)
    • Auto-restart on failure for reliability

    Multi-Tenant Scaling Benefits:

    Auto-scaling is particularly valuable for multi-tenant architecture:

    • Unpredictable tenant activity: Different tenants have different usage patterns and peak times
    • Cost efficiency: Automatically scales down during low-usage periods (nights, weekends)
    • Spike handling: Automatically scales up when multiple tenants become active simultaneously
    • Resource optimization: Pays only for resources actually needed at any given time
    • Example scenario:
      • During business hours (9am-5pm): 6-8 web tasks handle peak multi-tenant load
      • During nights (11pm-6am): Scales down to 2 web tasks, saving ~$40-60/month
      • Weekend spikes: Auto-scales up to handle unexpected tenant activity

    Comparison to Heroku:

    Scaling FeatureHerokuAWS ECS
    Scale-upManual or via add-onsAutomatic based on metrics
    Scale-downManual onlyAutomatic (saves costs)
    Scaling metricsLimited (response time, throughput)Extensive (CPU, memory, custom CloudWatch metrics, ALB metrics, queue depth)
    Per-service scalingRequires multiple appsBuilt-in per task definition
    Cost during low usageFixed (pays for min dynos)Dynamic (scales to minimum)
    Multi-tenant optimizationLimitedExcellent - handles variable tenant load patterns

    Cost Impact:

    • Scale-down capability can reduce compute costs by 40-50% during off-peak hours
    • For multi-tenant with variable load, average monthly compute cost drops significantly
    • Example: Instead of running 6 web tasks 24/7, average 4 tasks/hour = 33% cost reduction
  5. Networking and Load Balancing

    • Application Load Balancer (ALB) as entry point for all web traffic
      • Sits in public subnets
      • Terminates HTTPS/SSL connections
      • Routes traffic to web task definition only
      • Health checks on web tasks
      • Automatically distributes load across multiple web task instances
    • VPC with public and private subnets across multiple Availability Zones
    • Private subnets for ECS tasks, RDS, and ElastiCache (no direct internet access)
    • Public subnets for ALB only
    • NAT Gateway for outbound internet access from private subnets
    • Security groups for service-level network isolation
      • ALB security group: Allow inbound 443 from internet
      • Web task security group: Allow inbound from ALB only
      • Worker task security groups: No inbound internet traffic
      • RDS/ElastiCache security groups: Allow access from ECS tasks only
  6. Security Model: Role-Based Authentication

    Shift from IAM Users to IAM Roles:

    • Current (Heroku): IAM user credentials stored as environment variables for AWS service access (S3, SES, etc.)
    • Proposed (AWS): ECS task IAM roles with least-privilege permissions

    IAM Role-Based Security Benefits:

    • No stored credentials: Tasks assume roles automatically via ECS Task Role
    • Dramatically reduced credential leakage risk: No long-lived access keys in environment variables or code
    • Automatic credential rotation: AWS STS provides temporary credentials (auto-expire and rotate)
    • Least-privilege access: Each task definition gets only required permissions
    • Audit trail: CloudTrail logs all role assumption and service access
    • Infrastructure-as-code: IAM roles defined in CloudFormation templates
    • Centralized security: All permissions defined and version-controlled

    Example Security Architecture:

    • Web task role: Read S3 (media), write CloudWatch Logs
    • Celery worker task role: Read/Write S3, SES send email, SQS receive/delete messages, CloudWatch Logs
    • Celery Beat task role: SQS send messages, CloudWatch Logs only
    • RDS access: PostgreSQL username/password from Secrets Manager (accessed via IAM role)
    • SQS access: Fully controlled via IAM roles (no credentials needed)
    • No IAM user access keys anywhere in the system
  7. Additional AWS Services

    • Amazon SQS for Celery message broker (fully managed queue)
    • CloudWatch Logs for centralized logging
    • CloudWatch Metrics for monitoring and alerting (includes native SQS metrics)
    • AWS Secrets Manager for database credentials and API keys
    • S3 for media file storage (UK region)
    • CloudFormation for infrastructure-as-code deployment
    • ECR (Elastic Container Registry) for Docker image storage

Region and Compliance:

  • All resources in EU-West-2 (London, UK)
  • No data transfer outside UK jurisdiction
  • Estimated cost: ~$90-115/month (12-30% savings, includes SQS)

Connectivity Flow

Internet (HTTPS:443)
  ↓
Application Load Balancer (Public Subnet)
  ↓ (Routes to web tasks only)
ECS Web Tasks (nginx + gunicorn) (Private Subnet)
  ↓
  ├─→ RDS PostgreSQL (Private Subnet)
  ├─→ ElastiCache Valkey (Private Subnet - cache/sessions)
  ├─→ Amazon SQS (Send tasks via IAM role)
  └─→ S3 (via IAM role)

ECS Celery Workers (Private Subnet)
  ↓
  ├─→ RDS PostgreSQL (Private Subnet)
  ├─→ ElastiCache Valkey (Private Subnet - result backend)
  ├─→ Amazon SQS (Receive/Delete tasks via IAM role)
  └─→ S3 (via IAM role)

ECS Celery Beat (Private Subnet)
  ↓
  ├─→ RDS PostgreSQL (Private Subnet)
  └─→ Amazon SQS (Send scheduled tasks via IAM role)

Key Points:

  • Only web tasks receive traffic from ALB - Workers have no inbound internet traffic
  • All three task definitions connect to RDS
  • Celery uses Amazon SQS as message broker - fully managed, serverless queue
  • ElastiCache Valkey used for caching, sessions, and Celery result backend
  • All ECS tasks connect to AWS services (S3, SQS, CloudWatch) via IAM roles
  • No stored credentials required anywhere
  • SQS provides native CloudWatch metrics for auto-scaling

Infrastructure-as-Code

The entire architecture is defined in CloudFormation templates:

  • VPC, subnets, route tables, security groups
  • RDS database configuration
  • ElastiCache cluster configuration
  • SQS queues (standard and dead letter queues)
  • ECS cluster, task definitions, and services
  • Application Load Balancer and target groups
  • IAM roles and policies
  • CloudWatch alarms and dashboards

Benefits:

  • Version-controlled infrastructure
  • Reproducible environments (staging = production)
  • No manual configuration or drift
  • Peer-reviewed infrastructure changes via Git
  • Disaster recovery: Rebuild from templates

CI/CD Pipeline

GitHub Actions Workflow:

The deployment pipeline is automated via GitHub Actions, providing consistent and reliable deployments:

graph LR
    A[Code Push to GitHub] --> B[GitHub Actions Triggered]
    B --> C[Build Docker Image]
    C --> D[Push to ECR]
    D --> E[Update ECS Task Definitions]
    E --> F[Deploy Web Tasks]
    E --> G[Deploy Celery Workers]
    E --> H[Deploy Celery Beat]

    style A fill:#e8f5e9
    style B fill:#fff3e0
    style C fill:#e1f5ff
    style D fill:#f3e5f5
    style E fill:#fff9c4
    style F fill:#e8f5e9
    style G fill:#e8f5e9
    style H fill:#e8f5e9

Deployment Process:

  1. Trigger: Code pushed to main branch or pull request merged
  2. Build: GitHub Actions workflow executes
    • Builds single Docker image containing application code
    • Runs tests (optional: can block deployment on failure)
    • Tags image with commit SHA and/or semantic version
  3. Push to ECR: Docker image pushed to Elastic Container Registry in EU-West-2
    • ECR provides secure, private Docker registry
    • Images stored in same region as deployment (UK)
    • Automatic image scanning for vulnerabilities (optional)
  4. Update Task Definitions: GitHub Actions updates ECS task definitions
    • All three task definitions reference the same Docker image
    • Only the container command/entrypoint differs per service:
      • Web: gunicorn command
      • Celery Worker: celery worker command
      • Celery Beat: celery beat command
  5. Deploy: ECS performs rolling updates
    • Web tasks: Rolling deployment with health checks via ALB
    • Celery Workers: Rolling update, new tasks pick up from queue
    • Celery Beat: Stop old task, start new task (single instance)

Single Image, Multiple Services:

All three ECS task definitions use the same Docker image from ECR. The service type is determined by the command executed:

# Example task definition differences
Web Task Definition:
  Image: <ECR_URI>:latest
  Command: ["gunicorn", "app.wsgi:application"]

Celery Worker Task Definition:
  Image: <ECR_URI>:latest  # Same image!
  Command: ["celery", "-A", "app", "worker"]

Celery Beat Task Definition:
  Image: <ECR_URI>:latest  # Same image!
  Command: ["celery", "-A", "app", "beat"]

Benefits:

  • Single build: One Docker image for all services (faster builds)
  • Consistency: All services run identical application code
  • Simplified versioning: Single image tag tracks deployment
  • Reduced storage: ECR stores one image instead of three
  • Atomic deployments: All services deployed from same code version

Comparison to Heroku:

AspectHerokuAWS ECS
Deployment triggergit push herokuGitHub Actions workflow
Build processHeroku buildpacksDocker image build
Artifact storageHeroku slug storageECR (version-controlled)
Deployment controlLimited (auto-deploy)Full control (approval gates, rollback)
Multi-serviceSeparate apps or ProcfileTask definitions with same image
Rollbackheroku releases:rollbackECS task definition revision or redeploy previous image tag

Additional CI/CD Capabilities:

  • Environment-specific deployments: Separate workflows for staging and production
  • Approval gates: Require manual approval before production deployment
  • Automated testing: Run integration tests against staging before production
  • Blue-green deployments: Deploy new version alongside old, switch traffic
  • Canary deployments: Gradually shift traffic to new version
  • Automated rollback: Detect failures via CloudWatch alarms and auto-rollback

Cost Analysis

ComponentHeroku (Current)AWS (Proposed)Notes
Web Application~$25-50~$20-35ECS Fargate or EC2 instances
Celery Worker~$25-50~$20-35Right-sized for workload
Celery Beat~$25-50~$10-15Smaller instance for scheduler
PostgreSQL~$15-20~$20-25RDS with backups in UK
Redis Cache~$15-20~$10-15ElastiCache (cache + result backend)
SQS Message QueueIncluded in dyno~$1-3Pay per million requests, negligible cost
Load BalancerIncluded~$15-20ALB costs
Total~$130/month~$90-115/month12-30% savings

Cost Optimization Opportunities:

  • Auto-scaling with scale-down: Automatically reduce running tasks during low-usage periods (40-50% compute savings during off-peak)
  • Reserved instances for baseline workloads (up to 50% additional savings)
  • Spot instances for Celery workers (up to 70% savings on compute)
  • S3 storage tiers for media files
  • CloudWatch log retention policies
  • Right-sizing based on actual usage patterns

Multi-Tenant Auto-Scaling Impact: The auto-scaling capability is particularly valuable for multi-tenant architecture where tenant usage patterns vary throughout the day. Instead of paying for peak capacity 24/7 (as with Heroku), ECS automatically scales down during low-usage periods, significantly reducing average compute costs.

Important Note: Cost savings are secondary to compliance requirements. Even if costs were equivalent, the migration would be necessary for UK data residency.

Benefits

1. Compliance and Data Sovereignty (Primary Benefit)

  • UK data residency: All infrastructure and data in EU-West-2 (London)
  • Backup compliance: Database backups remain in UK
  • Audit trail: Full control and visibility over data location
  • Regulatory compliance: Meets UK data protection requirements
  • Client confidence: Can guarantee UK-only data storage
  • Reduced legal risk: Eliminates cross-border data transfer concerns

2. Cost Efficiency

  • 15-30% immediate cost reduction (~$130 → ~$90-110/month)
  • Automatic scale-down during low usage: 40-50% additional compute savings during off-peak hours
  • Multi-tenant load optimization: Auto-scaling handles variable tenant usage patterns efficiently
  • Additional savings opportunities with reserved/spot instances
  • More granular resource allocation (no paying for unused capacity)
  • Flexible pricing models (on-demand, reserved, spot)
  • Pay only for actual resource consumption, not fixed capacity

3. Greater Control and Flexibility

Infrastructure Control:

  • Full control over container images and runtime environment
  • Custom networking and security group configuration
  • Direct access to infrastructure-level metrics
  • Ability to implement custom security controls
  • VPC configuration for network isolation

Operational Flexibility:

  • Choose instance types optimized for workload
  • Separate scaling policies per service
  • Custom monitoring and alerting
  • Advanced deployment strategies (blue/green, canary)

Infrastructure-as-Code:

  • 100% version-controlled infrastructure using CloudFormation templates
  • Entire infrastructure stack defined as code (VPC, ECS, RDS, ElastiCache, ALB, etc.)
  • Git-based workflow for infrastructure changes (review, approve, deploy)
  • Reproducible environments (staging matches production exactly)
  • Disaster recovery: Rebuild entire infrastructure from templates
  • Change tracking and audit trail for infrastructure modifications
  • Team collaboration on infrastructure changes via pull requests
  • No manual ClickOps or undocumented configuration drift

Heroku Limitation: On Heroku, infrastructure is configured via web UI or CLI commands that aren’t easily version-controlled. App configuration can be tracked, but the underlying platform infrastructure (databases, dynos, add-ons) requires manual provisioning and documentation.

4. Performance Improvements

AWS Performance Advantages:

  • Dedicated compute resources (no noisy neighbors)
  • Auto-scaling for traffic spikes: Automatically adds capacity when multiple tenants become active
  • Dynamic resource allocation: Scales up/down based on actual demand (CPU, memory, request count, queue depth)
  • Advanced connection pooling (RDS Proxy)
  • No 30-second timeout constraints
  • Custom CDN configuration (CloudFront)
  • Private networking between services (reduced latency)
  • Better database performance tuning options
  • Independent scaling per service type (web vs. workers)

5. AWS Service Ecosystem

Native Integration:

  • Amazon SQS for Celery message broker: Fully managed, serverless queue with no infrastructure to maintain
  • S3 for media and static file storage (same region)
  • SES for email services
  • Lambda for serverless functions
  • CloudWatch for comprehensive monitoring (includes native SQS metrics for auto-scaling)
  • AWS Secrets Manager for credential management
  • IAM roles for secure, passwordless service access
  • VPC endpoints for private AWS service access

SQS-Specific Benefits:

  • Zero infrastructure management: No Redis/ElastiCache broker to maintain or scale
  • Native CloudWatch metrics: ApproximateNumberOfMessagesVisible metric for accurate worker auto-scaling
  • Reliability: Built-in message durability and delivery guarantees
  • Dead letter queues: Automatic handling of failed tasks
  • Cost-effective: Pay only for messages processed (~$0.40 per million requests)
  • Unlimited scalability: No capacity planning required
  • IAM-based security: No broker credentials to manage

Technical Considerations

Containerization

ECS Container Setup:

  • Dockerize Django application (web, Celery, Beat)
  • Use ECR (Elastic Container Registry) for image storage
  • Multi-stage builds for optimized image sizes
  • Health checks for container orchestration
  • Environment-based configuration

Database Migration

RDS PostgreSQL:

  • Similar to Heroku Postgres (based on PostgreSQL)
  • Enhanced monitoring and performance insights
  • Automated backups with configurable retention
  • Multi-AZ deployment for high availability
  • Parameter groups for fine-tuned configuration
  • RDS Proxy for connection pooling

Networking and Security

VPC Configuration:

  • Private subnets for database and cache
  • Public subnets for load balancer
  • Security groups for service isolation
  • NAT Gateway for outbound traffic from private subnets
  • VPC endpoints for AWS services (S3, Secrets Manager)

Security Enhancements:

  • IAM roles instead of static credentials
  • Secrets Manager for sensitive configuration
  • AWS WAF (Web Application Firewall) for web protection
  • CloudTrail for audit logging
  • Encryption at rest and in transit

Monitoring and Observability

CloudWatch Integration:

  • Application logs aggregation
  • Custom metrics and dashboards
  • Alerting for critical events
  • Performance monitoring
  • Cost tracking and budgets

X-Ray (Optional):

  • Distributed tracing
  • Performance bottleneck identification
  • Request flow visualization

High Availability

AWS HA Features:

  • Multi-AZ RDS deployment
  • ECS service auto-recovery
  • Application Load Balancer health checks
  • Automated backups and snapshots
  • Cross-AZ redundancy

Trade-offs

Advantages

  • UK data residency and compliance (eliminates critical blocker)
  • Cost savings (15-30%)
  • 100% infrastructure-as-code with CloudFormation (version control, reproducibility, no drift)
  • Greater infrastructure control
  • Better performance and scalability
  • AWS service ecosystem integration
  • More flexible resource allocation
  • Enhanced security capabilities
  • Better monitoring and observability

Disadvantages

  • Increased operational responsibility (less managed than Heroku)
  • Steeper learning curve for AWS services
  • More complex infrastructure management
  • Need for AWS expertise in team
  • Infrastructure-as-code maintenance overhead
  • More components to monitor and maintain
  • Deployment complexity (ECS vs. git push heroku)

Risk Mitigation

  • Training and documentation: Invest in AWS training for team
  • Infrastructure-as-code: Use Terraform or CloudFormation for reproducibility
  • Gradual migration: Test thoroughly in staging environment
  • Monitoring from day one: Comprehensive CloudWatch setup before go-live
  • AWS support plan: Consider AWS Business Support for expert guidance
  • Runbooks and procedures: Document common operational tasks
  • Disaster recovery testing: Regular restore testing from backups

Compliance Requirements

UK Data Residency

Requirements Met:

  • All compute resources in EU-West-2 (London)
  • Database and backups in EU-West-2 (London)
  • Redis cache in EU-West-2 (London)
  • Application logs in EU-West-2 (CloudWatch Logs)
  • S3 storage in EU-West-2 (if used)

Audit Trail:

  • CloudTrail logs all API calls and data access
  • Resource tagging for compliance tracking
  • IAM policies enforce regional restrictions
  • AWS Organizations for governance controls

Data Protection Compliance

GDPR/UK GDPR Alignment:

  • Data processing within UK jurisdiction
  • No cross-border data transfers to USA
  • Right to erasure (tenant deletion capabilities)
  • Data encryption at rest and in transit
  • Audit logs for data access

Conclusion

The migration from Heroku to AWS ECS represents a strategic necessity for Viitata, driven primarily by UK data residency and compliance requirements. The current Heroku architecture creates unacceptable compliance risk due to database backups being retained in the USA, making it impossible to guarantee UK-only data storage.

This migration delivers:

  • Resolves critical compliance issue: UK data residency with backups in EU-West-2 (London)
  • Eliminates USA data transfer: All data and backups remain in UK
  • Cost savings: 15-30% base reduction + 40-50% additional savings from auto-scaling during off-peak
  • Auto-scaling with scale-down: Handles multi-tenant traffic spikes automatically while reducing costs during low-usage periods
  • 100% version-controlled infrastructure: CloudFormation templates for entire stack, eliminating manual configuration and drift
  • Greater operational control: Full infrastructure flexibility and customization
  • Performance improvements: Dedicated resources, auto-scaling for spikes, and advanced AWS features
  • AWS service ecosystem: Native integration with SQS (message broker), S3, CloudWatch, IAM, and other services
  • Serverless message queue: SQS eliminates need to manage message broker infrastructure
  • Enhanced security: VPC isolation, IAM roles, Secrets Manager, and encryption

While AWS requires greater operational expertise compared to Heroku’s managed platform, the compliance requirements make this migration essential. The additional benefits of cost savings, performance improvements, and operational flexibility provide further justification beyond the compliance imperative.

Without this migration, Viitata cannot serve clients with UK data residency requirements and remains exposed to compliance risks associated with cross-border backup storage.

References

5 - Frameworks

Web frameworks and libraries used across our applications

Overview

This section documents the various frameworks and libraries we use across our application portfolio.

Available Frameworks

Django

Python web framework used for building web applications. We use multiple versions across different projects.

Other Frameworks

Additional framework documentation will be added as needed.

5.1 - Django

Python web framework used across our applications

Overview

Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. We use various Django versions across our application portfolio.

Official Documentation

Django Versions in Use

Version-Specific Documentation

Browse documentation for specific Django versions we use:

Key Features

  • ORM (Object-Relational Mapping) - Database abstraction layer
  • Admin Interface - Auto-generated admin panel
  • URL Routing - Clean URL design
  • Template Engine - Built-in templating system
  • Security - Built-in protections against common vulnerabilities
  • Forms & Validation - Robust form handling

5.1.1 - Django 2.2 LTS

Django 2.2 LTS release documentation

Overview

Django 2.2 LTS is a Python web framework release. This is a Long Term Support (LTS) release with extended security updates.

Official Documentation

Applications Using Django 2.2

Key Information

  • Python Compatibility: Check official docs for supported Python versions
  • Support Status: LTS - Extended security support
  • End of Support: Check Django Roadmap

Resources

5.1.2 - Django 3.0

Django 3.0 release documentation

Overview

Django 3.0 is a Python web framework release.

Official Documentation

Applications Using Django 3.0

No applications currently using this framework.

Key Information

  • Python Compatibility: Check official docs for supported Python versions

Resources

5.1.3 - Django 3.1

Django 3.1 release documentation

Overview

Django 3.1 is a Python web framework release.

Official Documentation

Applications Using Django 3.1

No applications currently using this framework.

Key Information

  • Python Compatibility: Check official docs for supported Python versions

Resources

5.1.4 - Django 3.2 LTS

Django 3.2 LTS release documentation

Overview

Django 3.2 LTS is a Python web framework release. This is a Long Term Support (LTS) release with extended security updates.

Official Documentation

Applications Using Django 3.2

Key Information

  • Python Compatibility: Check official docs for supported Python versions
  • Support Status: LTS - Extended security support
  • End of Support: Check Django Roadmap

Resources

5.1.5 - Django 4.0

Django 4.0 release documentation

Overview

Django 4.0 is a Python web framework release.

Official Documentation

Applications Using Django 4.0

No applications currently using this framework.

Key Information

  • Python Compatibility: Check official docs for supported Python versions

Resources

5.1.6 - Django 4.1

Django 4.1 release documentation

Overview

Django 4.1 is a Python web framework release.

Official Documentation

Applications Using Django 4.1

Key Information

  • Python Compatibility: Check official docs for supported Python versions

Resources

5.1.7 - Django 4.2 LTS

Django 4.2 LTS release documentation

Overview

Django 4.2 LTS is a Python web framework release. This is a Long Term Support (LTS) release with extended security updates.

Official Documentation

Applications Using Django 4.2

Key Information

  • Python Compatibility: Check official docs for supported Python versions
  • Support Status: LTS - Extended security support
  • End of Support: Check Django Roadmap

Resources

5.1.8 - Django 5.0

Django 5.0 release documentation

Overview

Django 5.0 is a Python web framework release.

Official Documentation

Applications Using Django 5.0

No applications currently using this framework.

Key Information

  • Python Compatibility: Check official docs for supported Python versions

Resources

5.1.9 - Django 5.1

Django 5.1 release documentation

Overview

Django 5.1 is a Python web framework release.

Official Documentation

Applications Using Django 5.1

Key Information

  • Python Compatibility: Check official docs for supported Python versions

Resources

5.1.10 - Django 5.2 LTS

Django 5.2 release documentation

Overview

Django 5.2 is a Python web framework release. This is a Long Term Support (LTS) release with extended security updates.

Official Documentation

Applications Using Django 5.2

Key Information

  • Python Compatibility: Check official docs for supported Python versions

Resources

6 - Libraries

Private packages and libraries used across applications

Overview

This section contains documentation for private packages and libraries developed and maintained internally. These libraries are used across multiple applications in the ecosystem.

Browse Libraries

Navigate through the sidebar to explore individual library documentation, or use the search feature to find specific packages.

6.1 - bannerclick

Private package library

Overview

Private package library used across multiple applications.

Repository

Documentation


bannerclick


bannerclick api to set redirects and track visits

[Full documentation available in the repository README]

Usage

This library is used by 1 application(s):

6.2 - django-bulk-redirects

Bulk redirector

Overview

Bulk redirector

Repository

Latest Release

  • Version: 0.46
  • Published: 2023-07-18

Documentation


django-bulk-redirects


Service logic to handle redirects from one service to another.

[Full documentation available in the repository README]

Usage

This library is used by 1 application(s):

6.3 - django-cardutils

Payment card utilities.

Overview

Payment card utilities.

Repository

Documentation

django-cardutils

Payment card utilities.

[Full documentation available in the repository README]

Usage

This library is used by 1 application(s):

6.4 - django-cors-headers-model

Persistent CORS configuration restrored.

Overview

Persistent CORS configuration restrored.

Repository

Documentation


django-cors-headers-model


Persistent CORS configuration restrored.

[Full documentation available in the repository README]

Usage

This library is used by 4 application(s):

6.5 - django-drf-extensions

Standard extensions for Django Rest Framework.

Overview

Standard extensions for Django Rest Framework.

Repository

Latest Release

  • Version: 0.7
  • Published: 2023-08-04

Documentation


django-drf-extensions


Standard extensions for Django Rest Framework.

[Full documentation available in the repository README]

Usage

This library is used by 10 application(s):

6.6 - django-hut-python-validators

extensions to hut-python-validators to allow for usage in django.

Overview

extensions to hut-python-validators to allow for usage in django.

Repository

Latest Release

  • Version: v0.5
  • Published: 2025-11-07

Documentation


django-hut-python-validators


extensions to hut-python-validators to allow for usage in django.

[Full documentation available in the repository README]

Usage

This library is used by 1 application(s):

6.7 - django-hut-theme

Simple Hut branded django admin theme

Overview

Simple Hut branded django admin theme

Repository

Documentation


django-hut-theme


Simple Hut branded django admin theme.

[Full documentation available in the repository README]

Usage

This library is used by 13 application(s):

6.8 - django-microservice

Base functionality for django based microservice

Overview

Base functionality for django based microservice

Repository

Documentation


django-microservice


App that will install and configure Django / Django Rest Framework (DRF) with a base set of functionality and sensible defaults.

NOTE: Version 2.x has a pile of backwards-incompatible breaking changes. See CHANGELOG.md for exact details.

Requirements

  • Python (3.6.8, 3.7.x)
  • Django (3.2)

Installation

As the package is hosted on Gemfury, :code:FURY_AUTH should be in your environment variables with a valid deploy token.

Use pip (version > 20.0) to install.

.. code-block:: bash

pip install django-microservice --extra-index-url https://${FURY_AUTH}:@pypi.fury.io/hutfortytwo/

Or, in your :code:requirements.txt like:

.. code-block:: python

[...]
# Private requirements

--extra-index-url https://${FURY_AUTH}:@pypi.fury.io/hutfortytwo/
django-microservice>=2.0,<3.0

Add :code:'microservice' to your :code:INSTALLED_APPS setting.

.. code-block:: python

INSTALLED_APPS = [
    ...
    'microservice',
]

Installed Apps

[Full documentation available in the repository README]

Usage

This library is used by 5 application(s):

6.9 - django-rest-cereal

Simple dynamic serializers for DRF.

Overview

Simple dynamic serializers for DRF.

Repository

Documentation


django-rest-cereal


Simple dynamic serializers for DRF.

[Full documentation available in the repository README]

Usage

This library is used by 1 application(s):

6.10 - django-simpleaudit

Private package library

Overview

Private package library used across multiple applications.

Repository

Latest Release

  • Version:
  • Published: 2020-03-27

Documentation

django-simpleaudit

Django simple audit trail and Useful Mixin thing

[Full documentation available in the repository README]

Usage

This library is used by 2 application(s):

6.11 - epa-data-client

Python client for epa-data microservice.

Overview

Python client for epa-data microservice.

Repository

Documentation


{REPOSITORY_NAME}


{SHORT_DESCRIPTION}

[Full documentation available in the repository README]

Usage

This library is not currently used by any documented applications.

6.12 - flux-callme-sdk

Python SDK for flux-callme-service.

Overview

Python SDK for flux-callme-service.

Repository

Documentation

flux-callme-sdk

SDK for flux-callme-service.

[Full documentation available in the repository README]

Usage

This library is used by 2 application(s):

6.13 - flux-exchange-handler-sdk

SDK for creation of new Exchange Message Handlers

Overview

SDK for creation of new Exchange Message Handlers

Repository

Documentation


package


[Full documentation available in the repository README]

Usage

This library is used by 1 application(s):

6.14 - flux-go

Python library for Flux policy buying transactions.

Overview

Python library for Flux policy buying transactions.

Repository

Latest Release

  • Version: v2.4
  • Published: 2025-03-10

Documentation


flux-go


Python library for Flux policy buying transactions.

[Full documentation available in the repository README]

Usage

This library is used by 1 application(s):

6.15 - flux-goahead

Flux/TGSL policy processing library

Overview

Flux/TGSL policy processing library

Repository

Documentation

flux-goahead

Flux/TGSL policy processing library

[Full documentation available in the repository README]

Usage

This library is used by 2 application(s):

6.16 - flux-handler-sdk

Python SDK for flux-handler-service.

Overview

Python SDK for flux-handler-service.

Repository

Documentation

flux-handler-sdk

SDK for flux-handler-service.

[Full documentation available in the repository README]

Usage

This library is used by 1 application(s):

6.17 - flux-jobs

Flux job application capture and management

Overview

Flux job application capture and management

Repository

Latest Release

  • Version: 0.73
  • Published: 2023-07-26

Documentation


flux-jobs


Flux job application capture and management.

[Full documentation available in the repository README]

Usage

This library is used by 1 application(s):

  • flux-jam - Job Application Management (JAM) backend for Adrian Flux job applications

6.18 - flux-sagepay

Payment library for Flux SagePay transactions.

Overview

Payment library for Flux SagePay transactions.

Repository

Latest Release

  • Version: v2.7
  • Published: 2025-07-30

Documentation


flux-sagepay


Payment library for Flux SagePay transactions.

[Full documentation available in the repository README]

Usage

This library is used by 2 application(s):

6.19 - flux-sitedata

Sitedata for Flux brands.

Overview

Sitedata for Flux brands.

Repository

Latest Release

  • Version: 0.14
  • Published: 2023-07-17

Documentation


flux-sitedata


Sitedata for Flux brands.

[Full documentation available in the repository README]

Usage

This library is used by 2 application(s):

6.20 - flux-sitedata-v2-shim

API compatibility shim for v1 clients to use v2 service.

Overview

API compatibility shim for v1 clients to use v2 service.

Repository

Latest Release

  • Version: 1.3
  • Published: 2023-07-17

Documentation


flux-sitedata-v2-shim


API compatibility shim for v1 clients to use v2 service.

This also includes the initial metadata models - these should be removed at the earliest opportunity.

[Full documentation available in the repository README]

Usage

This library is used by 1 application(s):

6.21 - flux-tgsl-endpoints

Global TGSL test/live endpoints

Overview

Global TGSL test/live endpoints

Repository

Documentation


flux-tgsl-endpoints


Global TGSL test/live endpoints.

[Full documentation available in the repository README]

Usage

This library is used by 1 application(s):

6.22 - flux-tgsl-listdata

Flux TGSL list and system data

Overview

Flux TGSL list and system data

Repository

Documentation


flux-tgsl-listdata


Flux TGSL list and system data

[Full documentation available in the repository README]

Usage

This library is used by 1 application(s):

6.23 - hut-django-models

Private package library

Overview

Private package library used across multiple applications.

Repository

Documentation


hut-django-models


Common Django models that are used by Hut.

============ HutBaseModel

Base model that all models should inherit from.

Adds core base functionality to all models in an application.

A uuid field will be used in APIs etc. in order to hide the numerical PK.

The created_by, created_at, updated_by and created_at are all fields used for a simple audit trail type operation.

history is a hook into https://github.com/jazzband/django-simple-history which will track changes at an object level.

Add it to the middleware classes in your settings.py::

MIDDLEWARE = (
    ...,
    'django_currentuser.middleware.ThreadLocalUserMiddleware',
)

[Full documentation available in the repository README]

Usage

This library is used by 2 application(s):

6.24 - hut-python-cardutils

Payment card utilities.

Overview

Payment card utilities.

Repository

Documentation

django-cardutils

Payment card utilities.

[Full documentation available in the repository README]

Usage

This library is used by 1 application(s):

6.25 - hut-python-validators

Python data normalization and validation.

Overview

Python data normalization and validation.

Repository

Latest Release

  • Version: v0.5
  • Published: 2025-11-07

Documentation


hut-python-validators


Python data normalization and validation for UK-specific formats.

This library provides utilities to normalize and validate common UK data formats including postcodes, vehicle registration numbers, and telephone numbers.

============ Installation

.. code-block:: bash

pip install hut-python-validators

======== Features

UK Postcodes

Normalize and validate UK postcodes according to the Royal Mail PAF format.

normalize_postcode


Normalizes a UK postcode by converting to uppercase, removing spaces, and optionally reformatting with a space before the last three characters.

.. code-block:: python

    from hut_validators.postcodes import normalize_postcode

    # Basic normalization (adds space)
    normalize_postcode("ec1a1bb")
    # Returns: 'EC1A 1BB'

    # Without space
    normalize_postcode("ec1a1bb", add_space=False)
    # Returns: 'EC1A1BB'

    # Handles existing spaces and whitespace
    normalize_postcode("  EC1A 1BB  ")
    # Returns: 'EC1A 1BB'

**Parameters:**

* ``postcode`` (str): The postcode to normalize
* ``add_space`` (bool, optional): Whether to insert a space before the last three characters. Defaults to True.

*[Full documentation available in the repository README]*

## Usage

This library is used by 2 application(s):

6.26 - regabi-client

Python client for RegAbi microservice

Overview

Python client for RegAbi microservice

Repository

Documentation


regabi-client


Python client for RegAbi microservice

[Full documentation available in the repository README]

Usage

This library is not currently used by any documented applications.

6.27 - sources-client

Python client for sources microservice.

Overview

Python client for sources microservice.

Repository

Documentation


sources-client


Python client for sources microservice.

[Full documentation available in the repository README]

Usage

This library is not currently used by any documented applications.

6.28 - tgsl

TGSL request / trace related SDK.

Overview

TGSL request / trace related SDK.

Repository

Documentation


tgsl


TGSL request / trace related SDK.

[Full documentation available in the repository README]

Usage

This library is used by 1 application(s):

6.29 - tgsl-metadata

TGSL list metadata

Overview

TGSL list metadata

Repository

Documentation


tgsl-metadata


TGSL list metadata

[Full documentation available in the repository README]

Usage

This library is used by 1 application(s):

7 - Proposals

Architecture and infrastructure change proposals

Overview

This section contains proposals for significant changes to applications, infrastructure, or architecture. Each proposal documents the rationale, impact, and implementation plan.

Active Proposals

Browse all proposals below or navigate through the sidebar.

Proposal Template

When creating a new proposal, include:

  • Summary - Brief overview of the proposed change
  • Rationale - Why this change is needed
  • Impact - Which applications and systems are affected
  • Implementation Plan - Steps to execute the proposal
  • Risks - Potential issues and mitigation strategies
  • Status - Draft, Under Review, Approved, Implemented, Rejected

7.1 - Edge Department Info Service Migration

Proposal for edge-department-info-service migration/modernization

Summary

Proposal for the migration and modernization of the edge-department-info-service.

Rationale

[To be filled in - reasons for this change]

Key benefits expected:

  • [List expected benefits]

Affected Applications

  • flux-handler-service - Django REST based web service for Department Info (opening times etc.) lookups

Impact

Services Affected

  • Edge department info service
  • [List additional services and dependencies]

Technical Considerations

  • API compatibility with existing consumers
  • Department data accuracy and synchronization
  • Performance and response time requirements
  • Caching strategy for department information

Data Considerations

  • Department data storage and updates
  • Data consistency across systems
  • Data source integration
  • Master data management

Implementation Plan

Phase 1: Assessment & Design

  • Document current service functionality
  • Identify all consumers and integration points
  • Evaluate target architecture/platform
  • Assess data migration requirements
  • Define migration strategy
  • Create proof of concept

Phase 2: Development

  • Set up new infrastructure
  • Implement/migrate core functionality
  • Configure API endpoints
  • Set up authentication and authorization
  • Implement monitoring and logging
  • Create comprehensive test suite

Phase 3: Migration

  • Deploy to staging environment
  • Integration testing with consumers
  • Performance and load testing
  • Data validation testing
  • User acceptance testing
  • Security review
  • Create rollback procedures

Phase 4: Cutover

  • Deploy to production
  • Gradual traffic migration
  • Monitor service health and performance
  • Update consumer configurations
  • Decommission old infrastructure
  • Archive legacy documentation

Risks & Mitigation

RiskImpactMitigation
Service disruptionHighGradual cutover with parallel running systems
Department data inconsistencyHighThorough data validation and testing
Performance degradationMediumLoad testing and capacity planning
Integration breakageHighExtensive integration testing before cutover
Data source synchronization issuesMediumImplement robust data sync mechanisms

Timeline

[To be determined]

Status

Current Status: Draft

History:

  • 2025-12-22: Proposal created

7.2 - Edge Sources Service Migration

Proposal for edge-sources-service migration/modernization

Summary

Proposal for the migration and modernization of the edge-sources-service.

Rationale

[To be filled in - reasons for this change]

Key benefits expected:

  • [List expected benefits]

Affected Applications

No applications currently associated with this proposal.

Impact

Services Affected

  • Edge sources service
  • [List additional services and dependencies]

Technical Considerations

  • API compatibility with existing consumers
  • Sources data accuracy and synchronization
  • Performance and response time requirements
  • Caching strategy for sources information

Data Considerations

  • Sources data storage and updates
  • Data consistency across systems
  • Data source integration
  • Master data management

Implementation Plan

Phase 1: Assessment & Design

  • Document current service functionality
  • Identify all consumers and integration points
  • Evaluate target architecture/platform
  • Assess data migration requirements
  • Define migration strategy
  • Create proof of concept

Phase 2: Development

  • Set up new infrastructure
  • Implement/migrate core functionality
  • Configure API endpoints
  • Set up authentication and authorization
  • Implement monitoring and logging
  • Create comprehensive test suite

Phase 3: Migration

  • Deploy to staging environment
  • Integration testing with consumers
  • Performance and load testing
  • Data validation testing
  • User acceptance testing
  • Security review
  • Create rollback procedures

Phase 4: Cutover

  • Deploy to production
  • Gradual traffic migration
  • Monitor service health and performance
  • Update consumer configurations
  • Decommission old infrastructure
  • Archive legacy documentation

Risks & Mitigation

RiskImpactMitigation
Service disruptionHighGradual cutover with parallel running systems
Sources data inconsistencyHighThorough data validation and testing
Performance degradationMediumLoad testing and capacity planning
Integration breakageHighExtensive integration testing before cutover
Data source synchronization issuesMediumImplement robust data sync mechanisms

Timeline

[To be determined]

Status

Current Status: Draft

History:

  • 2025-12-22: Proposal created

7.3 - Migrate Applications from Elastic Beanstalk to AWS Fargate

Proposal to migrate Elastic Beanstalk-hosted applications to AWS Fargate

Summary

Proposal to migrate applications currently hosted on Elastic Beanstalk to AWS Fargate, a serverless container orchestration platform.

Rationale

[To be filled in - reasons for migrating from Elastic Beanstalk to Fargate]

Key benefits expected:

  • Greater infrastructure control and flexibility
  • Improved cost efficiency at scale
  • Enhanced performance and resource allocation
  • Better integration with AWS ecosystem
  • Reduced vendor lock-in
  • Improved scalability options

Affected Applications

Impact

Services Affected

  • All Elastic Beanstalk-hosted applications
  • [List specific applications to be migrated]

Technical Considerations

  • Container image creation and registry setup (ECR)
  • VPC and networking configuration
  • Load balancer setup (ALB/NLB)
  • Service discovery and task definitions
  • Auto-scaling policies
  • CI/CD pipeline modifications
  • Logging and monitoring infrastructure
  • Secret management (AWS Secrets Manager/Parameter Store)

Infrastructure Considerations

  • Database migration (Elastic Beanstalk Postgres to RDS/Aurora)
  • Redis/cache migration (Elastic Beanstalk Redis to ElastiCache)
  • File storage migration (S3 integration)
  • Add-on replacements and alternatives
  • Domain and DNS configuration
  • SSL/TLS certificate management

Data Considerations

  • Database backup and migration strategy
  • Data consistency during migration
  • Downtime requirements
  • Rollback procedures

Implementation Plan

Phase 1: Assessment & Design

  • Audit all Elastic Beanstalk applications and dependencies
  • Document current Elastic Beanstalk add-ons and services
  • Design AWS infrastructure architecture
  • Map Elastic Beanstalk add-ons to AWS equivalents
  • Containerize applications (if not already containerized)
  • Create cost analysis and comparison
  • Define migration priority and sequence

Phase 2: Infrastructure Setup

  • Set up AWS accounts and IAM roles
  • Configure VPC, subnets, and security groups
  • Set up container registry (ECR)
  • Configure ECS clusters and Fargate capacity
  • Set up load balancers and target groups
  • Configure CloudWatch logging and monitoring
  • Set up AWS Secrets Manager
  • Create infrastructure as code (Terraform/CloudFormation)

Phase 3: Application Preparation

  • Create Dockerfiles for each application
  • Build and test container images
  • Create ECS task definitions
  • Configure environment variables and secrets
  • Set up CI/CD pipelines for container builds
  • Implement health checks and monitoring
  • Create deployment scripts

Phase 4: Data Migration

  • Set up target databases (RDS/Aurora)
  • Configure database replication (if applicable)
  • Plan data migration windows
  • Test database migration procedures
  • Migrate Redis/cache data
  • Migrate file storage to S3

Phase 5: Testing & Validation

  • Deploy to staging/test environment
  • Perform integration testing
  • Load and performance testing
  • Security and compliance review
  • Validate monitoring and alerting
  • Test disaster recovery procedures

Phase 6: Migration & Cutover

  • Execute database migration
  • Deploy applications to Fargate
  • Update DNS records
  • Monitor application health and performance
  • Validate all functionality
  • Address any issues
  • Decommission Elastic Beanstalk applications
  • Cancel Elastic Beanstalk subscriptions

Risks & Mitigation

RiskImpactMitigation
Extended downtime during migrationCriticalPlan careful cutover with blue-green deployment
Data loss during database migrationCriticalMultiple backups, test migrations, validation procedures
Application compatibility issuesHighThorough testing in staging environment
Increased operational complexityMediumComprehensive documentation, training, automation
Cost overrunsMediumDetailed cost analysis, monitoring, right-sizing
Performance degradationHighPerformance testing, proper resource allocation
Loss of Elastic Beanstalk add-on functionalityMediumIdentify and implement AWS equivalents beforehand
CI/CD pipeline disruptionMediumTest new pipelines before cutover

Timeline

[To be determined]

Status

Current Status: Draft

History:

  • 2025-12-22: Proposal created

7.4 - Migrate Applications from Heroku to AWS Fargate

Proposal to migrate Heroku-hosted applications to AWS Fargate

Summary

Proposal to migrate applications currently hosted on Heroku to AWS Fargate, a serverless container orchestration platform.

Rationale

[To be filled in - reasons for migrating from Heroku to Fargate]

Key benefits expected:

  • Greater infrastructure control and flexibility
  • Improved cost efficiency at scale
  • Enhanced performance and resource allocation
  • Better integration with AWS ecosystem
  • Reduced vendor lock-in
  • Improved scalability options

Affected Applications

Impact

Services Affected

  • All Heroku-hosted applications
  • [List specific applications to be migrated]

Technical Considerations

  • Container image creation and registry setup (ECR)
  • VPC and networking configuration
  • Load balancer setup (ALB/NLB)
  • Service discovery and task definitions
  • Auto-scaling policies
  • CI/CD pipeline modifications
  • Logging and monitoring infrastructure
  • Secret management (AWS Secrets Manager/Parameter Store)

Infrastructure Considerations

  • Database migration (Heroku Postgres to RDS/Aurora)
  • Redis/cache migration (Heroku Redis to ElastiCache)
  • File storage migration (S3 integration)
  • Add-on replacements and alternatives
  • Domain and DNS configuration
  • SSL/TLS certificate management

Data Considerations

  • Database backup and migration strategy
  • Data consistency during migration
  • Downtime requirements
  • Rollback procedures

Implementation Plan

Phase 1: Assessment & Design

  • Audit all Heroku applications and dependencies
  • Document current Heroku add-ons and services
  • Design AWS infrastructure architecture
  • Map Heroku add-ons to AWS equivalents
  • Containerize applications (if not already containerized)
  • Create cost analysis and comparison
  • Define migration priority and sequence

Phase 2: Infrastructure Setup

  • Set up AWS accounts and IAM roles
  • Configure VPC, subnets, and security groups
  • Set up container registry (ECR)
  • Configure ECS clusters and Fargate capacity
  • Set up load balancers and target groups
  • Configure CloudWatch logging and monitoring
  • Set up AWS Secrets Manager
  • Create infrastructure as code (Terraform/CloudFormation)

Phase 3: Application Preparation

  • Create Dockerfiles for each application
  • Build and test container images
  • Create ECS task definitions
  • Configure environment variables and secrets
  • Set up CI/CD pipelines for container builds
  • Implement health checks and monitoring
  • Create deployment scripts

Phase 4: Data Migration

  • Set up target databases (RDS/Aurora)
  • Configure database replication (if applicable)
  • Plan data migration windows
  • Test database migration procedures
  • Migrate Redis/cache data
  • Migrate file storage to S3

Phase 5: Testing & Validation

  • Deploy to staging/test environment
  • Perform integration testing
  • Load and performance testing
  • Security and compliance review
  • Validate monitoring and alerting
  • Test disaster recovery procedures

Phase 6: Migration & Cutover

  • Execute database migration
  • Deploy applications to Fargate
  • Update DNS records
  • Monitor application health and performance
  • Validate all functionality
  • Address any issues
  • Decommission Heroku applications
  • Cancel Heroku subscriptions

Risks & Mitigation

RiskImpactMitigation
Extended downtime during migrationCriticalPlan careful cutover with blue-green deployment
Data loss during database migrationCriticalMultiple backups, test migrations, validation procedures
Application compatibility issuesHighThorough testing in staging environment
Increased operational complexityMediumComprehensive documentation, training, automation
Cost overrunsMediumDetailed cost analysis, monitoring, right-sizing
Performance degradationHighPerformance testing, proper resource allocation
Loss of Heroku add-on functionalityMediumIdentify and implement AWS equivalents beforehand
CI/CD pipeline disruptionMediumTest new pipelines before cutover

Timeline

[To be determined]

Status

Current Status: Draft

History:

  • 2025-12-22: Proposal created

7.5 - Migrate Applications from Heroku to Cloudflare

Proposal to migrate Heroku-hosted applications to Cloudflare platform

Summary

Proposal to migrate applications currently hosted on Heroku to Cloudflare’s edge computing platform (Workers, Pages, etc.).

Rationale

[To be filled in - reasons for migrating from Heroku to Cloudflare]

Key benefits expected:

  • Edge computing with global low-latency performance
  • Improved cost efficiency
  • Automatic global distribution
  • Built-in DDoS protection and security
  • Reduced infrastructure complexity
  • Better integration with Cloudflare ecosystem
  • Zero cold starts (Workers)

Affected Applications

Impact

Services Affected

  • All Heroku-hosted applications targeted for migration
  • [List specific applications to be migrated]

Technical Considerations

  • Application architecture adaptation for edge computing
  • Cloudflare Workers runtime compatibility
  • Request/response size limitations
  • Execution time limits (CPU time constraints)
  • Code bundling and module system
  • API compatibility and framework support
  • Stateless architecture requirements

Platform Considerations

  • Cloudflare Workers vs Pages vs hybrid approach
  • Database migration (D1, Durable Objects, or external)
  • KV storage for caching and session data
  • R2 for object storage needs
  • Queue system for async processing
  • Analytics and monitoring setup
  • Custom domain configuration

Data Considerations

  • Database compatibility and migration strategy
  • Session storage and state management
  • File/asset storage migration
  • Data residency and compliance requirements

Implementation Plan

Phase 1: Assessment & Design

  • Audit all Heroku applications and dependencies
  • Evaluate application compatibility with Cloudflare platform
  • Identify applications suitable for Workers vs Pages
  • Design edge-native architecture
  • Map Heroku add-ons to Cloudflare/external equivalents
  • Assess code refactoring requirements
  • Create cost analysis and comparison
  • Define migration priority and sequence

Phase 2: Development Environment Setup

  • Set up Cloudflare accounts and API tokens
  • Configure Wrangler CLI and development tools
  • Set up local development environment
  • Create project structure and repositories
  • Configure environment variables and secrets
  • Set up Cloudflare bindings (KV, D1, R2, etc.)

Phase 3: Application Migration

  • Refactor applications for edge compatibility
  • Adapt middleware and frameworks to Workers runtime
  • Implement database access patterns for D1/Durable Objects
  • Configure KV storage for sessions/cache
  • Set up R2 for file storage
  • Implement logging and error handling
  • Bundle and optimize application code
  • Create deployment configurations

Phase 4: Data Migration

  • Set up target databases (D1, external DB, or Durable Objects)
  • Plan data migration strategy
  • Migrate database content
  • Migrate KV data
  • Migrate static assets to R2 or Pages
  • Validate data integrity

Phase 5: Testing & Validation

  • Deploy to Cloudflare preview environments
  • Integration testing
  • Edge performance testing
  • Geographic distribution validation
  • Load testing with global traffic simulation
  • Security review
  • Test custom domains and SSL

Phase 6: Migration & Cutover

  • Deploy to Cloudflare production
  • Configure DNS and custom domains
  • Gradual traffic migration via DNS/load balancing
  • Monitor performance and error rates
  • Validate functionality across regions
  • Address any issues
  • Decommission Heroku applications
  • Cancel Heroku subscriptions

Risks & Mitigation

RiskImpactMitigation
Runtime compatibility issuesHighThorough testing, identify incompatibilities early
CPU time limit exceededHighOptimize code, consider splitting workloads
Database performance on D1MediumEvaluate alternative database solutions if needed
Cold start issues (if any)LowWorkers have minimal cold starts, but monitor
Code refactoring complexityHighIncremental migration, thorough testing
Loss of Heroku add-on functionalityMediumIdentify Cloudflare or external equivalents
Geographic data complianceHighUnderstand Cloudflare’s data residency options
Vendor lock-in to CloudflareMediumAbstract critical services where possible
Development workflow changesMediumTraining and documentation for team

Timeline

[To be determined]

Status

Current Status: Draft

History:

  • 2025-12-22: Proposal created

7.6 - Migrate Exchange REST API to Serverless

Proposal to migrate exchange REST API to Exchange serverless stack

Summary

Proposal to migrate the exchange REST API to a serverless architecture using the Exchange serverless stack.

Rationale

[To be filled in - reasons for migrating to serverless]

Key benefits expected:

  • Improved scalability
  • Reduced operational overhead
  • Cost optimization through pay-per-use model
  • Enhanced deployment flexibility

Affected Applications

Impact

Services Affected

  • Exchange REST API endpoints
  • [List additional services]

Technical Considerations

  • API contract compatibility
  • Authentication/authorization changes
  • Performance characteristics
  • Monitoring and logging setup

Data Considerations

  • Database connection management
  • State management in serverless environment
  • Caching strategy

Implementation Plan

Phase 1: Assessment & Design

  • Audit current REST API endpoints
  • Design serverless architecture
  • Evaluate AWS Lambda/serverless framework
  • Define resource requirements
  • Create proof of concept

Phase 2: Development

  • Set up serverless infrastructure
  • Implement API endpoints in serverless stack
  • Configure API Gateway/routing
  • Implement authentication/authorization
  • Set up monitoring and logging
  • Create automated tests

Phase 3: Migration

  • Deploy to staging environment
  • Performance testing
  • Load testing
  • Security review
  • Create rollback plan

Phase 4: Cutover

  • Deploy to production
  • Update DNS/routing
  • Monitor performance
  • Decommission old infrastructure

Risks & Mitigation

RiskImpactMitigation
API downtime during migrationHighBlue-green deployment with gradual traffic shift
Performance degradationMediumThorough load testing before cutover
Cold start latencyMediumImplement provisioned concurrency for critical endpoints
Breaking changes to API contractHighMaintain backward compatibility, version API
Increased complexityMediumComprehensive documentation and runbooks

Timeline

[To be determined]

Status

Current Status: Draft

History:

  • 2025-12-22: Proposal created

7.7 - Migrate QAB Buy Web Services to Serverless

Proposal to migrate legacy Qab buy web services to QabBuy serverless stack

Summary

Proposal to migrate legacy Qab buy web services to a modern serverless architecture using the QabBuy serverless stack.

Rationale

[To be filled in - reasons for migrating to serverless]

Key benefits expected:

  • Modernize legacy infrastructure
  • Improved scalability and reliability
  • Reduced maintenance burden
  • Cost optimization
  • Enhanced deployment practices
  • Better handling of peak purchase volumes

Affected Applications

Impact

Services Affected

  • QAB buy/purchase web services
  • [List additional services and dependencies]

Technical Considerations

  • Legacy code modernization requirements
  • API compatibility with existing consumers
  • Integration with payment systems
  • Transaction handling in serverless environment
  • Performance and response time requirements
  • Error handling and retry logic

Data Considerations

  • Purchase data storage and retrieval
  • Transaction state management
  • Database access patterns
  • Data consistency requirements
  • Audit logging

Implementation Plan

Phase 1: Assessment & Design

  • Document current buy service functionality
  • Identify all consumers and integration points
  • Map payment and transaction flows
  • Design serverless architecture for QabBuy
  • Define migration strategy for legacy code
  • Assess infrastructure and security requirements
  • Create proof of concept

Phase 2: Development

  • Set up QabBuy serverless infrastructure
  • Migrate/refactor purchase logic
  • Implement serverless endpoints
  • Configure API Gateway and routing
  • Implement authentication and authorization
  • Set up transaction handling
  • Implement monitoring, logging, and alerting
  • Create comprehensive test suite including transaction scenarios

Phase 3: Migration

  • Deploy to staging environment
  • Integration testing with consumers
  • Payment system integration testing
  • Performance and load testing
  • Transaction failure scenario testing
  • User acceptance testing
  • Security and compliance review
  • Create rollback procedures

Phase 4: Cutover

  • Gradual traffic migration to new stack
  • Monitor service health and transaction success rates
  • Update consumer configurations
  • Validate payment processing
  • Decommission legacy buy services
  • Archive legacy code and documentation

Risks & Mitigation

RiskImpactMitigation
Transaction failures during migrationCriticalRobust rollback plan, gradual cutover with monitoring
Payment processing issuesCriticalExtensive testing with payment systems, parallel running
Service disruptionHighBlue-green deployment with quick rollback capability
Legacy code complexityHighThorough documentation and refactoring plan
Integration breakageHighExtensive integration testing before cutover
Data inconsistencyHighTransaction integrity testing, audit logging
Performance degradationMediumLoad testing and capacity planning
Compliance issuesHighSecurity review and compliance validation

Timeline

[To be determined]

Status

Current Status: Draft

History:

  • 2025-12-22: Proposal created

7.8 - Migrate QAB Quoting Web Services to Serverless

Proposal to migrate legacy Qab quoting web services to QabQuote serverless stack

Summary

Proposal to migrate legacy Qab quoting web services to a modern serverless architecture using the QabQuote serverless stack.

Rationale

[To be filled in - reasons for migrating to serverless]

Key benefits expected:

  • Modernize legacy infrastructure
  • Improved scalability and reliability
  • Reduced maintenance burden
  • Cost optimization
  • Enhanced deployment practices

Affected Applications

No applications currently associated with this proposal.

Impact

Services Affected

  • QAB quoting web services
  • [List additional services and dependencies]

Technical Considerations

  • Legacy code modernization requirements
  • API compatibility with existing consumers
  • Integration points with other systems
  • Performance and response time requirements
  • Session management in serverless context

Data Considerations

  • Database access patterns
  • Quote data storage and retrieval
  • State management
  • Caching requirements

Implementation Plan

Phase 1: Assessment & Design

  • Document current web service functionality
  • Identify all consumers and integration points
  • Design serverless architecture for QabQuote
  • Define migration strategy for legacy code
  • Assess infrastructure requirements
  • Create proof of concept

Phase 2: Development

  • Set up QabQuote serverless infrastructure
  • Migrate/refactor quoting logic
  • Implement serverless endpoints
  • Configure API Gateway and routing
  • Set up authentication and authorization
  • Implement monitoring and logging
  • Create comprehensive test suite

Phase 3: Migration

  • Deploy to staging environment
  • Integration testing with consumers
  • Performance and load testing
  • User acceptance testing
  • Security review
  • Create rollback procedures

Phase 4: Cutover

  • Gradual traffic migration to new stack
  • Monitor service health and performance
  • Update consumer configurations
  • Decommission legacy web services
  • Archive legacy code and documentation

Risks & Mitigation

RiskImpactMitigation
Service disruptionHighGradual cutover with parallel running systems
Legacy code complexityHighThorough documentation and refactoring plan
Integration breakageHighExtensive integration testing before cutover
Performance issuesMediumLoad testing and capacity planning
Data inconsistencyHighThorough testing of quote calculations
Loss of domain knowledgeMediumDocument business logic during migration

Timeline

[To be determined]

Status

Current Status: Draft

History:

  • 2025-12-22: Proposal created

7.9 - Serverless Callbacks Migration

Proposal to migrate callbacks functionality to serverless architecture

Summary

Proposal to migrate callbacks functionality to a serverless architecture.

Rationale

[To be filled in - reasons for migrating to serverless]

Key benefits expected:

  • Improved scalability for callback processing
  • Reduced operational overhead
  • Cost optimization through pay-per-use model
  • Better handling of variable callback volumes
  • Enhanced reliability and retry mechanisms

Affected Applications

Impact

Services Affected

  • Callback handling services
  • [List additional services and dependencies]

Technical Considerations

  • Webhook/callback endpoint compatibility
  • Event-driven architecture implementation
  • Asynchronous processing requirements
  • Retry and failure handling
  • Message queue integration
  • Timeout and execution limits

Data Considerations

  • Callback data storage and logging
  • Event sourcing patterns
  • Audit trail requirements
  • Dead letter queue handling

Implementation Plan

Phase 1: Assessment & Design

  • Document current callback workflows
  • Identify all callback sources and consumers
  • Design event-driven serverless architecture
  • Evaluate messaging/queue services (SQS, EventBridge, etc.)
  • Define retry and error handling strategy
  • Assess monitoring requirements
  • Create proof of concept

Phase 2: Development

  • Set up serverless infrastructure
  • Implement event handlers and processors
  • Configure API Gateway for webhook endpoints
  • Set up message queues and event routing
  • Implement retry logic and dead letter queues
  • Set up monitoring, logging, and alerting
  • Create comprehensive test suite including failure scenarios

Phase 3: Migration

  • Deploy to staging environment
  • Integration testing with callback sources
  • Load and stress testing
  • Failure scenario testing
  • Latency and performance validation
  • Security review
  • Create rollback procedures

Phase 4: Cutover

  • Deploy to production
  • Gradual traffic migration
  • Monitor callback processing rates and success
  • Update webhook endpoint configurations
  • Validate end-to-end callback flows
  • Decommission old infrastructure
  • Archive legacy documentation

Risks & Mitigation

RiskImpactMitigation
Callback delivery failuresHighImplement robust retry mechanisms and dead letter queues
Duplicate callback processingMediumImplement idempotency keys and deduplication
Cold start latencyMediumUse provisioned concurrency for critical callbacks
Message loss during migrationHighParallel processing with validation before cutover
Timeout issues for long-running callbacksMediumDesign async processing patterns, evaluate timeout limits
Integration breakageHighExtensive testing with all callback sources
Monitoring gapsMediumComprehensive logging and alerting setup

Timeline

[To be determined]

Status

Current Status: Draft

History:

  • 2025-12-22: Proposal created

7.10 - Universal Geo Service Migration

Proposal for universal-geo-service migration/modernization

Summary

Proposal for the migration and modernization of the universal-geo-service.

Rationale

[To be filled in - reasons for this change]

Key benefits expected:

  • [List expected benefits]

Affected Applications

Impact

Services Affected

  • Universal geo service
  • [List additional services and dependencies]

Technical Considerations

  • API compatibility with existing consumers
  • Geographic data accuracy and coverage
  • Performance and response time requirements
  • Caching strategy for geo lookups

Data Considerations

  • Geographic data storage and updates
  • Data accuracy and validation
  • Third-party data sources and licensing

Implementation Plan

Phase 1: Assessment & Design

  • Document current service functionality
  • Identify all consumers and integration points
  • Evaluate target architecture/platform
  • Assess data migration requirements
  • Define migration strategy
  • Create proof of concept

Phase 2: Development

  • Set up new infrastructure
  • Implement/migrate core functionality
  • Configure API endpoints
  • Set up authentication and authorization
  • Implement monitoring and logging
  • Create comprehensive test suite

Phase 3: Migration

  • Deploy to staging environment
  • Integration testing with consumers
  • Performance and load testing
  • Data validation testing
  • User acceptance testing
  • Security review
  • Create rollback procedures

Phase 4: Cutover

  • Deploy to production
  • Gradual traffic migration
  • Monitor service health and performance
  • Update consumer configurations
  • Decommission old infrastructure
  • Archive legacy documentation

Risks & Mitigation

RiskImpactMitigation
Service disruptionHighGradual cutover with parallel running systems
Geographic data accuracy issuesHighThorough data validation and testing
Performance degradationMediumLoad testing and capacity planning
Integration breakageHighExtensive integration testing before cutover
Third-party dependency issuesMediumEvaluate and test all external dependencies

Timeline

[To be determined]

Status

Current Status: Draft

History:

  • 2025-12-22: Proposal created

7.11 - Remove Fakertrail Application

Proposal to decommission the fakertrail application

Summary

Proposal to remove the fakertrail application from our infrastructure.

Rationale

[To be filled in - reasons for removing this application]

Affected Applications

Impact

Services Affected

  • List services that will be impacted
  • Downstream dependencies

Data Considerations

  • Data migration requirements
  • Backup and archival needs

Implementation Plan

Phase 1: Preparation

  • Audit current usage
  • Identify dependencies
  • Create data backup

Phase 2: Migration

  • Redirect traffic if needed
  • Migrate critical data

Phase 3: Decommissioning

  • Remove from Heroku
  • Update DNS records
  • Remove monitoring/alerts
  • Archive documentation

Risks & Mitigation

RiskImpactMitigation
Loss of functionalityMediumDocument all features before removal
Data lossHighFull backup before decommission
Broken integrationsMediumAudit all integrations beforehand

Timeline

[To be determined]

Status

Current Status: Draft

History:

  • 2025-12-20: Proposal created

7.12 - Provider Agnostic Geo Lookup Library

Proposal for a Python library that abstracts geo lookup providers for resilience and reusability
StatusEffortClient Cost Saving
Draft20TBD

Summary

Create a Python library that provides a provider-agnostic interface for geographic address lookup services. This library will support automatic failover between providers, ensuring service continuity during provider outages, and can be deployed across multiple projects and platforms (DRF, Lambda).

Rationale

The Problem

On 2026-02-04, getaddress.io experienced several hours of downtime. This caused a complete failure of the quote service flow because:

  1. Single Provider Dependency: The geo service currently relies exclusively on getaddress.io with no fallback mechanism
  2. Cross-Client Impact: This single point of failure affects multiple clients (Adrian Flux, Sterling, Bikesure) and multiple product lines (EPAs, JAF forms), amplifying the business risk
  3. User Experience Impact: While users could technically enter addresses manually, this option is not immediately obvious in the UI
  4. Business Impact: No quotes could be processed during the outage across any client or product line, directly affecting revenue

Why This Change is Needed

  • Resilience: We have an avoidable single point of failure that affects multiple clients and product lines - a single provider outage takes down quote functionality across the entire business
  • Code Exists: The codebase technically supports multiple providers, but only one is implemented and active
  • Reusability: Other hut42 projects (Viitata, Forecaster, Katala) require similar geo lookup functionality
  • Cost Optimization: Some providers like Google offer free tiers that could serve as fallback options

Proposed Solution

Python Library

A standalone Python library that:

  1. Abstracts Provider Implementation: Unified interface regardless of underlying provider
  2. Supports Multiple Providers:
    • getaddress.io (primary)
    • Google Places API (fallback - potentially free tier)
    • Additional providers as needed
  3. Manual or Automatic Failover: Configurable provider switching (see phased approach below)
  4. Framework Agnostic: Works with DRF services and Lambda functions
  5. Built from Existing Code: Refactored from the current geo service codebase

Phased Approach

Phase 1 - Manual Switchover: Implement multi-provider support with manual provider switching via configuration. Service health monitoring handled externally by Uptime Robot, with manual intervention to switch providers during outages.

Phase 2 - Automatic Failover: Add built-in health checking and automatic failover management to the library, removing the need for manual intervention.

Architecture

Phase 1 - Manual Switchover

┌─────────────────────────────────────────────────────────┐
│                    Geo Lookup Library                   │
├─────────────────────────────────────────────────────────┤
│  GeoLookupClient                                        │
│  ├── Provider Registry                                  │
│  ├── Provider Selector (config-driven)                  │
│  └── Response Normalizer                                │
├─────────────────────────────────────────────────────────┤
│  Providers                                              │
│  ├── GetAddressProvider (primary)                       │
│  ├── GooglePlacesProvider (fallback)                    │
│  └── BaseProvider (abstract interface)                  │
└─────────────────────────────────────────────────────────┘
           │
           ▼
    ┌──────────┐        ┌─────────────────┐
    │ Geo Svc  │◄───────│  Uptime Robot   │
    │          │        |  (monitoring)   │
    └──────────┘        └─────────────────┘
                                │
                                ▼
                        ┌─────────────────┐
                        │ Manual config   │
                        │ change to swap  │
                        │ provider        │
                        └─────────────────┘

Phase 2 - Automatic Failover

┌─────────────────────────────────────────────────────────┐
│                    Geo Lookup Library                   │
├─────────────────────────────────────────────────────────┤
│  GeoLookupClient                                        │
│  ├── Provider Registry                                  │
│  ├── Health Checker              ◄── NEW                │
│  ├── Failover Manager            ◄── NEW                │
│  └── Response Normalizer                                │
├─────────────────────────────────────────────────────────┤
│  Providers                                              │
│  ├── GetAddressProvider (primary)                       │
│  ├── GooglePlacesProvider (fallback)                    │
│  └── BaseProvider (abstract interface)                  │
└─────────────────────────────────────────────────────────┘
           │                    │                    
           ▼                    ▼                    
    ┌──────────┐        ┌───────────┐ 
    │ Geo Svc  │        │ Geo Svc   │
    | [Flux]   |        | [Hutsoft] |
    └──────────┘        └───────────┘

Key Features

FeaturePhaseDescription
Provider Abstraction1Unified API regardless of underlying service
Response Normalization1Consistent response format across all providers
Configurable Provider1Select active provider via configuration
External Health Monitoring1Uptime Robot monitors provider health
Manual Switchover1Change provider via config during outages
Metrics & Logging1Track provider performance and failures
Built-in Health Checker2Periodic health checks on all configured providers
Automatic Failover Manager2Circuit breaker pattern for automatic provider switching

Affected Applications

Primary Integration

  • Universal geo service (immediate integration)

Main Consumers (highest traffic)

  • Adrian Flux, Sterling and Bikesure EPAs
  • Adrian Flux and Sterling JAF forms

Other Potential Consumers

  • Viitata
  • Forecaster
  • Katala
  • Any future projects requiring geo lookup

Impact

API Compatibility

This proposal maintains 100% API compatibility with the existing geo service. No consumer application changes will be required. The library will be integrated behind the existing service interface, making this change completely transparent to Adrian Flux, Sterling, Bikesure EPAs, JAF forms, and all other consumers.

Services Affected

  • Universal geo service (internal code changes for library integration)
  • Quote service (indirect - improved reliability)

Technical Considerations

  • API compatibility will be maintained for existing geo service consumers
  • Response format normalization between different providers
  • Rate limiting and quota management per provider
  • Caching strategy to reduce API calls and costs
  • Configuration management for API keys across environments

Data Considerations

  • Different providers may return slightly different address formats
  • UK-specific address formatting (getaddress.io strength)
  • Postcode validation consistency across providers

Provider Analysis

getaddress.io (Current/Primary)

  • Pros: UK-focused, excellent postcode lookup, current integration exists
  • Cons: Single point of failure, outage yesterday
  • Cost: Paid service

Google Places API (Proposed Fallback)

  • Pros: Highly reliable, generous free tier, global coverage
  • Cons: Less UK-specific, may require address normalization
  • Cost: Free tier available (suitable for fallback volumes)

Other Options to Evaluate

  • Postcodes.io (UK specific, open data)
  • Ideal Postcodes
  • OS Places API

Implementation Plan

Phase 1: Multi-Provider Support with Manual Switchover

1.1 Library Development

  • Extract and refactor existing geo code into standalone library
  • Define abstract provider interface (BaseProvider)
  • Implement GetAddressProvider (port existing code)
  • Implement GooglePlacesProvider
  • Create response normalization layer
  • Implement configurable provider selection
  • Write comprehensive test suite
  • Package as installable Python library

1.2 Geo Service Integration

  • Install library in universal-geo-service
  • Configure primary and fallback providers
  • Update service to use library interface
  • Integration testing
  • Deploy to staging

1.3 Monitoring & Rollout

  • Configure Uptime Robot to monitor provider endpoints
  • Set up alerting for provider outages
  • Document manual switchover procedure
  • Deploy to production
  • Test manual switchover process

Phase 2: Automatic Health Checking & Failover

2.1 Library Enhancement

  • Implement Health Checker component
  • Implement Failover Manager with circuit breaker pattern
  • Add automatic provider switching logic
  • Configure failover thresholds and retry policies
  • Update test suite for failover scenarios

2.2 Integration & Rollout

  • Update geo service to use automatic failover
  • Deploy to staging
  • Performance and failover testing
  • Deploy to production
  • Monitor automatic failover events

Wider Adoption (Post Phase 1 or 2)

  • Provide library documentation and examples
  • Support Viitata integration
  • Support Forecaster integration
  • Support Katala integration

Risks & Mitigation

RiskImpactPhaseMitigation
Provider response format differencesMedium1 & 2Robust response normalization and testing
Increased complexityLow1 & 2Clean abstraction layer, good documentation
Google free tier limits exceededLow1 & 2Monitor usage, upgrade plan if needed
Manual switchover delayMedium1Uptime Robot alerting, documented runbook
Failover latencyLow2Health checks, circuit breaker pattern
Address accuracy differencesMedium1 & 2Thorough testing with UK addresses, consider primary-only for critical paths

Success Metrics

Phase 1

  • Ability to switch providers within minutes of detected outage
  • Zero extended quote service outages due to geo provider failures
  • Library adoption in at least 2 additional projects within 6 months
  • Reduced operational impact from geo lookup alerts

Phase 2

  • < 500ms automatic failover time when primary provider fails
  • Zero manual intervention required for provider outages
  • Reduced operational alerts related to geo lookups

Estimations

Phase 1: 3 days (20 hours)

TaskEffort
Project setup, current implementation investigation, alternative provider investigation4 hours
Development build8 hours
Testing and integration8 hours

Phase 2: 2 days (16 hours)

TaskEffort
Development build8 hours
Testing and integration8 hours

Status

Current Status: Draft

History:

  • 2025-02-05: Proposal created following getaddress.io outage

8 - Example Page

A short lead description about this content page. It can be bold or italic and can be split over multiple paragraphs.

This is a placeholder page. Replace it with your own content.

Texts can be bold, italic, or strikethrough. Links should be blue with no underlines (unless hovered over).

There should be whitespace between paragraphs. Vape migas chillwave sriracha poutine try-hard distillery. Tattooed shabby chic small batch, pabst art party heirloom letterpress air plant pop-up. Sustainable chia skateboard art party banjo cardigan normcore affogato vexillologist quinoa meggings man bun master cleanse shoreditch readymade. Yuccie prism four dollar toast tbh cardigan iPhone, tumblr listicle live-edge VHS. Pug lyft normcore hot chicken biodiesel, actually keffiyeh thundercats photo booth pour-over twee fam food truck microdosing banh mi. Vice activated charcoal raclette unicorn live-edge post-ironic. Heirloom vexillologist coloring book, beard deep v letterpress echo park humblebrag tilde.

90’s four loko seitan photo booth gochujang freegan tumeric listicle fam ugh humblebrag. Bespoke leggings gastropub, biodiesel brunch pug fashion axe meh swag art party neutra deep v chia. Enamel pin fanny pack knausgaard tofu, artisan cronut hammock meditation occupy master cleanse chartreuse lumbersexual. Kombucha kogi viral truffaut synth distillery single-origin coffee ugh slow-carb marfa selfies. Pitchfork schlitz semiotics fanny pack, ugh artisan vegan vaporware hexagon. Polaroid fixie post-ironic venmo wolf ramps kale chips.

There should be no margin above this first sentence.

Blockquotes should be a lighter gray with a border along the left side in the secondary color.

There should be no margin below this final sentence.

First Header 2

This is a normal paragraph following a header. Knausgaard kale chips snackwave microdosing cronut copper mug swag synth bitters letterpress glossier craft beer. Mumblecore bushwick authentic gochujang vegan chambray meditation jean shorts irony. Viral farm-to-table kale chips, pork belly palo santo distillery activated charcoal aesthetic jianbing air plant woke lomo VHS organic. Tattooed locavore succulents heirloom, small batch sriracha echo park DIY af. Shaman you probably haven’t heard of them copper mug, crucifix green juice vape single-origin coffee brunch actually. Mustache etsy vexillologist raclette authentic fam. Tousled beard humblebrag asymmetrical. I love turkey, I love my job, I love my friends, I love Chardonnay!

Deae legum paulatimque terra, non vos mutata tacet: dic. Vocant docuique me plumas fila quin afuerunt copia haec o neque.

On big screens, paragraphs and headings should not take up the full container width, but we want tables, code blocks and similar to take the full width.

Scenester tumeric pickled, authentic crucifix post-ironic fam freegan VHS pork belly 8-bit yuccie PBR&B. I love this life we live in.

Second Header 2

This is a blockquote following a header. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.

Header 3

This is a code block following a header.

Next level leggings before they sold out, PBR&B church-key shaman echo park. Kale chips occupy godard whatever pop-up freegan pork belly selfies. Gastropub Belinda subway tile woke post-ironic seitan. Shabby chic man bun semiotics vape, chia messenger bag plaid cardigan.

Header 4

  • This is an unordered list following a header.
  • This is an unordered list following a header.
  • This is an unordered list following a header.
Header 5
  1. This is an ordered list following a header.
  2. This is an ordered list following a header.
  3. This is an ordered list following a header.
Header 6
WhatFollows
A tableA header
A tableA header
A tableA header

There’s a horizontal rule above and below this.


Here is an unordered list:

  • Liverpool F.C.
  • Chelsea F.C.
  • Manchester United F.C.

And an ordered list:

  1. Michael Brecker
  2. Seamus Blake
  3. Branford Marsalis

And an unordered task list:

  • Create a Hugo theme
  • Add task lists to it
  • Take a vacation

And a “mixed” task list:

  • Pack bags
  • ?
  • Travel!

And a nested list:

  • Jackson 5
    • Michael
    • Tito
    • Jackie
    • Marlon
    • Jermaine
  • TMNT
    • Leonardo
    • Michelangelo
    • Donatello
    • Raphael

Definition lists can be used with Markdown syntax. Definition headers are bold.

Name : Godzilla

Born : 1952

Birthplace : Japan

Color : Green


Tables should have bold headings and alternating shaded rows.

ArtistAlbumYear
Michael JacksonThriller1982
PrincePurple Rain1984
Beastie BoysLicense to Ill1986

If a table is too wide, it should scroll horizontally.

ArtistAlbumYearLabelAwardsSongs
Michael JacksonThriller1982Epic RecordsGrammy Award for Album of the Year, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&B Album, Brit Award for Best Selling Album, Grammy Award for Best Engineered Album, Non-ClassicalWanna Be Startin’ Somethin’, Baby Be Mine, The Girl Is Mine, Thriller, Beat It, Billie Jean, Human Nature, P.Y.T. (Pretty Young Thing), The Lady in My Life
PrincePurple Rain1984Warner Brothers RecordsGrammy Award for Best Score Soundtrack for Visual Media, American Music Award for Favorite Pop/Rock Album, American Music Award for Favorite Soul/R&B Album, Brit Award for Best Soundtrack/Cast Recording, Grammy Award for Best Rock Performance by a Duo or Group with VocalLet’s Go Crazy, Take Me With U, The Beautiful Ones, Computer Blue, Darling Nikki, When Doves Cry, I Would Die 4 U, Baby I’m a Star, Purple Rain
Beastie BoysLicense to Ill1986Mercury RecordsnoawardsbutthistablecelliswideRhymin & Stealin, The New Style, She’s Crafty, Posse in Effect, Slow Ride, Girls, (You Gotta) Fight for Your Right, No Sleep Till Brooklyn, Paul Revere, Hold It Now, Hit It, Brass Monkey, Slow and Low, Time to Get Ill

Code snippets like var foo = "bar"; can be shown inline.

Also, this should vertically align with this and this.

Code can also be shown in a block element.

foo := "bar";
bar := "foo";

Code can also use syntax highlighting.

func main() {
  input := `var foo = "bar";`

  lexer := lexers.Get("javascript")
  iterator, _ := lexer.Tokenise(nil, input)
  style := styles.Get("github")
  formatter := html.New(html.WithLineNumbers())

  var buff bytes.Buffer
  formatter.Format(&buff, style, iterator)

  fmt.Println(buff.String())
}
Long, single-line code blocks should not wrap. They should horizontally scroll if they are too long. This line should be long enough to demonstrate this.

Inline code inside table cells should still be distinguishable.

LanguageCode
Javascriptvar foo = "bar";
Rubyfoo = "bar"{

Small images should be shown at their actual size.

Large images should always scale down and fit in the content container.

The photo above of the Spruce Picea abies shoot with foliage buds: Bjørn Erik Pedersen, CC-BY-SA.

Components

Alerts

Another Heading

Add some sections here to see how the ToC looks like. Bacon ipsum dolor sit amet t-bone doner shank drumstick, pork belly porchetta chuck sausage brisket ham hock rump pig. Chuck kielbasa leberkas, pork bresaola ham hock filet mignon cow shoulder short ribs biltong.

This Document

Inguina genus: Anaphen post: lingua violente voce suae meus aetate diversi. Orbis unam nec flammaeque status deam Silenum erat et a ferrea. Excitus rigidum ait: vestro et Herculis convicia: nitidae deseruit coniuge Proteaque adiciam eripitur? Sitim noceat signa probat quidem. Sua longis fugatis quidem genae.

Pixel Count

Tilde photo booth wayfarers cliche lomo intelligentsia man braid kombucha vaporware farm-to-table mixtape portland. PBR&B pickled cornhole ugh try-hard ethical subway tile. Fixie paleo intelligentsia pabst. Ennui waistcoat vinyl gochujang. Poutine salvia authentic affogato, chambray lumbersexual shabby chic.

Contact Info

Plaid hell of cred microdosing, succulents tilde pour-over. Offal shabby chic 3 wolf moon blue bottle raw denim normcore poutine pork belly.

Stumptown PBR&B keytar plaid street art, forage XOXO pitchfork selvage affogato green juice listicle pickled everyday carry hashtag. Organic sustainable letterpress sartorial scenester intelligentsia swag bushwick. Put a bird on it stumptown neutra locavore. IPhone typewriter messenger bag narwhal. Ennui cold-pressed seitan flannel keytar, single-origin coffee adaptogen occupy yuccie williamsburg chillwave shoreditch forage waistcoat.

This is the final element on the page and there should be no margin below this.