The Cloud Engineering Experience
Atakora is a type-safe Infrastructure as Code (IaC) framework for Azure that combines the flexibility of ARM templates with the power of TypeScript. Build, validate, and deploy Azure infrastructure with confidence using intent-based constructs and comprehensive validation.
# Install the CLI
npm install -g @atakora/cli
# Initialize a new project
atakora init my-azure-project
# Deploy your infrastructure
cd my-azure-project
atakora deploy- Type-Safe Infrastructure: Full TypeScript support with compile-time validation
- Intent-Based Constructs: High-level abstractions that handle Azure best practices automatically
- ARM Template Generation: Direct synthesis to Azure Resource Manager templates
- Multi-Stack Management: Organize infrastructure across subscriptions and resource groups
- Gov Cloud Support: First-class support for Azure Government Cloud deployments
- Validation Framework: Comprehensive runtime validation before deployment
Full documentation is available in the docs/ directory:
- Getting Started Guide - Installation, first project, and basic examples
- Usage Guides - Design patterns, multi-stack architectures, and best practices
- API Reference - Complete API documentation for all packages
- Examples - Real-world examples and code samples
- Architecture - Architecture decision records and design documents
Atakora is organized as a monorepo with the following packages:
@atakora/lib- Core framework, synthesis engine, and validation@atakora/cdk- Azure resource constructs organized by Microsoft.* namespaces@atakora/cli- Command-line interface for project management and deployment
import { App, ResourceGroupStack } from '@atakora/lib';
import { VirtualNetworks } from '@atakora/cdk/network';
import { StorageAccounts } from '@atakora/cdk/storage';
const app = new App();
const stack = new ResourceGroupStack(app, 'MyStack', {
resourceGroupName: 'rg-myapp-prod',
location: 'eastus',
});
const vnet = new VirtualNetworks(stack, 'VNet', {
virtualNetworkName: 'vnet-myapp',
addressSpace: { addressPrefixes: ['10.0.0.0/16'] },
});
const storage = new StorageAccounts(stack, 'Storage', {
storageAccountName: 'stmyappprod',
sku: { name: 'Standard_LRS' },
});
app.synth();We welcome contributions! Please see our Contributing Guide for details on:
- Setting up your development environment
- Code standards and quality requirements
- Testing guidelines
- Pull request process
ISC