diff --git a/lambda-durable-java-sam/DEVELOPER_GUIDE.md b/lambda-durable-java-sam/DEVELOPER_GUIDE.md
new file mode 100644
index 000000000..4b31baf9e
--- /dev/null
+++ b/lambda-durable-java-sam/DEVELOPER_GUIDE.md
@@ -0,0 +1,672 @@
+# Lambda Durable Functions in Java - Developer Guide
+
+## Table of Contents
+
+1. [Architecture Overview](#architecture-overview)
+2. [The Durable Execution Model](#the-durable-execution-model)
+3. [Java SDK Reference](#java-sdk-reference)
+4. [DurableHandler Base Class](#durablehandler-base-class)
+5. [Durable Operations](#durable-operations)
+6. [Error Handling and Retries](#error-handling-and-retries)
+7. [Deployment Model](#deployment-model)
+8. [Best Practices](#best-practices)
+9. [Testing](#testing)
+10. [Common Pitfalls](#common-pitfalls)
+
+> **Tip:** For visual step-by-step flow diagrams of each pattern, see [DIAGRAMS.md](DIAGRAMS.md).
+
+---
+
+## Architecture Overview
+
+```
+┌─────────────────────────────────────────────────────────────────┐
+│ AWS Cloud │
+│ │
+│ ┌───────────┐ ┌──────────────────────────────────────────┐ │
+│ │ SNS Topic │────>│ Lambda Durable Function │ │
+│ └───────────┘ │ │ │
+│ ▲ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
+│ │ │ │ Step 1 │─>│ Step 2 │─>│ Step 3 │ │ │
+│ ┌────┴────┐ │ │(chkpt) │ │(chkpt) │ │(chkpt) │ │ │
+│ │Producer │ │ └─────────┘ └─────────┘ └─────────┘ │ │
+│ │(EC2/CLI)│ │ │ │ │ │ │
+│ └─────────┘ │ ▼ ▼ ▼ │ │
+│ │ ┌────────────────────────────────────┐ │ │
+│ │ │ Checkpoint Store (managed) │ │ │
+│ │ └────────────────────────────────────┘ │ │
+│ └──────────────────────────────────────────┘ │
+│ │ │
+│ ▼ │
+│ ┌──────────┐ │
+│ │ DynamoDB │ │
+│ └──────────┘ │
+└─────────────────────────────────────────────────────────────────┘
+```
+
+### Components
+
+| Component | Role |
+|-----------|------|
+| **SNS Topic** | Event source that triggers the durable functions |
+| **Lambda Durable Functions** | Business logic with automatic checkpointing |
+| **Checkpoint Store** | Managed by Lambda; stores step results and execution state |
+| **DynamoDB** | Optional application state for this workshop |
+| **ECR** | Container registry for the Java function images |
+| **Producer (EC2/CLI)** | Sends messages to SNS to trigger workflows |
+
+---
+
+## The Durable Execution Model
+
+### Lifecycle of a Durable Execution
+
+```
+1. INVOKE → Function starts, SDK initializes
+2. EXECUTE STEP → Business logic runs inside ctx.step()
+3. CHECKPOINT → Result saved to checkpoint store
+4. WAIT/SUSPEND → Function exits, no compute charges
+5. RESUME → Backend re-invokes the function
+6. REPLAY → SDK runs from top, skips checkpointed steps
+7. CONTINUE → Execution continues from where it left off
+```
+
+### Replay: The Core Mechanism
+
+When a durable function resumes (after a wait, retry delay, or interruption), the SDK uses **replay**:
+
+1. Your code runs from the **beginning** of `handleRequest()`
+2. When it hits a `step()` that already has a checkpoint, the SDK returns the **stored result** instantly
+3. When it hits the first un-checkpointed operation, normal execution resumes
+
+This means your code must be **deterministic** between steps. Do NOT:
+- Use `System.currentTimeMillis()` or `Math.random()` outside of steps
+- Mutate external state outside of steps
+- Branch on non-deterministic values between steps
+
+### What Goes Inside a Step vs. Outside
+
+| Inside `context.step()` | Outside steps |
+|--------------------------|---------------|
+| API calls | Control flow (if/else, loops) |
+| Database operations | Variable assignments from step results |
+| Current time / random values | Logging via `context.getLogger()` |
+| Side effects (notifications) | Calling other durable operations |
+| Non-deterministic code | Pure computation on step results |
+
+---
+
+## Java SDK Reference
+
+### Maven Dependency
+
+```xml
+
+ software.amazon.lambda.durable
+ aws-durable-execution-sdk-java
+ 1.0.0
+
+```
+
+### Key Packages
+
+```java
+import software.amazon.lambda.durable.DurableContext;
+import software.amazon.lambda.durable.DurableHandler;
+import software.amazon.lambda.durable.DurableFuture;
+import software.amazon.lambda.durable.DurableCallbackFuture;
+import software.amazon.lambda.durable.StepContext;
+import software.amazon.lambda.durable.TypeToken;
+
+import software.amazon.lambda.durable.config.StepConfig;
+import software.amazon.lambda.durable.config.StepSemantics;
+import software.amazon.lambda.durable.config.CallbackConfig;
+import software.amazon.lambda.durable.config.WaitForCallbackConfig;
+import software.amazon.lambda.durable.config.ParallelConfig;
+import software.amazon.lambda.durable.config.MapConfig;
+import software.amazon.lambda.durable.config.CompletionConfig;
+import software.amazon.lambda.durable.config.WaitForConditionConfig;
+import software.amazon.lambda.durable.config.RunInChildContextConfig;
+import software.amazon.lambda.durable.config.InvokeConfig;
+
+import software.amazon.lambda.durable.retry.RetryStrategies;
+import software.amazon.lambda.durable.retry.RetryStrategy;
+import software.amazon.lambda.durable.retry.RetryDecision;
+import software.amazon.lambda.durable.retry.JitterStrategy;
+import software.amazon.lambda.durable.retry.WaitStrategies;
+import software.amazon.lambda.durable.retry.WaitForConditionWaitStrategy;
+
+import software.amazon.lambda.durable.model.ParallelResult;
+import software.amazon.lambda.durable.model.MapResult;
+import software.amazon.lambda.durable.model.WaitForConditionResult;
+
+import software.amazon.lambda.durable.exception.StepFailedException;
+import software.amazon.lambda.durable.exception.StepInterruptedException;
+import software.amazon.lambda.durable.exception.CallbackFailedException;
+import software.amazon.lambda.durable.exception.DurableOperationException;
+```
+
+---
+
+## DurableHandler Base Class
+
+Every durable function extends `DurableHandler`:
+
+```java
+public class MyHandler extends DurableHandler