---
title: Foundations
description: Learn the core concepts of workflow programming to build durable, long-running applications.
type: overview
summary: Explore the core concepts you need to use workflows effectively.
related:
  - /docs/foundations/workflows-and-steps
  - /docs/getting-started
---

# Foundations



Workflow programming can be a slight shift from how you traditionally write real-world applications. Learning the foundations now will go a long way toward helping you use workflows effectively.

<Cards>
  <Card href="/docs/foundations/workflows-and-steps" title="Workflows and Steps">
    Learn about the building blocks of durability
  </Card>

  <Card href="/docs/foundations/starting-workflows" title="Starting Workflows">
    Trigger workflows and track their execution using the `start()` function.
  </Card>

  <Card href="/docs/foundations/common-patterns" title="Common Patterns">
    Common patterns useful in workflows.
  </Card>

  <Card href="/docs/foundations/errors-and-retries" title="Errors & Retrying">
    Types of errors and how retrying work in workflows.
  </Card>

  <Card href="/docs/foundations/hooks" title="Webhooks (and hooks)">
    Respond to external events in your workflow using hooks and webhooks.
  </Card>

  <Card href="/docs/foundations/streaming" title="Streaming">
    Stream data in real-time to clients without waiting for the workflow to complete.
  </Card>

  <Card href="/docs/foundations/serialization" title="Serialization">
    Understand which types can be passed between workflow and step functions.
  </Card>

  <Card href="/docs/foundations/idempotency" title="Idempotency">
    Prevent duplicate side effects when retrying operations.
  </Card>
</Cards>


## Sitemap
[Overview of all docs pages](/sitemap.md)
