πŸ—οΈ AI Software Architecture Designer

Converts natural language project descriptions into full software architectures with Mermaid diagrams

v1.0

How It Works

Describe your project in plain English and get a complete architecture specification instantly.

πŸ“ Natural Language Input
β†’
πŸ” requirement_parser
β†’
πŸ—οΈ architecture_planner
β†’
βš™οΈ component_generator
β†’
πŸ“Š diagram_builder
β†’
βœ… Full Architecture

πŸ›’ E-Commerce Platform

Full e-commerce with products, cart, payments, real-time order tracking, and email notifications.

Microservices Stripe WebSockets Kubernetes

πŸ’¬ Real-Time Chat App

Multi-room chat with persistent history, file sharing, OAuth login, and full-text search.

WebSockets OAuth Redis Elasticsearch

🌐 IoT Data Platform

Enterprise IoT: ingests sensor data, time-series metrics, alert engine, and live dashboards.

Event-Driven Kafka TimescaleDB Distributed

πŸ“‹ SaaS Project Management

Team collaboration with tasks, milestones, Slack integration, SSO, and webhooks.

Enterprise SSO Slack Multi-tenant

Architecture Pattern

Microservices

Scale

Medium

Microservices

6 services

Databases

PostgreSQL + Redis

Deployment

Kubernetes

Message Broker

RabbitMQ

πŸ—οΈ System Architecture β€” E-Commerce Platform

graph TB subgraph Client["Client Layer"] Browser["🌐 Web Browser"] Mobile["πŸ“± Mobile App"] end subgraph Edge["Edge Layer"] CDN["☁️ CDN / CloudFront"] LB["βš–οΈ Load Balancer"] GW["πŸ”€ API Gateway :8000"] end subgraph Services["Microservices"] US["βš™οΈ user-service :8001"] CS["βš™οΈ core-service :8002"] WS["βš™οΈ websocket-service :8003"] PS["βš™οΈ payment-service :8004"] NS["βš™οΈ notification-service :8005"] end subgraph Data["Data Layer"] PG[("πŸ—„οΈ PostgreSQL :5432")] RD[("⚑ Redis :6379")] MQ["πŸ“¨ RabbitMQ Broker"] end Browser --> CDN Mobile --> CDN CDN --> LB LB --> GW GW --> US GW --> CS GW --> WS GW --> PS US --> PG US --> RD CS --> PG CS --> RD PS --> PG CS --> MQ MQ --> NS style Client fill:#1a1a2e,stroke:#e94560 style Edge fill:#16213e,stroke:#0f3460 style Services fill:#0f3460,stroke:#533483 style Data fill:#533483,stroke:#e94560

πŸ”€ Microservice Interaction Layout

graph LR subgraph External["External Clients"] WEB["Web App :3000"] MOB["Mobile App"] end GW["API Gateway :8000\nNginx / Kong"] subgraph CoreServices["Core Services"] US["user-service :8001\nFastAPI + JWT"] CS["core-service :8002\nFastAPI"] WS["websocket-service :8003\nFastAPI + WS"] PS["payment-service :8004\nFastAPI + Stripe"] NS["notification-service :8005\nFastAPI + SendGrid"] end subgraph Storage["Storage"] PG[("PostgreSQL\nRelational DB")] RD[("Redis\nCache + Sessions")] MQ["RabbitMQ\nMessage Broker"] end WEB -->|HTTPS| GW MOB -->|HTTPS| GW GW -->|REST| US GW -->|REST| CS GW -->|WSS| WS GW -->|REST| PS US --- PG US --- RD CS --- PG CS --- RD PS --- PG CS -->|publish| MQ MQ -->|subscribe| NS

πŸ—„οΈ Database Schema (ER Diagram)

erDiagram USERS { UUID id PK VARCHAR email UK VARCHAR password_hash VARCHAR full_name VARCHAR role BOOLEAN is_active TIMESTAMP created_at TIMESTAMP updated_at } SESSIONS { UUID id PK UUID user_id FK VARCHAR token_hash UK TIMESTAMP expires_at INET ip_address TIMESTAMP created_at } PRODUCTS { UUID id PK VARCHAR name TEXT description DECIMAL price INTEGER stock_quantity UUID category_id FK BOOLEAN is_active TIMESTAMP created_at } ORDERS { UUID id PK UUID user_id FK VARCHAR status DECIMAL total_amount VARCHAR payment_intent_id JSONB shipping_address TIMESTAMP created_at TIMESTAMP updated_at } AUDIT_LOGS { BIGSERIAL id PK VARCHAR entity_type UUID entity_id VARCHAR action UUID actor_id FK JSONB metadata TIMESTAMP created_at } USERS ||--o{ SESSIONS : "has" USERS ||--o{ ORDERS : "places" USERS ||--o{ AUDIT_LOGS : "generates" ORDERS }o--|| PRODUCTS : "contains"

πŸš€ Kubernetes Deployment Strategy

graph TB subgraph Cloud["☁️ Cloud Provider - AWS / GCP / Azure"] subgraph VPC["Virtual Private Cloud"] subgraph PublicSubnet["Public Subnet"] IGW["Internet Gateway"] ALB["Application Load Balancer"] end subgraph K8S["☸️ Kubernetes Cluster"] subgraph NodeGroup1["Node Group - App Pods"] POD1["api-gateway x2"] POD2["user-service x3"] POD3["core-service x3"] end subgraph NodeGroup2["Node Group - Worker Pods"] POD4["payment-service x2"] POD5["notification-service x2"] POD6["websocket-service x2"] end ING["Nginx Ingress Controller"] end subgraph DataSubnet["Private Data Subnet"] RDS["RDS PostgreSQL Multi-AZ"] REDIS["ElastiCache Redis Cluster"] MSK["MSK - Managed RabbitMQ"] end end CF["CloudFront CDN"] CW["CloudWatch Monitoring"] SM["Secrets Manager"] end Internet(("🌐 Internet")) --> CF CF --> ALB ALB --> ING ING --> POD1 POD1 --> POD2 POD1 --> POD3 POD3 --> RDS POD3 --> REDIS POD3 --> MSK POD2 --> RDS MSK --> POD5 style Cloud fill:#232f3e,stroke:#ff9900 style K8S fill:#326ce5,stroke:#fff,color:#fff style DataSubnet fill:#1a1a2e,stroke:#e94560

πŸ” requirement_parser.py

Parses natural language descriptions. Extracts: features, entities, scale, integrations, auth/realtime needs, and storage types.

πŸ—οΈ architecture_planner.py

Plans the overall architecture. Selects: pattern (monolith/microservices/event-driven), services, databases, message broker, and deployment target.

βš™οΈ component_generator.py

Generates detailed specs: DB tables with columns/indexes, service endpoints, environment variables, and Docker/K8s snippets.

πŸ“Š diagram_builder.py

Outputs 4 Mermaid diagrams: system architecture, microservice layout, ER database schema, and deployment strategy.

⚑ Interactive Architecture Generator

Enter a project description below to see how the AI Architecture Designer would parse and plan it. To generate actual Mermaid diagrams, run the Python project locally or trigger the GitHub Actions workflow.

πŸš€ Run Locally

# Clone and run
git clone https://github.com/PranayMahendrakar/ai-software-architecture-designer.git
cd ai-software-architecture-designer

# Install dependencies
pip install -r requirements.txt

# Run with a built-in example
python main.py --example ecommerce

# Run with your own description
python main.py --description "Build a food delivery app like DoorDash"

# Interactive mode
python main.py --interactive