Armakuni Contact us
← All case studies

A year of modernization, and nothing had shipped.
We started with the parts every module reuses.

An event sign-up platform used by millions of organizers had spent a year on an internal modernization that produced no production changes, while its engineers spent 30% of their time keeping a ColdFusion stack alive. We built the shared components and replacement APIs first, so each module after them could be replaced on its own while the old service kept running. Then we moved its analytics from 700+ slow dashboards to Redshift and QuickSight, and handed marketing its own CMS.

Before

The modernization that never shipped.

Nobody trusted the numbers.

After
30%less engineering time on legacy systems
  • A tested Angular component library, used by every rebuilt module.
  • Messages and Reports rebuilt on v3 Node.js APIs, in acceptance testing.

As the company reported.

The modernization that never shipped

Organizers rely on the platform to coordinate volunteers, events and sign-ups. Behind it was a decade-old, ColdFusion-based stack, with an old Angular front end, that the team couldn't fully reason about. Engineers spent 30% of their time managing legacy systems, and features that should have taken weeks took months.

A year-long internal effort to upgrade Angular and replace ColdFusion had been scoped, started and stalled, with no clear phasing and no way to split the work. Competitors were shipping, and the platform stood still.

And nobody trusted the numbers

The analytics ran on more than 700 dashboards in Apache Superset, so slow that business teams had stopped using them, fed by SQL jobs on EC2 with no scheduling or failure handling. Every content change on the marketing site needed a developer. And the AI features the business wanted had nothing solid to stand on.

So we built the shared parts first, then replaced one module at a time

The previous attempt stalled because it tried to move everything together. We reversed the order: build the shared components and APIs that every module reuses, prove them on two high-traffic modules, then replace the rest one at a time, while the old ColdFusion application keeps serving organizers.

How we built it

7 pieces of work, in the order they were done. The map shows which part of the platform each one changed, while the old service kept running. Each one says what we did and why, with what it did drawn beside it.

The platform

Component library
Messages
Reports
Analytics
Database
Marketing site
AI proofs

We mapped the platform before changing anything

2–3 weeksof discovery3architecture options benchmarked$40,000AI assessment, AWS-funded
Built withRedshift
The engineering

A two-to-three-week discovery mapped the current environment across its workstreams and sequenced the migration. A Redshift proof of concept benchmarked three architecture options, including Redshift with materialized views over JDBC and direct queries, to validate the analytics path before the full migration began. An AWS-funded $40,000 assessment evaluated the AI use cases: form drafting, organizer help and proactive event reminders.

A component library every module builds on

20components refactored3new shared components
Built withAngular

“The entire team is great at understanding what I'm looking for and at communicating challenges so we can work out a good solution. If I provide a technical requirement, I know it will get done. I'm not seeing any loose ends. That's a wonderful relief for me knowing that I can trust you guys to get the job done well. It's due to Armakuni's competence that [we] are looking forward to Phase 2.”

Growth Engineer, an online sign-up and scheduling platform
The engineering
  • 20 existing Angular components were refactored, unit-tested and packaged as importable modules with versioning and documentation.
  • 3 new shared components filled common gaps before the library shipped.
  • Test coverage was a condition of shipping, not something added later.

The same library supports mobile checkout and upgrade flows, including removing ColdFusion redirects that interrupted the experience. A modernization stalls when every module rebuilds the same basics, and a shared library makes each module after the first faster to build.

We rebuilt two of the busiest modules first, and checked them against the old ones

Messages and Reportstwo of the busiest modules4–5 weekseach
Built withAngularNode.js
The engineering

Messages and Reports were rebuilt in the latest Angular on the library, each over about four to five weeks, with v3 Node.js APIs replacing their ColdFusion endpoints. The APIs were built against the existing ColdFusion behavior and checked for parity, removing two of the highest-traffic ColdFusion dependency clusters. They're with the company for acceptance testing before promotion to production.

Analytics people actually use

700+dashboards moved
Built withQuickSightRedshiftEC2EventBridge
The engineering
  • The 700+ dashboards and visuals were inventoried, mapped to QuickSight and rebuilt with functional and visual parity.
  • Redshift is the warehouse, with schema design, sort and distribution keys and materialized views for the heaviest queries.
  • The EC2-hosted SQL jobs became Redshift stored procedures scheduled through EventBridge, with no EC2 left to run.
  • QuickSight provides governed dashboards with role-based access and sharing, so the analytics team publishes its own.

One database, no longer a single point of failure

10 TBon one machine25%lower running cost, the target
Built withMySQLEC2Aurora PostgreSQLECSFargate
The engineering

The production database was MySQL on a single 12xlarge EC2 instance, holding up to 10 TB, so one machine could take the platform down. The MAP project moves it to Aurora PostgreSQL, with disaster recovery in a multi-region pattern, and moves the applications off EC2 onto ECS with Fargate, with eight weeks of hypercare after the cutover. Together with the container work, it's aimed at 25% lower cost of running the applications.

Marketing edits its own site

Without developersmarketing changes its own content
Built withSanity CMSReactGA4 360
The engineering

Sanity CMS schemas and React components now power the header, footer, home page, product pages, blog, success stories and About page, so marketing changes content without developers. GA4 360 instrumentation, through one data-layer function, gives consistent events across account creation, checkout, sign-up creation and login, and a new member-details table supports later personalization.

Two AI proofs of concept, with the model cost on view

Up to 60%less time per task, the target80%fewer service tickets, the target
Built withBedrockLangChainOpenSearchPostgreSQLLangfuse
The engineering

The first guides users through form creation for four to five event types, and answers signed-in users' questions from the platform's knowledge base. The second recommends and drafts forms from event metadata, existing templates and earlier organizer interactions:

  • Amazon Bedrock supplies the models, with LangChain orchestration and OpenSearch retrieval connecting the AI agent to the right content.
  • PostgreSQL holds the application data, and the AI workflow uses event metadata, templates and session context to prepare its form output.
  • Langfuse captures sessions and model cost, so the team can inspect form-generation behavior before production.

The smart AI agent has targets to meet in production: up to 60% less time to complete a task in the app, 80% more use of the application, so fewer people leave before finishing a sign-up, and 80% fewer service tickets.

What we'd tell another CTO

1If a modernization has stalled, change the order: shared parts first, then one module at a time, with tests a condition of shipping the library so every module inherits them. Write each new API against the old behavior, because parity testing is what lets the old service stay up while the new one proves itself.
2Benchmark the warehouse options before you migrate, since three real options beat one assumption, and track AI cost per session from the first prototype, as Langfuse did here, so production cost is known before anyone commits to it.

What else changed

As the company reported.

  • 700+ Superset dashboards replaced by QuickSight on Redshift, with SQL jobs moved into Redshift.
  • Marketing in control of the site, through Sanity, and consistent GA4 events.
  • Two AI proofs of concept complete, with session and cost tracking.

In their words

“Armakuni goes above and beyond to deliver.”

A reviewer, an online sign-up and scheduling platform

What comes next

ColdFusion elimination across every remaining module (authentication, settings, calendars, core sign-up and the portal), with biweekly checkpoints adjusting scope and team size, Ruby on Rails support alongside, the database move to Aurora PostgreSQL, and the two AI capabilities moving to production.

How we'd do it today

This project came before our current offers. Here's how we'd approach the same work now.

The rest of the ColdFusion would go through AK Evolve: AI agents read the old code into specs, characterization tests pin what it does today, right or wrong, and AI agents and AWS Transform rebuild one module at a time against those tests, behind a routing layer, so each slice goes live on its own and can go back. The company's engineers would lead small crews of AI agents on AK AI Factory, with every piece of work split into units small enough to check, quality gates on every pull request, and linters and tests stopping anything from wiring two modules back together. A person reviews and merges every change.

Have a problem like this one?

A free workshop: a few hours with the architects who'd do the work, on your own systems. No cost.

Book a free workshop