~ / work / onboarding-multitenancy

Self-service onboarding & multi-tenancy_

The best platform is one teams can join without talking to you. This project is a REST API + React UI that takes a team from "we need infrastructure" to fully onboarded — generating Terraform, automating Git, and notifying stakeholders along the way.

role
full-stack author
stack
Node.js, React (Vite), Terraform generation, Git automation, email orchestration
plus
containerized multi-tenant app patterns (Node/Express + Python/Flask, Docker, nginx)

the problem

Onboarding a team onto the platform was a checklist in someone's head: create the config, write the Terraform, open the Git PRs, set the permissions, email the right people. Every onboarding consumed platform-engineer hours and every skipped step surfaced weeks later as a mystery bug.

the approach

 React UI (Vite)
      │  team fills a form — accounts, services, environments
      ▼
 Node.js REST API
      ├── validates request against platform rules
      ├── generates Terraform from templates
      ├── automates Git — branch, commit, PR
      └── notifies — owners, approvers, requester
      ▼
 platform repo PR ──► review ──► merge ──► pipeline provisions

The human steps that remain are the ones that should be human: review and approval. Everything mechanical — file generation, naming conventions, branch hygiene, notifications — is code.

multi-tenancy patterns

Alongside onboarding, reference implementations for running multiple tenants on shared infrastructure: containerized Node and Flask services behind nginx, packaged with Docker and designed to slot into the ECS platform module — so "we need a new tenant" is configuration, not a new architecture discussion.

engineering details

Templates over snowflakes. Generated Terraform is always convention-correct — names, tags, and structure identical across hundreds of onboardings.

Git as the interface. The API's output is a pull request, not a side-channel change — keeping platform history reviewable and revertible.

Notifications built-in. Every state change emails the right audience, killing the "did my request go through?" ping-pong.

impact

Onboarding went from platform-engineer hours per team to a form and a PR review. Consistency stopped depending on who did the onboarding, and the platform team got their calendar back.

Node.jsReactTerraform DockerSelf-serviceDeveloper experience
← prev: bulk CI/CD modernization next: k8sAgent →