diff --git a/server/tm/git_tm/example.go b/server/tm/git_tm/example.go
index 39541fa..3c2816d 100644
--- a/server/tm/git_tm/example.go
+++ b/server/tm/git_tm/example.go
@@ -3,7 +3,8 @@
 import (
 	"context"
 	"fmt"
-	"log"
+	"log/slog"
+	"os"
 	"time"
 
 	"github.com/iomodo/staff/git"
@@ -12,11 +13,14 @@
 
 // Example demonstrates how to use the GitTaskManager
 func Example() {
+	// Create logger
+	logger := slog.New(slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelInfo}))
+
 	// Initialize git interface
 	gitInterface := git.DefaultGit("./tasks-repo")
 
 	// Create task manager
-	taskManager := NewGitTaskManager(gitInterface, "./tasks-repo")
+	taskManager := NewGitTaskManagerWithLogger(gitInterface, "./tasks-repo", logger)
 
 	// Create a new task
 	ctx := context.Background()
@@ -32,46 +36,50 @@
 
 	task, err := taskManager.CreateTask(ctx, createReq)
 	if err != nil {
-		log.Fatalf("Failed to create task: %v", err)
+		logger.Error("Failed to create task", slog.String("error", err.Error()))
+		os.Exit(1)
 	}
 
-	fmt.Printf("Created task: %s\n", task.ID)
+	logger.Info("Created task", slog.String("id", task.ID))
 
 	// Get the task
 	retrievedTask, err := taskManager.GetTask(ctx, task.ID)
 	if err != nil {
-		log.Fatalf("Failed to get task: %v", err)
+		logger.Error("Failed to get task", slog.String("error", err.Error()))
+		os.Exit(1)
 	}
 
-	fmt.Printf("Retrieved task: %s - %s\n", retrievedTask.ID, retrievedTask.Title)
+	logger.Info("Retrieved task", slog.String("id", retrievedTask.ID), slog.String("title", retrievedTask.Title))
 
 	// Start the task
 	startedTask, err := taskManager.StartTask(ctx, task.ID)
 	if err != nil {
-		log.Fatalf("Failed to start task: %v", err)
+		logger.Error("Failed to start task", slog.String("error", err.Error()))
+		os.Exit(1)
 	}
 
-	fmt.Printf("Started task: %s (status: %s)\n", startedTask.ID, startedTask.Status)
+	logger.Info("Started task", slog.String("id", startedTask.ID), slog.String("status", string(startedTask.Status)))
 
 	// List all tasks
 	taskList, err := taskManager.ListTasks(ctx, nil, 0, 10)
 	if err != nil {
-		log.Fatalf("Failed to list tasks: %v", err)
+		logger.Error("Failed to list tasks", slog.String("error", err.Error()))
+		os.Exit(1)
 	}
 
-	fmt.Printf("Total tasks: %d\n", taskList.TotalCount)
+	logger.Info("Total tasks", slog.Int("count", taskList.TotalCount))
 	for _, t := range taskList.Tasks {
-		fmt.Printf("- %s: %s (%s)\n", t.ID, t.Title, t.Status)
+		logger.Info("Task", slog.String("id", t.ID), slog.String("title", t.Title), slog.String("status", string(t.Status)))
 	}
 
 	// Complete the task
 	completedTask, err := taskManager.CompleteTask(ctx, task.ID)
 	if err != nil {
-		log.Fatalf("Failed to complete task: %v", err)
+		logger.Error("Failed to complete task", slog.String("error", err.Error()))
+		os.Exit(1)
 	}
 
-	fmt.Printf("Completed task: %s (completed at: %s)\n",
-		completedTask.ID, completedTask.CompletedAt.Format(time.RFC3339))
+	logger.Info("Completed task", slog.String("id", completedTask.ID), slog.String("completed_at", completedTask.CompletedAt.Format(time.RFC3339)))
 }
 
 // ExampleTaskFile shows the format of a task file
