diff --git a/solutions/day1/part-1/temporalpractice/bakery/MakeCookiesApp.java b/solutions/day1/part-1/temporalpractice/bakery/MakeCookiesApp.java
new file mode 100644
index 0000000000000000000000000000000000000000..d0c38714a65142906c775da34d0c4cb10b1afb3c
--- /dev/null
+++ b/solutions/day1/part-1/temporalpractice/bakery/MakeCookiesApp.java
@@ -0,0 +1,8 @@
+package io.takima.temporalpractice.bakery;
+
+public class MakeCookiesApp {
+    public static void main(String[] args) {
+        // This app should execute the making of all cookies ordered
+        new KitchenWorker().start();
+    }
+}
diff --git a/solutions/day1/part-1/temporalpractice/bakery/OrderCookiesApp.java b/solutions/day1/part-1/temporalpractice/bakery/OrderCookiesApp.java
new file mode 100644
index 0000000000000000000000000000000000000000..ccb16fb60a18984462438df13aa62760cfee0097
--- /dev/null
+++ b/solutions/day1/part-1/temporalpractice/bakery/OrderCookiesApp.java
@@ -0,0 +1,21 @@
+package io.takima.temporalpractice.bakery;
+
+import io.temporal.client.WorkflowClient;
+import io.temporal.client.WorkflowOptions;
+import io.temporal.serviceclient.WorkflowServiceStubs;
+
+public class OrderCookiesApp {
+    public static void main(String[] args) {
+        // This app simulates an order of cookies
+        // It should call the workflow which makes cookies
+        WorkflowClient client = WorkflowClient.newInstance(WorkflowServiceStubs.newLocalServiceStubs());
+        WorkflowOptions options = WorkflowOptions.newBuilder()
+          .setTaskQueue("TheOneAndOnlyQueue")
+          .setWorkflowId("best-cookie")
+          .build();
+
+        KitchenWorkflow workflow = client.newWorkflowStub(KitchenWorkflow.class, options);
+
+        workflow.makeCookies(); // Start the Workflow Execution
+    }
+}
diff --git a/solutions/day1/part-1/temporalpractice/bakery/kitchen/KitchenWorker.java b/solutions/day1/part-1/temporalpractice/bakery/kitchen/KitchenWorker.java
new file mode 100644
index 0000000000000000000000000000000000000000..b61e118c73e9ae8c51ff51695acfe01f95ccc629
--- /dev/null
+++ b/solutions/day1/part-1/temporalpractice/bakery/kitchen/KitchenWorker.java
@@ -0,0 +1,29 @@
+package io.takima.temporalpractice.bakery.kitchen;
+
+import io.temporal.client.WorkflowClient;
+import io.temporal.client.WorkflowOptions;
+import io.temporal.serviceclient.WorkflowServiceStubs;
+import io.temporal.worker.Worker;
+import io.temporal.worker.WorkerFactory;
+
+public class KitchenWorker {
+  public void start() {
+    // Represents the connection to your local cluster. For now, lets keep it simple
+    WorkflowServiceStubs serviceStub = WorkflowServiceStubs.newLocalServiceStubs();
+    // Your key for interacting with the Temporal world.
+    WorkflowClient client = WorkflowClient.newInstance(serviceStub);
+
+    WorkflowOptions options = WorkflowOptions.newBuilder()
+      .setTaskQueue("TheOneAndOnlyQueue")
+      .setWorkflowId("best-cookie")
+      .build();
+
+    WorkerFactory factory = WorkerFactory.newInstance(client);
+
+    Worker worker = factory.newWorker("TheOneAndOnlyQueue");
+
+    worker.registerWorkflowImplementationTypes(KitchenWorkflowImpl.class);
+
+    factory.start();
+  }
+}
diff --git a/solutions/day1/part-1/temporalpractice/bakery/kitchen/KitchenWorkflow.java b/solutions/day1/part-1/temporalpractice/bakery/kitchen/KitchenWorkflow.java
new file mode 100644
index 0000000000000000000000000000000000000000..bec377d5f138a90d7fd79f430a2f7880697ade48
--- /dev/null
+++ b/solutions/day1/part-1/temporalpractice/bakery/kitchen/KitchenWorkflow.java
@@ -0,0 +1,10 @@
+package io.takima.temporalpractice.bakery.kitchen;
+
+import io.temporal.workflow.WorkflowInterface;
+import io.temporal.workflow.WorkflowMethod;
+
+@WorkflowInterface
+public interface KitchenWorkflow {
+  @WorkflowMethod
+  void makeCookies();
+}
diff --git a/solutions/day1/part-1/temporalpractice/bakery/kitchen/KitchenWorkflowImpl.java b/solutions/day1/part-1/temporalpractice/bakery/kitchen/KitchenWorkflowImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..445fb390b3ea4da03e685e4bcd6770c9a5dc11d0
--- /dev/null
+++ b/solutions/day1/part-1/temporalpractice/bakery/kitchen/KitchenWorkflowImpl.java
@@ -0,0 +1,9 @@
+package io.takima.temporalpractice.bakery.kitchen;
+
+public class KitchenWorkflowImpl implements KitchenWorkflow {
+    @Override
+    public void makeCookies() {
+        System.out.println("I'm making cookies");
+        System.out.println("Cookies are done!");
+    }
+}
diff --git a/solutions/day1/part-1/temporalpractice/bakery/kitchen/bake/BakeService.java b/solutions/day1/part-1/temporalpractice/bakery/kitchen/bake/BakeService.java
new file mode 100644
index 0000000000000000000000000000000000000000..50b3b72cfd96efc5d70ec48ab9aa0549074ba88a
--- /dev/null
+++ b/solutions/day1/part-1/temporalpractice/bakery/kitchen/bake/BakeService.java
@@ -0,0 +1,5 @@
+package io.takima.temporalpractice.bakery.kitchen.bake;
+
+public interface BakeService {
+    void bake();
+}
diff --git a/solutions/day1/part-1/temporalpractice/bakery/kitchen/batter/BatterService.java b/solutions/day1/part-1/temporalpractice/bakery/kitchen/batter/BatterService.java
new file mode 100644
index 0000000000000000000000000000000000000000..ce25b125b72510bd8b4f15f3145314b5e4ee7b09
--- /dev/null
+++ b/solutions/day1/part-1/temporalpractice/bakery/kitchen/batter/BatterService.java
@@ -0,0 +1,5 @@
+package io.takima.temporalpractice.bakery.kitchen.batter;
+
+public interface BatterService {
+    void prepareBatter();
+}
diff --git a/solutions/day1/part-1/temporalpractice/signals/ConsumeSignal.java b/solutions/day1/part-1/temporalpractice/signals/ConsumeSignal.java
new file mode 100644
index 0000000000000000000000000000000000000000..ea74daf4991015ae277c287aa2402193e24eaee9
--- /dev/null
+++ b/solutions/day1/part-1/temporalpractice/signals/ConsumeSignal.java
@@ -0,0 +1,4 @@
+package io.takima.temporalpractice.signals;
+
+public record ConsumeSignal(int amount) {
+}
diff --git a/solutions/day1/part-1/temporalpractice/signals/InventoryActivity.java b/solutions/day1/part-1/temporalpractice/signals/InventoryActivity.java
new file mode 100644
index 0000000000000000000000000000000000000000..1645c7643195d369993ec1375c8de52c6fa856ad
--- /dev/null
+++ b/solutions/day1/part-1/temporalpractice/signals/InventoryActivity.java
@@ -0,0 +1,7 @@
+package io.takima.temporalpractice.signals;
+// TODO : remove comments when starting the mastering signals exercise on day 2
+//@ActivityInterface
+public interface InventoryActivity {
+    void reserve(ConsumeSignal input);
+
+}
diff --git a/solutions/day1/part-1/temporalpractice/signals/InventoryActivityImpl.java b/solutions/day1/part-1/temporalpractice/signals/InventoryActivityImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..db1105d9751e2a4be98e0240afbf2f94065bc38d
--- /dev/null
+++ b/solutions/day1/part-1/temporalpractice/signals/InventoryActivityImpl.java
@@ -0,0 +1,26 @@
+package io.takima.temporalpractice.signals;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class InventoryActivityImpl implements InventoryActivity {
+    private static final Logger logger = LoggerFactory.getLogger(InventoryActivityImpl.class);
+    int counter;
+
+    public InventoryActivityImpl(int inventorySize){
+        this.counter = inventorySize;
+    }
+
+    @Override
+    public void reserve(ConsumeSignal input) {
+        int currentValue = counter;
+
+        try {
+            //Simulate async work
+            Thread.sleep(10);
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+        counter = currentValue - 1;
+        logger.info("counter: "  + counter);
+    }
+}
diff --git a/solutions/day1/part-1/temporalpractice/signals/InventoryWorkflow.java b/solutions/day1/part-1/temporalpractice/signals/InventoryWorkflow.java
new file mode 100644
index 0000000000000000000000000000000000000000..f7cfebd14e18d650c4f9266a5a9ba9c91bcb39b5
--- /dev/null
+++ b/solutions/day1/part-1/temporalpractice/signals/InventoryWorkflow.java
@@ -0,0 +1,10 @@
+package io.takima.temporalpractice.signals;
+// TODO : remove comments when starting the mastering signals exercise on day 2
+//@WorkflowInterface
+public interface InventoryWorkflow {
+//    @WorkflowMethod
+    void run();
+//    @SignalMethod
+    void reserve(ConsumeSignal input);
+
+}
diff --git a/solutions/day1/part-1/temporalpractice/signals/MSMain.java b/solutions/day1/part-1/temporalpractice/signals/MSMain.java
new file mode 100644
index 0000000000000000000000000000000000000000..61cdb4ac225a3fd9336a9ac633871b0542daf3b4
--- /dev/null
+++ b/solutions/day1/part-1/temporalpractice/signals/MSMain.java
@@ -0,0 +1,37 @@
+package io.takima.temporalpractice.signals;
+// TODO : remove comments when starting the mastering signals exercise on day 2
+//import io.temporal.client.WorkflowClient;
+//import io.temporal.client.WorkflowOptions;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+//import static io.takima.temporalpractice.temporal.TemporalUtils.*;
+//import static io.takima.temporalpractice.temporal.TemporalQueues.*;
+public class MSMain {
+
+    // Our inventory will contain 100 elements and we will send 100 signals, lets see how it goes
+    static int inventoryToDecrement = 100;
+
+    public static void main(String[] args) {
+//        var worker = FACTORY.newWorker(MASTERING_SIGNALS);
+//        worker.registerActivitiesImplementations(new InventoryActivityImpl(inventoryToDecrement));
+//        worker.registerWorkflowImplementationTypes(InventoryWorkflowImpl.class);
+
+//        FACTORY.start();
+
+//        var workflow = CLIENT.newWorkflowStub(
+//                InventoryWorkflow.class,
+//                WorkflowOptions.newBuilder().setTaskQueue(MASTERING_SIGNALS).setWorkflowId("inventory").build()
+//        );
+//        WorkflowClient.start(workflow::run);
+        try (ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor()) {
+            // Submit 100 tasks
+            for (int i = 1; i < inventoryToDecrement; i++) {
+                executor.submit(() -> {
+//                    workflow.reserve(new ConsumeSignal(1));
+                });
+            }
+        }
+    }
+}
diff --git a/src/main/java/io/takima/temporalpractice/bakery/MakeCookiesApp.java b/src/main/java/io/takima/temporalpractice/bakery/MakeCookiesApp.java
index e7c4d63d7ac9d0b0d1997e1ebd219b661d24ca90..059f9d66ccb0bf8d0b1c6f99b06eb422e3ef891a 100644
--- a/src/main/java/io/takima/temporalpractice/bakery/MakeCookiesApp.java
+++ b/src/main/java/io/takima/temporalpractice/bakery/MakeCookiesApp.java
@@ -2,5 +2,6 @@ package io.takima.temporalpractice.bakery;
 
 public class MakeCookiesApp {
     public static void main(String[] args) {
+        // This app should execute the making of all cookies ordered
     }
 }
diff --git a/src/main/java/io/takima/temporalpractice/bakery/OrderCookiesApp.java b/src/main/java/io/takima/temporalpractice/bakery/OrderCookiesApp.java
index 9fb1fc1c17456c25d89d80f5677d869acde29bec..c7bf115786121eae8b1a4e50c74f20ab350f57c9 100644
--- a/src/main/java/io/takima/temporalpractice/bakery/OrderCookiesApp.java
+++ b/src/main/java/io/takima/temporalpractice/bakery/OrderCookiesApp.java
@@ -2,5 +2,7 @@ package io.takima.temporalpractice.bakery;
 
 public class OrderCookiesApp {
     public static void main(String[] args) {
+        // This app simulates an order of cookies
+        // It should call the workflow which makes cookies
     }
 }