Design Azure network topologies on a drag-and-drop canvas and export production-ready Bicep — entirely in your browser, with no backend, no login, and no install.
🚀 Try it now · Features · Quick Start · How to Use · Bicep Output · Architecture
AZDesign is a free, browser-based Azure Visual Designer and easy Lab Designer. Compose Azure infrastructure topologies on an interactive canvas, configure each resource through a properties panel, validate your network, and export deployment-ready Azure Bicep — without writing a single line of code.
Whether you're standing up a quick proof-of-concept lab, teaching Azure networking, or scaffolding production infrastructure, AZDesign turns a diagram into deployable Bicep in seconds.
Everything runs in your browser. Diagrams save to portable JSON files. There is no server, no database, and no login — your design never leaves your machine unless you choose to share it.
- Who it's for
- ✨ Features
- 🚀 Quick Start
- 🧩 Supported Azure Components
- 📖 How to Use
- 📄 Generated Bicep Example
- 🗂 Project Structure
- 🛠 Technology Stack
- ☁️ Deploying as a Static Site
- 🔒 Privacy
- 🤝 Contributing
- 📚 Documentation
- 📄 License
| You are… | Use AZDesign to… |
|---|---|
| A cloud / infra engineer | Scaffold a VNet/Subnet/NSG/VM topology and export clean Bicep to deploy. |
| An Azure learner or trainer | Teach and visualize Azure networking without touching the portal. |
| A solutions architect | Sketch a lab or PoC topology and hand off deployment-ready templates. |
| Anyone building a lab | Go from a whiteboard idea to az deployment group create in minutes. |
| Area | Capability | Description |
|---|---|---|
| Design | Visual canvas | Drag-and-drop Azure components on an interactive canvas powered by React Flow. |
| Design | Properties panel | Configure every resource through a dedicated panel with live, in-place editing. |
| Networking | Intelligent IP management | Subnet-aware address suggestions, duplicate detection, and DHCP vs. Static toggling. |
| Resources | Azure resource support | Virtual Networks, Subnets, Network Security Groups, and five VM roles. |
| Quality | Two-pass validation | Network-topology checks plus deployment-readiness checks (VM naming rules, forbidden usernames, DC configuration). |
| Quality | AD DS domain join | Generates the correct DSC → WaitForAD → DomainJoin dependency chain, eliminating the race condition where member servers join before the domain controller is ready. |
| Export | Bicep generation | Produces parameterised, deployment-ready .bicep files with embedded validation annotations. |
| Export | Deploy wizard | Generates ready-to-run Azure CLI commands for one-click deployment. |
| Portability | Save / load diagrams | Stores designs as portable JSON for easy sharing and version control. |
| Portability | Zero backend | Fully static — deployable to GitHub Pages, Azure Static Web Apps, or Vercel. |
No install needed — just open the live demo.
To run locally:
# Clone the repository
git clone https://github.com/jeevanbisht/AZDesign.git
cd AZDesign
# Install dependencies
npm install
# Start the development server
npm run devOpen http://localhost:5173 in your browser.
| Command | Description |
|---|---|
npm run dev |
Start dev server with hot module replacement |
npm run build |
Type-check and produce an optimised production build in dist/ |
npm run preview |
Serve the production build locally |
| Component | Category | Description |
|---|---|---|
| Virtual Network | Network | Top-level Azure network container with a CIDR address space |
| Subnet | Network | Sub-division of a VNet; VMs are placed here |
| NSG | Network | Network Security Group; attach to a subnet to define traffic rules |
| Domain Controller | Virtual Machine | Windows Server with AD DS and DNS; always Static IP |
| Member Server | Virtual Machine | Joins a domain; general-purpose Windows or Linux workload |
| Web Server | Virtual Machine | Runs IIS, Nginx, or Apache; configurable web stack |
| Client OS | Virtual Machine | Windows 11 workstation/client VM |
| Generic VM | Virtual Machine | Bare Windows Server or Linux VM with no role-specific configuration |
Drag components from the left palette onto the canvas. Connect them by dragging from a node handle to its target:
- VM → Subnet
- Subnet → VNet
- NSG → Subnet
Click any node to open its Properties Panel and set names, IP addresses, OS versions, domain settings, etc.
Click Validate Network to run the built-in two-pass validator:
- Network topology — CIDR correctness, subnet containment, IP conflicts, Azure-reserved addresses
- Deployment readiness — VM naming rules (Windows 15-char limit), forbidden admin usernames, DC configuration, member server domain settings
Click Export Bicep to generate the template. The output file includes:
- A validation summary header listing any detected issues
@minLength/@maxLength/@secureparameter decorators enforced by ARM at deployment time- Inline
// [ERROR]/// [WARNING]annotations above any resource with issues - Correct dependency chains for AD DS:
DSC → WaitForAD → (NIC + DomainJoin)
Click Deploy to Azure for a wizard that generates the Azure CLI commands:
az login
az group create --name <resource-group> --location <location>
az deployment group create \
--resource-group <resource-group> \
--template-file lab.bicep \
--verbose- Save Diagram downloads
lab-design.json— a portable snapshot of your canvas - Load Diagram restores any previously saved
.jsonfile
💡 Tip: commit
lab-design.jsonalongside your Bicep templates to version-track your lab topology.
// ================================================================
// AZDesign — Generated Bicep Template
// Generated: 2025-01-15T10:30:00.000Z
// Repository: https://github.com/jeevanbisht/AZDesign
//
// VALIDATION: All network and deployment checks passed ✓
// ================================================================
targetScope = 'resourceGroup'
@minLength(1)
@maxLength(20)
@description('Admin username. Forbidden values: admin, administrator, root, guest, user, test.')
param adminUsername string = 'labadmin'
@secure()
@minLength(12)
@description('Admin password. Must satisfy Azure complexity requirements.')
param adminPassword string
// DC gets static IP; member NIC waits for AD to be ready before provisioning
resource nic_MemberServer01 '...' = {
dependsOn: [ext_DC01_WaitForAD] // ← not nic_DC01; ensures AD is running
...
}
// Race condition fix: poll ADWS before allowing any domain join
resource ext_DC01_WaitForAD '...' = {
dependsOn: [ext_DC01_DSC]
settings: {
commandToExecute: 'powershell -Command "do { Start-Sleep 15 } until (Get-Service ADWS ...)"'
}
}src/
├── store/
│ └── useLabStore.ts # Zustand store — all nodes, edges, actions
├── types/
│ └── nodes.ts # TypeScript interfaces for all node data types
├── components/
│ ├── Toolbar/ # Top bar — all action buttons and modals
│ ├── Palette/ # Left panel — draggable component definitions
│ ├── Canvas/ # ReactFlow canvas — drag-drop, edge validation
│ ├── Properties/ # Right panel — per-node configuration forms
│ ├── nodes/ # Custom node renderers
│ └── edges/ # Custom deletable edge renderer
└── engine/
├── bicepGenerator.ts # Converts canvas state → Bicep template
└── networkValidator.ts # Network + deployment readiness validation
| Package | Purpose |
|---|---|
| React 18 | UI framework |
| TypeScript 5.7 | Strict type safety across all components |
| Vite 6 | Dev server with HMR, production bundling |
| @xyflow/react 12 | Node/edge rendering, drag-and-drop, canvas |
| Zustand 5 | Single store for nodes, edges, selection |
| Tailwind CSS 4 | Utility classes |
| lucide-react | Consistent icon set |
npm run build
# Output is in dist/
# Azure Static Web Apps
az staticwebapp create --name azdesign --resource-group my-rg --source . --location eastus
# Vercel
npx vercel --prod
# GitHub Pages — add a workflow in .github/workflows/deploy.ymlThe included
vercel.jsonrewrites all routes toindex.htmlfor SPA routing.
AZDesign is a fully client-side application:
- No backend, no database, no login. Nothing is sent to a server.
- Your designs stay local. Diagrams are saved as JSON files on your machine; you decide if and when to share them.
- Static & inspectable. The entire app is open source and builds to plain static assets you can host anywhere, including air-gapped environments.
Contributions, issues, and feature requests are welcome!
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Make your changes and ensure
npm run buildpasses - Commit with a descriptive message
- Push and open a Pull Request
- New node type — add an interface in
types/nodes.ts, a renderer incomponents/nodes/, a form inPropertiesPanel.tsx, and a handler inbicepGenerator.ts - New validation check — add to
validateDeploymentReadiness()innetworkValidator.ts; it automatically appears in both the UI modal and the exported Bicep header - New VM role — add to the
VMRoleunion,createDefaultVMData(),VMNode.tsxrole config, and the generator
Full professional documentation is available in
AZDesign-Documentation.docx at the repository root, covering:
- Complete user guide with step-by-step instructions
- Architecture and data flow diagrams
- Developer guide for extending the application
- Deployment options and multi-user hosting considerations
MIT — free to use, fork, and modify.
