> ## Documentation Index
> Fetch the complete documentation index at: https://docs.alginte.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Building a topology

> The canvas walkthrough: the wizard's three steps, the node palette, drawers, validation, and editing shortcuts.

Open **Streams** in the sidebar and click **Create Stream**. The builder is a
three-step wizard; **Next** stays disabled while the current step has
validation errors, so you always know where you stand.

## Step 1 — Stream Properties

The stream's identity and configuration:

* **`application.id`** (required) — the Kafka Streams application id. It names
  the consumer group, prefixes the internal topics, and identifies the stream
  everywhere in Alginte (including its detail-page URL). Pick it deliberately:
  redeploying under the same id resumes from the same committed offsets and
  state.
* **`bootstrap.servers`** (required) — usually your cluster's default.
* **Serde defaults** — the default key/value types records are read and
  written with; individual nodes can override them later.
* Optional groups for resiliency (replication factor, standby replicas, state
  directory) and error handling (the dead-letter-queue topic), plus any other
  Kafka Streams property.

## Step 2 — Stream Flow: the canvas

The node palette sits beside the canvas, grouped by category — **Source**,
**Stateless**, **Group**, **Aggregate**, **Window**, **Join**,
**Branch / Merge**, **Convert**, **Suppress**, **Terminal**. **Drag** an item
onto the canvas to add it, then draw edges between node handles to define the
record flow.

* Start with a **Source** (*Stream Source*, *Table Source*, or *Global Table
  Source*) reading from a topic.
* Add processors — *Map*, *Filter*, *Group By*, *Aggregate*, *Join*, windowing
  and the rest of the operator set (see the
  [overview](/streams/overview#the-building-blocks)).
* End each branch in a **Terminal** node — typically a *Sink* writing to a
  topic.

Every node carries a small toolbar: **Show Properties Panel**, **Duplicate**,
**Delete**. The properties panel opens as a drawer: an optional collapsed
*Help* section for the operator on top, the node's
[SpEL expression editors](/streams/spel) always visible in the middle, and
collapsed sections for editor type hints, windowing, and serde overrides
around them.

### Validation as you build

Nodes, wizard steps, and palette groups carry **error badges** while something
is incomplete — a missing topic, an unconnected handle, an invalid expression.
Hover a badge to read the messages. When the canvas is clean, **Next**
unlocks.

### Editing shortcuts

* **Copy / paste**: Ctrl+C / Ctrl+V — works for multi-node selections,
  including their connections.
* **Undo / redo**: Ctrl+Z / Ctrl+Y.
* **Multi-select**: hold **Shift and drag** a box around nodes (box selection
  — not Shift+click).
* **Alignment toolbar** for tidying the selected nodes.

### Save your work: Download / Upload

The wizard header has **Download** (export the whole design — configuration
and canvas layout — as JSON) and **Upload** (import one back, ready to edit
or submit). Export is your durable copy: designs live in the file, not in the
server. Download early, download often.

## Step 3 — Submit Stream

Review and hit **Submit**. The topology is built server-side, deployed into
your Alginte instance, and started. What happens next — lifecycle, state, and
edition behaviour — is on [Deploy & lifecycle](/streams/deploy).
