Planon JavaScript Platform
Cloud engineering + frontend architecture + developer enablement
I built this platform during my Cloud Engineer internship at ABN AMRO to centralize JavaScript used by Planon workplace-service forms and give that code a secure, repeatable delivery path through Azure.
This public walkthrough is a sanitized reconstruction of the project. Internal URLs, resource names, form identifiers, business data and confidential implementation details have been removed or replaced with generic examples. It is not an official ABN AMRO or Planon website.
At a glance
| Area | What I worked on |
|---|---|
| JavaScript architecture | Centralized shared logic and form-specific modules |
| Runtime loading | Lightweight loader that resolves the active Planon context |
| Shared utilities | Reusable helpers and render-timing control |
| Azure hosting | JavaScript library and documentation hosted in Blob Storage |
| Infrastructure as Code | Bicep templates for Azure resources and private networking |
| Security | Private Endpoint and secured delivery architecture |
| CI/CD | Azure DevOps pipeline across Test, Acceptance and Production |
| Release control | Automatic Test deployment + approval gates for Acc/Prod |
| Developer enablement | Docusaurus documentation for architecture and workflow |
The platform in one picture
┌────────────────────┐
│ Planon forms │
│ workplace flows │
└─────────┬──────────┘
│ loads
▼
┌────────────────────┐
│ loader.js │
│ resolves context │
└──────┬───────┬─────┘
│ │
│ └──────────────┐
▼ ▼
┌───────────────┐ ┌───────────────┐
│ shared/ │ │ forms/ │
│ functions.js │ │ FORM_001.js │
│ timing.js │ │ FORM_002.js │
└───────────────┘ └───────────────┘
│
│ delivered through
▼
┌────────────────────────────────────────────┐
│ Azure Blob Storage + Private Networking │
│ Test → Approval → Acceptance → Approval → │
│ Production │
└────────────────────────────────────────────┘
Why this mattered
The project was not just about writing JavaScript for individual forms.
The real engineering problem was to create a maintainable platform around that JavaScript so reusable functionality could live in one place, form-specific behavior could stay isolated, and releases could move through controlled Azure environments without manual file handling.
Use the pages in this walkthrough to explore the platform layer by layer.