diff --git a/src/main/java/no/ntnu/idatt1002/demo/data/Budget/FoodBudget.java b/src/main/java/no/ntnu/idatt1002/demo/data/Budget/FoodBudget.java
new file mode 100644
index 0000000000000000000000000000000000000000..58b34823fcad8272db6d07c6f02488d911465b13
--- /dev/null
+++ b/src/main/java/no/ntnu/idatt1002/demo/data/Budget/FoodBudget.java
@@ -0,0 +1,128 @@
+package no.ntnu.idatt1002.demo.data.Budget;
+
+import java.sql.Date;
+import java.time.Duration;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.temporal.ChronoUnit;
+import java.time.temporal.Temporal;
+import java.util.Calendar;
+
+/**
+ * Class that represents FoodBudget and implements the Budget interface.
+ *
+ * @author Adele
+ */
+public class FoodBudget implements Budget {
+
+    private int budgetAmount;
+
+    private int budgetPeriod;
+
+    /**
+     * The constructor of a new FoodBudget.
+     *
+     * @param budgetPeriod The period the budget are going to last for
+     * @param budgetAmount The amount that the budget consist of
+     *
+     */
+    public FoodBudget(int budgetPeriod, int budgetAmount){
+        this.budgetPeriod = budgetPeriod;
+        this.budgetAmount = budgetAmount;
+    }
+
+    /**
+     * This method returns the amount in the foodBudget as an int
+     *
+     * @return the amount left in the foodBudget
+     *
+     */
+    public int getBudgetAmount() {
+        return budgetAmount;
+    }
+
+    /**
+     *
+     * @return
+     *
+     */
+    public int getBudgetPeriod() {
+        return budgetPeriod;
+    }
+
+    /**
+     * This method returns the amount of days left in the period as a string
+     *
+     * @return
+     *
+     */
+    public long getDaysLeftOfBudgetPeriod() {
+        LocalDate today = LocalDate.now();
+        LocalDate end = today.plus(Duration.ofDays(getBudgetPeriod()));
+
+        Date todaysDate = (Date) Date.from(today.atStartOfDay(ZoneId.systemDefault()).toInstant());
+        Date endDate = (Date) Date.from(end.atStartOfDay(ZoneId.systemDefault()).toInstant());
+
+        Calendar cStart  = Calendar.getInstance(); cStart.setTime(todaysDate);
+        Calendar cEnd = Calendar.getInstance(); cEnd.setTime(endDate);
+
+        long timeLeft = ChronoUnit.DAYS.between((Temporal) cStart, (Temporal) cEnd);
+
+        return timeLeft;
+    }
+
+    /**
+     *
+     * @param amountBudget
+     *
+     */
+    @Override
+    public void setAmountBudget(int amountBudget) {
+        if (amountBudget < 0) {
+            throw new IllegalArgumentException("Illegal amount in budget");
+        }
+
+        budgetAmount = amountBudget;
+    }
+
+    /**
+     *
+     * @param periodOfTheBudget
+     *
+     */
+    @Override
+    public void setBudgetPeriod(int periodOfTheBudget) {
+        if (periodOfTheBudget < 0) {
+            throw new IllegalArgumentException("Illegal period for the budget");
+        }
+
+        budgetPeriod = periodOfTheBudget;
+    }
+
+    /**
+     *
+     * @param amountToAddToBudget
+     *
+     */
+    @Override
+    public void addToBudget(int amountToAddToBudget) {
+        if (amountToAddToBudget < 0){
+            throw new IllegalArgumentException("Amount to be added to the budget cant be below zero");
+        }
+        budgetAmount += amountToAddToBudget;
+    }
+
+    /**
+     *
+     * @param amountToSubtractFromBudget
+     *
+     */
+    @Override
+    public void subtractFromBudget(int amountToSubtractFromBudget) {
+        if (amountToSubtractFromBudget < 0){
+            throw new IllegalArgumentException("Amount to be subtracted from the budget cant be below zero");
+        }
+        budgetAmount -= amountToSubtractFromBudget;
+    }
+
+}
diff --git a/src/test/java/no/ntnu/idatt1002/demo/data/Budget/FoodBudgetTest.java b/src/test/java/no/ntnu/idatt1002/demo/data/Budget/FoodBudgetTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..22503bb9acaa6573822e8071dd3b8992e0cae05b
--- /dev/null
+++ b/src/test/java/no/ntnu/idatt1002/demo/data/Budget/FoodBudgetTest.java
@@ -0,0 +1,85 @@
+package no.ntnu.idatt1002.demo.data.Budget;
+
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class FoodBudgetTest {
+
+    @Test
+    void set_amount_budget() {
+        FoodBudget foodBudget = new FoodBudget(30, 0);
+        int amount = 2000;
+        foodBudget.setAmountBudget(amount);
+
+        assertEquals(amount, foodBudget.getBudgetAmount());
+    }
+
+    @Test
+    void set_amount_budget_negativ_amount() {
+        FoodBudget foodBudget = new FoodBudget(30, 0);
+        int amount = -2000;
+
+        assertThrows(IllegalArgumentException.class, () -> foodBudget.setAmountBudget(amount));
+    }
+
+    @Test
+    void set_budget_period() {
+        FoodBudget foodBudget = new FoodBudget(0, 30);
+        int period = 30;
+        foodBudget.setBudgetPeriod(period);
+
+        assertEquals(period,foodBudget.getBudgetPeriod());
+    }
+
+    @Test
+    void set_budget_period_negative_period() {
+        FoodBudget foodBudget = new FoodBudget(0, 30);
+        int period = -5;
+
+        assertThrows(IllegalArgumentException.class, () ->  foodBudget.setBudgetPeriod(period));
+    }
+
+    @Test
+    void add_to_budget_positive_number() {
+        FoodBudget foodBudget = new FoodBudget(0, 30);
+        int beforeAdding = foodBudget.getBudgetAmount();
+        int amountToBeAdded = 50;
+        foodBudget.addToBudget(amountToBeAdded);
+
+        assertEquals(beforeAdding + amountToBeAdded, foodBudget.getBudgetAmount());
+
+    }
+
+    @Test
+    void add_to_budget_negative_number() {
+        FoodBudget foodBudget = new FoodBudget(0, 30);
+        int amountToBeAdded = -7;
+
+        assertThrows(IllegalArgumentException.class, () -> foodBudget.addToBudget(amountToBeAdded));
+    }
+
+    @Test
+    void subtract_from_budget_positive_number() {
+        FoodBudget foodBudget = new FoodBudget(0, 30);
+        int beforeSubtracting = foodBudget.getBudgetAmount();
+        int amountToBeSubtracted = 50;
+        foodBudget.subtractFromBudget(amountToBeSubtracted);
+
+        assertEquals(beforeSubtracting - amountToBeSubtracted, foodBudget.getBudgetAmount());
+    }
+
+    @Test
+    void subtract_from_budget_negative_number() {
+        FoodBudget foodBudget = new FoodBudget(0, 30);
+        int amountToBeSubtracted = -7;
+
+        assertThrows(IllegalArgumentException.class, () -> foodBudget.subtractFromBudget(amountToBeSubtracted));
+    }
+
+    @Test
+    void getDaysLeftOfBudgetPeriod(){
+
+    }
+
+}
\ No newline at end of file