DJANGO DEVELOPMENTNational Galleries of Scotland

Overview

The National Galleries of Scotland (NGS) manage Scotland’s national art collection and run some of the country’s most iconic cultural venues. Their digital platform is a vital touchpoint for ticketing, event management, and visitor engagement. When NGS approached Raw Jam, they were operating on a fragile legacy infrastructure with support due to expire in just 30 days. Our mission: stabilise, secure, and modernise the system under extreme time pressure.

The Challenge

NGS’s website and booking platform were built in Python using Django, but had been heavily customised and embedded within a legacy platform called Onyx. The system faced a range of operational and architectural issues:

  • Tightly Coupled Code: Custom libraries and business logic were deeply intertwined with the environment, making even minor changes risky.
  • Office365 Integration: Calendar entries for events were synced with Outlook through an unstable integration.
  • Complex AWS Infrastructure: The system used AWS services like Docker, ECS, ECR, RDS, EFS, and SES – but lacked clarity, consistency, and documentation.
  • No Staging Environment: All development was happening directly on live infrastructure, with no safe space for testing.
  • Support Ending: The previous vendor’s support was ending within a month.
  • No Two-Factor Authentication: Critical admin interfaces lacked modern security protections.
  • Onyx Dependency: The original Onyx system was undocumented and misunderstood, creating a major operational risk.
Our Solutions

Faced with a ticking clock and a brittle system, Raw Jam responded with a structured, hands-on recovery plan focused on immediate stability, medium-term flexibility, and long-term sustainability.

  1. Decoupling and Refactoring: Cleaned up custom libraries and restructured the logic to use native Django modules. 
  2. Dependency Upgrades: Updated all outdated packages and Django dependencies. 
  3. Office365 Integration Rebuilt: Rewrote the sync mechanism using the Microsoft Graph API. 
  4. Infrastructure Simplification: Rationalised AWS architecture, retaining only ECS, RDS, EFS, and SES. 
  5. Environment & Deployment Setup: Recreated local and staging environments for safer deployment. 
  6. Two-Factor Authentication (2FA): Implemented secure 2FA for admin access. 
  7. Reverse Engineering Onyx: Reverse engineered the legacy Onyx platform to remove operational blind spots. 
  8. Ongoing Support and Maintenance: Regular security updates, development sprints, and support from our Django/Python team.
Results & Impact
  • Full stabilisation of a high-risk legacy system – Seamless transition within a 30-day deadline 
  • Secure 2FA login system implemented 
  • Modular, maintainable codebase using modern Django 
  • Streamlined AWS setup, reducing waste and improving reliability 
  • Introduction of dev and staging environments for safe development 
  • A long-term partner to handle support, security, and evolution of the platform

“We’ve been working with Raw Jam for over four years now. Their deep expertise in Python and Django has given us complete confidence that our legacy system is in safe, capable hands.”

National Gallery of Scotland

Ready to work with us?

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam erat, sed diam voluptua. Lorem ipsum dolor sit amet, consetetur sadipscing elitr,