diff --git a/README.md b/README.md
old mode 100644
new mode 100755
diff --git a/architecture.svg b/architecture.svg
old mode 100644
new mode 100755
diff --git a/pom.xml b/pom.xml
old mode 100644
new mode 100755
diff --git a/src/main/java/fr/ulille/iut/pizzaland/ApiV1.java b/src/main/java/fr/ulille/iut/pizzaland/ApiV1.java
old mode 100644
new mode 100755
index e010f2525617e9041135020f0051751eb9aad3b0..55912e4660e1b0a0d059ef53ab0a0090ff8e2462
--- a/src/main/java/fr/ulille/iut/pizzaland/ApiV1.java
+++ b/src/main/java/fr/ulille/iut/pizzaland/ApiV1.java
@@ -7,6 +7,7 @@ import java.util.logging.Logger;
 import javax.ws.rs.ApplicationPath;
 import fr.ulille.iut.pizzaland.beans.Ingredient;
 import fr.ulille.iut.pizzaland.dao.IngredientDao;
+import fr.ulille.iut.pizzaland.dao.PizzaDao;
 
 import java.io.FileReader;
 import java.io.IOException;
@@ -38,6 +39,12 @@ public class ApiV1 extends ResourceConfig {
 				for ( Ingredient ingredient: ingredients) {
 					ingredientDao.insert(ingredient.getName());              
 				}
+				
+				PizzaDao pizzaDao = BDDFactory.buildDao(PizzaDao.class);
+				pizzaDao.dropTableAssociation();
+				pizzaDao.dropTablePizzas();
+				pizzaDao.createTableAndIngredientAssociation();
+				
 			} catch ( Exception ex ) {
 				throw new IllegalStateException(ex);
 			}
diff --git a/src/main/java/fr/ulille/iut/pizzaland/BDDFactory.java b/src/main/java/fr/ulille/iut/pizzaland/BDDFactory.java
old mode 100644
new mode 100755
diff --git a/src/main/java/fr/ulille/iut/pizzaland/beans/.gitkeep b/src/main/java/fr/ulille/iut/pizzaland/beans/.gitkeep
old mode 100644
new mode 100755
diff --git a/src/main/java/fr/ulille/iut/pizzaland/beans/Ingredient.java b/src/main/java/fr/ulille/iut/pizzaland/beans/Ingredient.java
old mode 100644
new mode 100755
diff --git a/src/main/java/fr/ulille/iut/pizzaland/beans/Pizza.java b/src/main/java/fr/ulille/iut/pizzaland/beans/Pizza.java
old mode 100644
new mode 100755
index cc7c27bc78b4dbf8e227d599dc48137df17189da..d9d4277df35ca0b9741bc0bad6a3f665da65ebd2
--- a/src/main/java/fr/ulille/iut/pizzaland/beans/Pizza.java
+++ b/src/main/java/fr/ulille/iut/pizzaland/beans/Pizza.java
@@ -2,19 +2,36 @@ package fr.ulille.iut.pizzaland.beans;
 
 import java.util.List;
 
+import fr.ulille.iut.pizzaland.dto.PizzaCreateDto;
 import fr.ulille.iut.pizzaland.dto.PizzaDto;
 
 public class Pizza {
 	private long id;
+	private String name;
 	private List<Ingredient> ingredients;
 	
 	public Pizza() {}
 	
-	public Pizza(long id, List<Ingredient> ingredients) {
+	public Pizza(long id, List<Ingredient> ingredients, String name) {
 		this.id = id;
+		this.name = name;
 		this.ingredients = ingredients;
 	}
 	
+	public static PizzaCreateDto toCreateDto(Pizza pizza) {
+		PizzaCreateDto dto = new PizzaCreateDto();
+		dto.setIngredients(pizza.getIngredients());
+
+		return dto;
+	}
+
+	public static Pizza fromPizzaCreateDto(PizzaCreateDto dto) {
+		Pizza pizza = new Pizza();
+		pizza.setIngredients(dto.getIngredients());
+
+		return pizza;
+	}
+	
 	public long getId() {
 	    return id;
 	}
@@ -31,10 +48,19 @@ public class Pizza {
 		this.ingredients=ingredients;
 	}
 	
+	public String getName() {
+		return name;
+	}
+
+	public void setName(String name) {
+		this.name = name;
+	}
+	
 	public static PizzaDto toDto(Pizza i) {
 		PizzaDto dto = new PizzaDto();
 		dto.setId(i.getId());
 		dto.setIngredients(i.getIngredients());
+		dto.setName(i.getName());
 
 		return dto;
 	}
@@ -43,10 +69,11 @@ public class Pizza {
 		Pizza pizza = new Pizza();
 		pizza.setId(dto.getId());
 		pizza.setIngredients(dto.getIngredients());
+		pizza.setName(dto.getName());
 
 		return pizza;
 	}
-	
+
 	@Override
 	public boolean equals(Object obj) {
 		if (this == obj)
@@ -63,11 +90,16 @@ public class Pizza {
 				return false;
 		} else if (!ingredients.equals(other.ingredients))
 			return false;
+		if (name == null) {
+			if (other.name != null)
+				return false;
+		} else if (!name.equals(other.name))
+			return false;
 		return true;
 	}
 
 	@Override
 	public String toString() {
-		return "Pizza [id=" + id + ", ingredients=" + ingredients.toString() + "]";
+		return "Pizza [id=" + id + ", name="+ name +", ingredients=" + ingredients.toString() + "]";
 	}
 }
diff --git a/src/main/java/fr/ulille/iut/pizzaland/dao/.gitkeep b/src/main/java/fr/ulille/iut/pizzaland/dao/.gitkeep
old mode 100644
new mode 100755
diff --git a/src/main/java/fr/ulille/iut/pizzaland/dao/IngredientDao.java b/src/main/java/fr/ulille/iut/pizzaland/dao/IngredientDao.java
old mode 100644
new mode 100755
index f38a644ffb44876cfadea6d0b0c1b79779dd0072..095e29504a52ee2c35e96ed67528349edece1b09
--- a/src/main/java/fr/ulille/iut/pizzaland/dao/IngredientDao.java
+++ b/src/main/java/fr/ulille/iut/pizzaland/dao/IngredientDao.java
@@ -11,29 +11,29 @@ import fr.ulille.iut.pizzaland.beans.Ingredient;
 
 public interface IngredientDao {
 
-  @SqlUpdate("CREATE TABLE IF NOT EXISTS ingredients (id INTEGER PRIMARY KEY, name VARCHAR UNIQUE NOT NULL)")
-  void createTable();
-
-  @SqlUpdate("DROP TABLE IF EXISTS ingredients")
-  void dropTable();
-
-  @SqlUpdate("INSERT INTO ingredients (name) VALUES (:name)")
-  @GetGeneratedKeys
-  long insert(String name);
-
-  @SqlQuery("SELECT * FROM ingredients")
-  @RegisterBeanMapper(Ingredient.class)
-  List<Ingredient> getAll();
-
-  @SqlQuery("SELECT * FROM ingredients WHERE id = :id")
-  @RegisterBeanMapper(Ingredient.class)
-  Ingredient findById(long id);
-  
-  @SqlQuery("SELECT * FROM ingredients WHERE name = :name")
-  @RegisterBeanMapper(Ingredient.class)
-  Ingredient findByName(String name);
-
-  @SqlUpdate("DELETE FROM ingredients WHERE id = :id")
-  void remove(long id);
+	@SqlUpdate("CREATE TABLE IF NOT EXISTS ingredients (id INTEGER PRIMARY KEY, name VARCHAR UNIQUE NOT NULL)")
+	void createTable();
+
+	@SqlUpdate("DROP TABLE IF EXISTS ingredients")
+	void dropTable();
+
+	@SqlUpdate("INSERT INTO ingredients (name) VALUES (:name)")
+	@GetGeneratedKeys
+	long insert(String name);
+
+	@SqlQuery("SELECT * FROM ingredients")
+	@RegisterBeanMapper(Ingredient.class)
+	List<Ingredient> getAll();
+
+	@SqlQuery("SELECT * FROM ingredients WHERE id = :id")
+	@RegisterBeanMapper(Ingredient.class)
+	Ingredient findById(long id);
+
+	@SqlQuery("SELECT * FROM ingredients WHERE name = :name")
+	@RegisterBeanMapper(Ingredient.class)
+	Ingredient findByName(String name);
+
+	@SqlUpdate("DELETE FROM ingredients WHERE id = :id")
+	void remove(long id);
 
 }
diff --git a/src/main/java/fr/ulille/iut/pizzaland/dao/PizzaDao.java b/src/main/java/fr/ulille/iut/pizzaland/dao/PizzaDao.java
old mode 100644
new mode 100755
index ea3160b6aac4d28d769041cfb75b5016e6fc235c..a6926a9256d11d12c4e7639d2510f9a3a968863a
--- a/src/main/java/fr/ulille/iut/pizzaland/dao/PizzaDao.java
+++ b/src/main/java/fr/ulille/iut/pizzaland/dao/PizzaDao.java
@@ -1,8 +1,16 @@
 package fr.ulille.iut.pizzaland.dao;
 
+import java.util.List;
+
+import org.jdbi.v3.sqlobject.config.RegisterBeanMapper;
+import org.jdbi.v3.sqlobject.statement.GetGeneratedKeys;
+import org.jdbi.v3.sqlobject.statement.SqlQuery;
 import org.jdbi.v3.sqlobject.statement.SqlUpdate;
 import org.jdbi.v3.sqlobject.transaction.Transaction;
 
+import fr.ulille.iut.pizzaland.beans.Ingredient;
+import fr.ulille.iut.pizzaland.beans.Pizza;
+
 public interface PizzaDao {
 
 	@SqlUpdate("CREATE TABLE IF NOT EXISTS Pizzas (id INTEGER PRIMARY KEY, name VARCHAR UNIQUE NOT NULL)")
@@ -10,7 +18,32 @@ public interface PizzaDao {
 
 	@SqlUpdate("CREATE TABLE IF NOT EXISTS PizzaIngredientsAssociation (idPizza INTEGER, idIngredient INTEGER, CONSTRAINT PK_Pizza_Ingredient PRIMARY KEY (idPizza, idIngredient)")
 	void createAssociationTable();
+	
+	@SqlUpdate("DROP TABLE IF EXISTS Pizzas")
+	void dropTablePizzas();
+	
+	@SqlUpdate("DROP TABLE IF EXISTS PizzaIngredientsAssociation")
+	void dropTableAssociation();
+	
+	@SqlQuery("SELECT * FROM Pizzas")
+	@RegisterBeanMapper(Pizza.class)
+	List<Pizza> getAll();
 
+	@SqlQuery("SELECT * FROM Pizzas WHERE id = :id")
+	@RegisterBeanMapper(Pizza.class)
+	Pizza findById(long id);
+	
+	@SqlQuery("SELECT * FROM Pizzas WHERE name = :name")
+	@RegisterBeanMapper(Pizza.class)
+	Pizza findByName(String name);
+	
+	@SqlUpdate("INSERT INTO Pizzas (name) VALUES (:name)")
+	@GetGeneratedKeys
+	long insert(String name);
+	
+	@SqlUpdate("DELETE FROM Pizzas WHERE id = :id")
+	void remove(long id);
+	
 	@Transaction
 	default void createTableAndIngredientAssociation() {
 		createAssociationTable();
diff --git a/src/main/java/fr/ulille/iut/pizzaland/dto/IngredientCreateDto.java b/src/main/java/fr/ulille/iut/pizzaland/dto/IngredientCreateDto.java
old mode 100644
new mode 100755
diff --git a/src/main/java/fr/ulille/iut/pizzaland/dto/IngredientDto.java b/src/main/java/fr/ulille/iut/pizzaland/dto/IngredientDto.java
old mode 100644
new mode 100755
diff --git a/src/main/java/fr/ulille/iut/pizzaland/dto/PizzaCreateDto.java b/src/main/java/fr/ulille/iut/pizzaland/dto/PizzaCreateDto.java
new file mode 100755
index 0000000000000000000000000000000000000000..5d45c6e5c479fcc5bbe5893fdc77e8072cc7e3e9
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/pizzaland/dto/PizzaCreateDto.java
@@ -0,0 +1,28 @@
+package fr.ulille.iut.pizzaland.dto;
+
+import java.util.List;
+
+import fr.ulille.iut.pizzaland.beans.Ingredient;
+
+public class PizzaCreateDto {
+	private String name;
+	private List<Ingredient> ingredients;
+
+	public PizzaCreateDto() {}
+
+	public String getName() {
+		return name;
+	}
+	
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public void setIngredients(List<Ingredient> ingredients) {
+		this.ingredients = ingredients;
+	}
+
+	public List<Ingredient> getIngredients() {
+		return ingredients;
+	}
+}
diff --git a/src/main/java/fr/ulille/iut/pizzaland/dto/PizzaDto.java b/src/main/java/fr/ulille/iut/pizzaland/dto/PizzaDto.java
old mode 100644
new mode 100755
index 778ad05d99eff519641407446e5a18e6d4e5870f..3ae6e1457fd62fbd046a9ac2adc7c9478fc8b1cb
--- a/src/main/java/fr/ulille/iut/pizzaland/dto/PizzaDto.java
+++ b/src/main/java/fr/ulille/iut/pizzaland/dto/PizzaDto.java
@@ -6,6 +6,7 @@ import fr.ulille.iut.pizzaland.beans.Ingredient;
 
 public class PizzaDto {
 	private long id;
+	private String name;
 	private List<Ingredient> ingredients;
 
 	public PizzaDto() {}
@@ -18,6 +19,14 @@ public class PizzaDto {
 		this.id = id;
 	}
 
+	public void setName(String name) {
+		this.name = name;
+	}
+
+	public String getName() {
+		return name;
+	}
+
 	public List<Ingredient> getIngredients() {
 		return ingredients;
 	}
diff --git a/src/main/java/fr/ulille/iut/pizzaland/resources/IngredientResource.java b/src/main/java/fr/ulille/iut/pizzaland/resources/IngredientResource.java
old mode 100644
new mode 100755
diff --git a/src/main/java/fr/ulille/iut/pizzaland/resources/PizzaResource.java b/src/main/java/fr/ulille/iut/pizzaland/resources/PizzaResource.java
new file mode 100755
index 0000000000000000000000000000000000000000..336ef5a0036a8fc2b93015237031ff8c8b1efc7f
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/pizzaland/resources/PizzaResource.java
@@ -0,0 +1,105 @@
+package fr.ulille.iut.pizzaland.resources;
+
+import javax.ws.rs.PathParam;
+import javax.ws.rs.WebApplicationException;
+
+import java.net.URI;
+import java.util.List;
+import java.util.logging.Logger;
+import java.util.stream.Collectors;
+
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.UriInfo;
+
+import fr.ulille.iut.pizzaland.BDDFactory;
+import fr.ulille.iut.pizzaland.beans.Pizza;
+import fr.ulille.iut.pizzaland.dao.PizzaDao;
+import fr.ulille.iut.pizzaland.dto.PizzaCreateDto;
+import fr.ulille.iut.pizzaland.dto.PizzaDto;
+
+@Path("/pizza")
+public class PizzaResource {
+	private PizzaDao pizza;
+	private static final Logger LOGGER = Logger.getLogger(PizzaResource.class.getName());
+
+	@Context
+	public UriInfo uriInfo;
+
+	public PizzaResource() {
+		pizza = BDDFactory.buildDao(PizzaDao.class);
+		pizza.createPizzaTable();
+	}
+
+	@GET
+	public List<PizzaDto> getAll() {
+		LOGGER.info("IngredientResource:getAll");
+
+		List<PizzaDto> l = pizza.getAll().stream().map(Pizza::toDto).collect(Collectors.toList());
+		return l;
+	}
+
+	@GET
+	@Path("{id}")
+	public PizzaDto getOnePizza(@PathParam("id") long id) {
+		LOGGER.info("getOnePizza(" + id + ")");
+		try {
+			Pizza piz = pizza.findById(id);
+			return Pizza.toDto(piz);
+		}
+		catch ( Exception e ) {
+			// Cette exception générera une réponse avec une erreur 404
+			throw new WebApplicationException(Response.Status.NOT_FOUND);
+		}
+	}
+
+	@GET
+	@Path("{id}/name")
+	public String getPizzaName(@PathParam("id") long id) {
+		Pizza piz = pizza.findById(id);
+		if ( piz == null ) {
+			throw new WebApplicationException(Response.Status.NOT_FOUND);
+		}
+
+		return piz.getName();
+	}
+
+	@POST
+	public Response createIngredient(PizzaCreateDto pizzaCreateDto) {
+		Pizza existing = pizza.findByName(pizzaCreateDto.getName());
+		if ( existing != null ) {
+			throw new WebApplicationException(Response.Status.CONFLICT);
+		}
+
+		try {
+			Pizza piz = Pizza.fromPizzaCreateDto(pizzaCreateDto);
+			long id = pizza.insert(piz.getName());
+			piz.setId(id);
+			PizzaDto pizzaDto = Pizza.toDto(piz);
+
+			URI uri = uriInfo.getAbsolutePathBuilder().path("" + id).build();
+
+			return Response.created(uri).entity(pizzaDto).build();
+		}
+		catch ( Exception e ) {
+			e.printStackTrace();
+			throw new WebApplicationException(Response.Status.NOT_ACCEPTABLE);
+		}
+	}
+
+	@DELETE
+	@Path("{id}")
+	public Response deletePizza(@PathParam("id") long id) {
+		if ( pizza.findById(id) == null ) {
+			throw new WebApplicationException(Response.Status.NOT_FOUND);
+		}
+
+		pizza.remove(id);
+
+		return Response.status(Response.Status.ACCEPTED).build();
+	}
+}
diff --git a/src/main/resources/ingredients.json b/src/main/resources/ingredients.json
old mode 100644
new mode 100755
diff --git a/src/main/resources/logback.xml b/src/main/resources/logback.xml
old mode 100644
new mode 100755
diff --git a/src/main/webapp/WEB-INF/.gitkeep b/src/main/webapp/WEB-INF/.gitkeep
old mode 100644
new mode 100755
diff --git a/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.java b/src/test/java/fr/ulille/iut/pizzaland/IngredientResourceTest.java
old mode 100644
new mode 100755
diff --git a/src/test/resources/logback-test.xml b/src/test/resources/logback-test.xml
old mode 100644
new mode 100755