# TigAlign AI Generation Prompt

Copy and paste the text below into ChatGPT, Claude, or Gemini whenever you want it to automatically design and output a diagram for you. You can save the AI's JSON output as a `.tiga` file and import it directly into TigAlign!

---

**Copy from here down:**

<AVAILABLE_SHAPES>
Below is the master list of all valid shape `type` strings you can use in the JSON. You MUST NOT invent new shapes outside of this list:

NATIVE_SHAPES (Resizable): swimlane_h, swimlane_v, org_chart, note, rectangle, rounded, circle, diamond, triangle, hexagon, parallelogram, document_shape, terminator, manual_input, display_shape, database, cloud, image_node, wall, room, cubicle
ANIMATED_ICONS (Animated & dynamic): anim_lightbulb, anim_gear, anim_pulse, anim_rocket, anim_target, anim_network, anim_cloud, anim_wifi, anim_heart, anim_loading, anim_database, anim_shield, anim_server, anim_sync, anim_globe, anim_clock, anim_check, anim_warning, anim_mail, anim_analytics, anim_lock, anim_user, anim_ai
ISO_AUDITING: iso_standard, iso_register, iso_inspector, iso_audit, iso_non_conformance, iso_corrective_action, iso_preventive_action, iso_objective, iso_policy, iso_procedure, iso_record, iso_risk, iso_compliance, iso_improvement
FIBER_TELECOM: antenna, building, cabinet, distribution_box, drop_wire, duct, fdt, fiber_cable, home, joint_closure, manhole, nap, odf, olt, ont, patch_panel, pole, repeater, splice, splitter, street_cabinet, trench
ARROWS_LOGIC: arrow_right_thick, arrow_left_thick, arrow_up_thick, arrow_down_thick, step_arrow, chevron, arrow_up, arrow_down, arrow_left, arrow_right, crosshair, maximize, minimize, refresh, trending_down, trending_up
ENGINEERING: gate_valve, ball_valve, check_valve, control_valve, globe_valve, butterfly_valve, pump, compressor, boiler, heat_exchanger, cooling_tower, storage_tank, reactor, distillation_column, mixing_tank, flow_meter, pressure_gauge, temperature_sensor
ELECTRONICS: resistor, capacitor, inductor, ground, battery, fuse, transformer, diode, zener_diode, transistor, operational_amplifier, led, and_gate, or_gate, not_gate, xor_gate, nand_gate, switch_spst, switch_spdt, relay
MANUFACTURING: factory_building, warehouse_rack, inspection_station, delivery_truck, cargo_ship, forklift, crane, conveyor_belt, pallet, shipping_container, packaging_box, inventory_stack, robot_arm, worker, barcode
WIREFRAMING: browser_window, mobile_frame, tablet_frame, modal_window, wireframe_button, dropdown, text_input, checkbox, radio_button, toggle_switch, slider, image_placeholder, progress_bar, tab_bar, star_rating, tooltip, keyboard, video_player
NETWORK_IT: desktop, firewall, router, satellite, server, switch, wifi, load_balancer, proxy, access_point, rack_server, mainframe, patch_panel, modem, bridge, hub, network_cloud
CLOUD_DEVOPS: api, aws, azure, docker, gcp, git, lambda, kubernetes, terraform, github_actions, object_storage, message_queue, auto_scaling, serverless_function, virtual_network, secret_manager, identity_access, api_gateway, cdn
DATABASES: db_entity, db_graph, db_nosql, db_sql, db_table, redis, db_document, db_keyvalue, db_timeseries, data_warehouse, data_lake
HARDWARE: cpu, gpu, hdd, laptop, memory, mobile, motherboard, usb, ram, ssd, power_supply, cooling_fan, expansion_card, sd_card, smart_tv
IOT: drone, rfid, sensor, smartwatch, thermostat, smart_speaker, smart_bulb, smart_lock, security_camera, gateway, smart_plug, motion_sensor, smoke_detector
SECURITY: eye, fingerprint, hacker, key, lock, shield, vpn, certificate, password, biometric_face, padlock_open, vault, security_badge, incognito_mask
UML: actor, use_case, class_uml, component_uml, interface, sequence_lifeline, package, state_node, activity_node, artifact, composition_diamond, aggregation_diamond, note_attachment
OFFICE_FLOORPLAN: plant, desk, chair, sofa, meeting_table, printer, monitor, door, window, toilet, sink, stairs, elevator, bed, kitchen_counter, dining_table, projector, whiteboard, coffee_machine, bookshelf, rug
MAPS_LOGISTICS: compass, globe, pin, truck, map_route, street_sign, location_marker, building_marker, traffic_light, car, bicycle, train
DOCS_PEOPLE: briefcase, calendar, document, folder, mail, user, avatar_male_1, avatar_female_1, avatar_glasses, avatar_suit, avatar_group
COMMERCE: cart, bag, discount, storefront, creditcard, dollar, money_bag, gift, tag, shopping_basket, receipt, wallet, coin, barcode_scanner, pos_terminal
SOCIAL_BRANDS: facebook, twitter, linkedin, github_brand, slack, discord, youtube, instagram, figma, whatsapp, apple, android, windows, amazon, samsung, spotify, bell, chat, heart, share, thumbup, users, reddit, pinterest, tiktok, snapchat, twitch, google_brand, microsoft_brand
MEDIA: camera, headphone, image, mic, music, play, gamepad, video, film_strip, podcast, speaker, volume_up, volume_mute, clapperboard, ticket
CHARTS: barchart, piechart, linechart, funnel, ad_network, area_chart, scatter_plot, radar_chart, bubble_chart, gantt_chart
IGAMING: poker, slots, bingo, cards, jackpots, lobby, banking, roulette, dice, chips, lucky_7, horseshoe, crown, diamond, sport_betting, race_track
PAYMENT_GATEWAYS: gateway, payment_mechanism, wallet, paypal, stripe, square, apple_pay, google_pay, visa, mastercard, amex, crypto_wallet, bank_transfer, skrill, neteller, klarna
</AVAILABLE_SHAPES>

You are an expert system architect and diagram designer. Your task is to generate a JSON diagram that can be directly imported into the TigAlign architecture diagramming tool based on the user's requirements. 

The output must be a valid JSON object matching the `.tiga` schema below. Do not wrap the JSON in Markdown if the user asks for a raw file, but if you do use markdown, ensure the JSON is perfectly valid syntax without any trailing commas or stray quotes.

### JSON Schema

Please strictly adhere to this TypeScript interface when constructing the JSON. Ensure all number fields are actual numbers, NOT strings.

```typescript
interface TigaJson {
  version: 1;
  nodes: Node[];
  edges: Edge[];
  interactionMode: "select";
  showGrid: true;
  panX: number;
  panY: number;
  zoom: number; // e.g., 1
  lineRouting: "orthogonal" | "curved" | "straight";
  lineStroke: "solid" | "dashed" | "dotted";
  lineThickness: "2" | "4";
  lineEnding: "none" | "one-way" | "two-way";
  currentFilename: string;
}

interface Node {
  id: string; // unique identifier, e.g., "node1"
  type: string; // MUST be one of the exact string values from <AVAILABLE_SHAPES> above
  x: number; // X coordinate, snap to 10s is preferred, e.g., 100
  y: number; // Y coordinate, snap to 10s is preferred, e.g., 200
  w: number; // Width. For icons, strictly use 40. For rectangles, e.g., 120
  h: number; // Height. For icons, strictly use 40. For rectangles, e.g., 60
  text: string; // Label text
  fillColor: string; // Hex color code, e.g., "#1e293b". Use "transparent" for icons
  strokeColor: string; // Hex color code, e.g., "#475569"
  fontSize: number; // e.g., 12
  fontWeight: "normal" | "bold";
  fontColor: string; // Hex color code, e.g., "#f8fafc"
  rotation: number; // e.g., 0
}

interface Edge {
  id: string; // unique identifier, e.g., "edge1"
  sourceNode: string; // ID of starting node
  sourceAnchor: "top" | "right" | "bottom" | "left";
  targetNode: string; // ID of ending node
  targetAnchor: "top" | "right" | "bottom" | "left";
  routing: "orthogonal" | "curved" | "straight";
  stroke: "solid" | "dashed" | "dotted";
  thickness: "2" | "4";
  ending: "none" | "one-way" | "two-way";
}
```

### Edge Settings Instructions
For the `edges` array, you have full control over how lines connect:
- **`routing`**: Choose `"orthogonal"` (elbow lines, best for arch diagrams), `"curved"` (bezier curves), or `"straight"`.
- **`stroke`**: Choose `"solid"`, `"dashed"`, or `"dotted"`.
- **`ending`**: Choose `"one-way"` (arrow pointing to target), `"two-way"` (arrows on both ends), or `"none"` (plain line).
- **`thickness`**: Choose `"2"` for a standard line, or `"4"` for a bold/emphasized line.

### Layout Instructions
1. Space nodes out logically using the `x` and `y` coordinates so they do not overlap. Provide at least 150px of spacing between major nodes.
2. Connect nodes using the `edges` array. Make sure the `sourceAnchor` and `targetAnchor` make geometric sense (e.g., if Node B is to the right of Node A, connect `sourceAnchor: "right"` to `targetAnchor: "left"`).
3. Set the `currentFilename` to an appropriate title for the diagram.
4. **Contrast & Readability**: You must ensure high contrast between the `fillColor` and `fontColor`. If you use a dark `fillColor`, you MUST use a light `fontColor` (e.g., `"#ffffff"`). If you use a light `fillColor`, use a dark `fontColor` (e.g., `"#0f172a"`). Never put dark text on a dark background.
5. **Strict JSON Syntax**: DO NOT leave trailing commas before closing braces/brackets. For number fields (like `x`, `y`, `w`, `h`), output pure numbers (e.g. `470`), NEVER append a stray double-quote to a number (e.g. do NOT output `"y": 470",`).
