Two apps, live · Jun – Oct 2026
Two apps from the first commit
I made the first commit of two Next.js applications, the merchant dashboard rewrite and a new internal operations console, and got both into production by September 2026 without freezing the old tools.
- Role
- Created both repositories
- When
- Jun – Oct 2026
- Where
- PayGlocal
- Stack
- Next.js 16React 19TypeScriptDockerAWS CodeBuild
The situation
The legacy operations console was a React 17 app with screens that the whole company depended on daily. A big-bang rewrite was not an option, and neither was asking people to switch tools overnight.
What I built
- Authentication for both apps: password, OTP, 2FA, SSO, TOTP and platform biometrics, behind a status-driven login flow.
- App shells with permission-gated navigation, typed API layers and Docker/CodeBuild deployment.
- About sixteen merchant configuration screens, report suites and compliance tools ported into the new console.
- A two-way bridge: old pages could embed new ones over postMessage, and people could switch between old and new views.
- A written migration playbook, packaged as an AI-agent skill, so every port followed the same rules.
Session expired
The embedded page told the old console, so the whole app logs out together.
postMessage log
- Waiting for the embedded page…
Decisions
Strangle, don’t replace
New screens shipped one at a time inside the old console first. Session timeouts and route changes travel across the iframe boundary, so the seam stays invisible to users.
Write the conventions down before the code
Every API call through shared hooks, services per feature, one form library. Agreeing on these up front kept two codebases with several contributors consistent.
Outcome
| What | Before | After | Change |
|---|---|---|---|
| Apps started from first commit | 0 | 2 | both live |
| Config screens ported | 0 | ~16 | from legacy |
| Time to production | — | ~3 months | Sep 2026 |