diff --git a/server/src/main/java/server/api/RecipeController.java b/server/src/main/java/server/api/RecipeController.java
new file mode 100644
index 0000000..4a81057
--- /dev/null
+++ b/server/src/main/java/server/api/RecipeController.java
@@ -0,0 +1,121 @@
+package server.api;
+
+import commons.Recipe;
+
+import org.springframework.data.domain.PageRequest;
+import org.springframework.http.ResponseEntity;
+
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import server.database.RecipeRepository;
+
+import java.util.List;
+import java.util.Optional;
+
+@RestController
+@RequestMapping("/recipe")
+public class RecipeController {
+ private final RecipeRepository recipeRepository; // JPA repository used in this controller
+
+ public RecipeController(RecipeRepository recipeRepository) {
+ this.recipeRepository = recipeRepository;
+ }
+
+ /**
+ * Mapping for GET /recipe/{id}
+ *
+ * Gets a specific recipe by its unique id. + *
+ * @param id id of the recipe + * @return The recipe if it exists in the repository; otherwise returns 404 Not Found status + */ + @GetMapping("/recipe/{id}") + public ResponseEntityGET /recipes(?limit=)
+ *
+ * If the limit parameter is unspecified, return all recipes in the repository.
+ * @param limit Integer limit of items you want to get
+ * @return The list of recipes
+ */
+ @GetMapping("/recipes")
+ public ResponseEntity
+ * Inserts a new recipe into the repository
+ *
+ * Deletes a recipe identified by its > getRecipes(@RequestParam Optional
POST /recipe/{id}
+ * @param id The recipe id to replace
+ * @param recipe The new recipe to be replaced from the original
+ * @return The changed recipe; returns 400 Bad Request if the recipe does not exist
+ */
+ @PostMapping("/recipe/{id}")
+ public ResponseEntityPUT /recipe/new
+ * DELETE /recipe/{id}
+ * id.
+ *