diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/AccountActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/AccountActivity.java
index 8f34f87fbb9b33cea265f59025a7f2ac7b9805aa..dfabbafc4d4778ae07bb8b279f5d556481e93586 100644
--- a/app/src/main/java/be/lepl1509group13/workoutwarrior/AccountActivity.java
+++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/AccountActivity.java
@@ -3,13 +3,13 @@ package be.lepl1509group13.workoutwarrior;
 import androidx.appcompat.app.AppCompatActivity;
 
 import android.annotation.SuppressLint;
+import android.content.Intent;
 import android.os.Bundle;
 import android.text.Editable;
 import android.util.Log;
 import android.view.View;
 import android.widget.Button;
 import android.widget.ImageButton;
-import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 import android.widget.Toast;
@@ -20,10 +20,21 @@ import com.google.android.material.textfield.TextInputEditText;
 import com.google.firebase.auth.AuthResult;
 import com.google.firebase.auth.FirebaseAuth;
 import com.google.firebase.auth.FirebaseUser;
+import com.google.firebase.database.DataSnapshot;
+import com.google.firebase.database.DatabaseError;
+import com.google.firebase.database.DatabaseReference;
+import com.google.firebase.database.FirebaseDatabase;
+import com.google.firebase.database.ValueEventListener;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
 
 public class AccountActivity extends AppCompatActivity {
 
     private FirebaseAuth mAuth;
+    private final FirebaseDatabase firebaseDb = FirebaseDatabase.getInstance();
+    private DatabaseReference db;
     private Button logout;
     private TextView title;
 
@@ -31,31 +42,98 @@ public class AccountActivity extends AppCompatActivity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_account);
         getSupportActionBar().hide();
 
         mAuth = FirebaseAuth.getInstance();
+        FirebaseUser currentUser = mAuth.getCurrentUser();
 
-        title = findViewById(R.id.account_title);
+        if(currentUser != null){
+            //get which button is clicked in the navigation
+            Intent intent = this.getIntent();
+            String item = intent.getStringExtra("item");
+            if(Objects.equals(item, "Mon compte")){
+                //todo
+            } else if (Objects.equals(item, "Mes amis")) {
+                //todo
+            }
+            setContentView(R.layout.activity_account);
+
+            db = firebaseDb.getReference("Account_pseudo");
+            getPseudo(currentUser);
+        }else{
+            setContentView(R.layout.activity_account_login);
 
-        TextInputEditText email_input = findViewById(R.id.email);
-        Editable email_string = email_input.getText();
-        TextInputEditText password_input = findViewById(R.id.password);
-        Editable password_string = password_input.getText();
+            TextInputEditText email_input = findViewById(R.id.email);
+            Editable email_string = email_input.getText();
+            TextInputEditText password_input = findViewById(R.id.password);
+            Editable password_string = password_input.getText();
 
-        ImageButton return_btn = findViewById(R.id.return_from_account);
-        return_btn.setOnClickListener(view -> finish());
+            Button login = findViewById(R.id.login);
+            login.setOnClickListener(view -> login(email_string, password_string));
 
-        Button login = findViewById(R.id.login);
-        login.setOnClickListener(view -> login(email_string, password_string));
+            Button register = findViewById(R.id.register);
+            register.setOnClickListener(view -> register(email_string, password_string));
+        }
 
-        Button register = findViewById(R.id.register);
-        register.setOnClickListener(view -> register(email_string, password_string));
+        ImageButton return_btn = findViewById(R.id.return_from_account);
+        return_btn.setOnClickListener(view -> finish());
 
         logout = findViewById(R.id.logout);
         logout.setOnClickListener(view -> logout());
     }
 
+    private void getPseudo(FirebaseUser currentUser) {
+        String id_user = currentUser.getUid();
+
+        db.addValueEventListener(new ValueEventListener() {
+            @Override
+            public void onDataChange(DataSnapshot snapshot) {
+                title = findViewById(R.id.account_title);
+
+                RelativeLayout field_pseudo_layout = findViewById(R.id.field_pseudo_layout);
+                TextInputEditText pseudo_input = findViewById(R.id.pseudo);
+                Button register = findViewById(R.id.register_pseudo);
+
+                try {
+                    DataSnapshot data = snapshot.child(id_user);
+
+                    String pseudo = data.getValue().toString();
+
+                    title.setText("Vous êtes connecté !\n" + currentUser.getEmail() + " & " + id_user + " & " + pseudo);
+                    field_pseudo_layout.setVisibility(View.INVISIBLE);
+                    register.setVisibility(View.INVISIBLE);
+                } catch (Exception e){
+                    title.setText("Veuillez définir votre pseudo :");
+
+                    Editable pseudo_string = pseudo_input.getText();
+
+                    register.setOnClickListener(view -> savePseudo(id_user, pseudo_string));
+                }
+            }
+
+            @Override
+            public void onCancelled(DatabaseError error) {
+                Toast.makeText(AccountActivity.this, "Fail to get data.", Toast.LENGTH_SHORT).show();
+            }
+        });
+    }
+
+    private void savePseudo(String id_user, Editable pseudo_string) {
+        // Write pseudo in the database
+        Map<String, Object> updates = new HashMap<>();
+        updates.put(id_user, pseudo_string.toString());
+
+        db = firebaseDb.getReference("Account_pseudo");
+
+        try {
+            db.updateChildren(updates);
+        } catch (Exception e){
+            Log.d("error", "savePseudo: " + e);
+        }
+        isLoged();
+    }
+
+    /**
     @Override
     public void onStart() {
         super.onStart();
@@ -69,19 +147,18 @@ public class AccountActivity extends AppCompatActivity {
             logout.setVisibility(View.INVISIBLE);
         }
     }
+    */
 
     private void isLoged(){
-        logout.setVisibility(View.VISIBLE);
-        RelativeLayout field = findViewById(R.id.field_layout);
-        field.setVisibility(View.INVISIBLE);
-        LinearLayout buttons = findViewById(R.id.button_layout);
-        buttons.setVisibility(View.INVISIBLE);
-        FirebaseUser user = mAuth.getCurrentUser();
-        title.setText("Vous êtes connecté !\n" + user.getEmail());
-
+        //Refresh the layout when user is logged
+        finish();
+        overridePendingTransition(0, 0);
+        startActivity(getIntent());
+        overridePendingTransition(0, 0);
     }
 
     private void login(Editable email, Editable password) {
+        Log.d("listener", "login: click btn");
         String email_string = (String)email.toString();
         String password_string = (String)password.toString();
         if(email_string.isEmpty() || password_string.isEmpty()){
diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/ListExercicesAdapter.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/ListExercicesAdapter.java
index 649792cf9db4cd283f4230e1362536dbd8b55e0f..78804c5b4d3d23d1d7e5cad6689e1d85dba47b54 100644
--- a/app/src/main/java/be/lepl1509group13/workoutwarrior/ListExercicesAdapter.java
+++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/ListExercicesAdapter.java
@@ -1,32 +1,18 @@
 package be.lepl1509group13.workoutwarrior;
 
-import static android.content.ContentValues.TAG;
-
 import android.content.Context;
-import android.content.Intent;
 import android.graphics.drawable.Drawable;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
-import android.widget.Button;
-import android.widget.EditText;
 import android.widget.ImageView;
-import android.widget.ListView;
 import android.widget.TextView;
 import android.widget.Toast;
 
-import androidx.appcompat.app.AlertDialog;
-
-import com.google.firebase.database.DataSnapshot;
-import com.google.firebase.database.DatabaseError;
-import com.google.firebase.database.Query;
-import com.google.firebase.database.ValueEventListener;
-
 import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Objects;
+import java.util.Iterator;
+import java.util.Map;
 
 public class ListExercicesAdapter extends ArrayAdapter<String> {
 
@@ -34,7 +20,7 @@ public class ListExercicesAdapter extends ArrayAdapter<String> {
     private ArrayList<String> values;
 
     public ListExercicesAdapter(Context context, ArrayList<String> values) {
-        super(context, R.layout.exercice, values);
+        super(context, R.layout.exercises_list_row, values);
         this.context = context;
         this.values = values;
     }
@@ -42,30 +28,50 @@ public class ListExercicesAdapter extends ArrayAdapter<String> {
     @Override
     public View getView(int position, View convertView, ViewGroup parent) {
         LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-        View rowView = inflater.inflate(R.layout.exercice, parent, false);
+        View rowView = inflater.inflate(R.layout.exercises_list_row, parent, false);
 
         ImageView delete_button = rowView.findViewById(R.id.delete_button);
         ImageView edit_button = rowView.findViewById(R.id.edit_button);
-        TextView exercice_name = rowView.findViewById(R.id.exercice_name);
+        TextView exercise_name = rowView.findViewById(R.id.exercise_name);
+        TextView training_daysView = rowView.findViewById(R.id.training_days);
 
-        // Récupérez l'image et le texte pour chaque élément de la liste en fonction de la position
+        // Récupérer l'image et le texte pour chaque élément de la liste en fonction de la position
         if (this.values.size() > 0) {
+
+            ProgramCreationActivity activity = (ProgramCreationActivity) context;
+
             System.out.println("values : " + values);
             String exercise = values.get(position);
+            String training_days = "";
             Drawable delete_cross = context.getResources().getDrawable(R.drawable.cross_mark);
             Drawable pen = context.getResources().getDrawable(R.drawable.edit);
-            // Afficher l'image et le texte dans les vues correspondantes
+
+            // Get training days for this exercise
+            for (Map.Entry<Exercise, ArrayList<String>> set : activity.program.entrySet()) {
+                System.out.println(set.getKey().name);
+                if (set.getKey().name == exercise) {
+                    training_days = "";
+                    for (String day : set.getValue()) {
+                        training_days += getShortDayName(day) + ", ";
+                    }
+                }
+            }
+            training_days = training_days.substring(0, training_days.length() - 2);
+
+            System.out.println("training days : " + training_days);
+
+            // Display texts and images in Views
             delete_button.setImageDrawable(delete_cross);
             edit_button.setImageDrawable(pen);
-            exercice_name.setText(exercise);
-
-            ProgramCreationActivity activity = (ProgramCreationActivity) context;
+            exercise_name.setText(exercise);
+            training_daysView.setText(training_days);
 
 
 
             // Ecouteur de clics pour chaque élément de la ListView
             edit_button.setOnClickListener(view -> {
-                System.out.println("details : " + activity.exoDetailsForEachDay);
+                /*
+                System.out.println("details : " + activity.program);
                 AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
                 View dialogView = inflater.inflate(R.layout.edit_workout, null);
                 builder.setView(dialogView);
@@ -119,6 +125,8 @@ public class ListExercicesAdapter extends ArrayAdapter<String> {
                     System.out.println("details : " + activity.exoDetailsForEachDay);
                     Toast.makeText(context, "Modifications sauvegardées", Toast.LENGTH_SHORT).show();
                     dialog.dismiss();
+
+
                 });
 
                 ImageView closeButton = dialogView.findViewById(R.id.close_btn);
@@ -126,6 +134,8 @@ public class ListExercicesAdapter extends ArrayAdapter<String> {
                     // Fermer la pop-up
                     dialog.dismiss();
                 });
+                */
+
             });
 
             // Ajouter un OnClickListener à l'image
@@ -133,13 +143,23 @@ public class ListExercicesAdapter extends ArrayAdapter<String> {
                 // Code à exécuter lors du clic
                 Toast.makeText(context, exercise + " supprimé", Toast.LENGTH_SHORT).show();
 
-                activity.exoDetailsForEachDay.get(activity.current_day_displayed).remove(position);
+                Iterator<Map.Entry<Exercise, ArrayList<String>>> iterator = activity.program.entrySet().iterator();
+                while (iterator.hasNext()) {
+                    Map.Entry<Exercise, ArrayList<String>> entry = iterator.next();
+                    Exercise key = entry.getKey();
+                    if (key.name.equals(exercise)) {
+                        iterator.remove();
+                    }
+                }
 
-                ArrayList<String> exosDisplay = new ArrayList<>();
-                for (Exercise exo : activity.exoDetailsForEachDay.get(activity.current_day_displayed)) {
-                    exosDisplay.add(exo.name);
+
+
+                ArrayList<String> updatedExercicesList = new ArrayList<>();
+                for (Map.Entry<Exercise, ArrayList<String>> set : activity.program.entrySet()) {
+                    updatedExercicesList.add(set.getKey().name);
                 }
-                updateValues(exosDisplay);
+
+                updateValues(updatedExercicesList);
                 notifyDataSetChanged();
             });
         }
@@ -158,6 +178,17 @@ public class ListExercicesAdapter extends ArrayAdapter<String> {
 
     }
 
+    String getShortDayName(String day) {
+        if (day == "lundi") return "LU";
+        if (day == "mardi") return "MA";
+        if (day == "mercredi") return "ME";
+        if (day == "jeudi") return "JE";
+        if (day == "vendredi") return "VE";
+        if (day == "samedi") return "SA";
+        if (day == "dimanche") return "DI";
+        else throw new IllegalArgumentException();
+    }
+
 
 }
 
diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/MainActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/MainActivity.java
index 53ed607d4de7b5e9309db62c5a4073ae53d9acc9..f3642e4fefeb393a83eaafdd3a169931017f9e4b 100644
--- a/app/src/main/java/be/lepl1509group13/workoutwarrior/MainActivity.java
+++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/MainActivity.java
@@ -4,16 +4,24 @@ import androidx.activity.result.ActivityResultLauncher;
 import androidx.activity.result.contract.ActivityResultContracts;
 import androidx.annotation.NonNull;
 import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.view.GravityCompat;
+import androidx.drawerlayout.widget.DrawerLayout;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
+import android.annotation.SuppressLint;
 import android.content.Intent;
 import android.os.Bundle;
+import android.util.Log;
+import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.ImageButton;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import com.google.android.material.navigation.NavigationView;
+import com.google.firebase.auth.FirebaseAuth;
+import com.google.firebase.auth.FirebaseUser;
 import com.google.firebase.database.DataSnapshot;
 import com.google.firebase.database.DatabaseError;
 import com.google.firebase.database.DatabaseReference;
@@ -40,6 +48,7 @@ public class MainActivity extends AppCompatActivity implements MainAdapter.OnIte
     private Integer numberOfProgramsToDisplay = 0, totalNumberOfCustomPrograms = 0;
     private boolean needsRefresh = false;
 
+    @SuppressLint({"SetTextI18n"})
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -52,8 +61,36 @@ public class MainActivity extends AppCompatActivity implements MainAdapter.OnIte
         TextView open_program_creation_btn = findViewById(R.id.program_creation_button);
         open_program_creation_btn.setOnClickListener(this::open_program_creation);
 
-        ImageButton open_account = findViewById(R.id.account);
-        open_account.setOnClickListener(this::open_account);
+        ImageButton open_nav = findViewById(R.id.account);
+        DrawerLayout drawerLayout = findViewById(R.id.drawer_layout);
+        NavigationView navigationView = findViewById(R.id.navigation_view);
+
+        //open the navigation
+        open_nav.setOnClickListener(view -> {
+            if (!drawerLayout.isDrawerOpen(GravityCompat.START)) {
+                FirebaseAuth mAuth = FirebaseAuth.getInstance();
+                FirebaseUser currentUser = mAuth.getCurrentUser();
+
+                LayoutInflater inflater = getLayoutInflater();
+                View menu_header = inflater.inflate(R.layout.menu_header, null);
+                TextView text_header_menu = menu_header.findViewById(R.id.menu_text);
+
+                if(currentUser != null){
+                    //todo
+                    text_header_menu.setText("Vous êtes connecté !");
+                }else{
+                    text_header_menu.setText("Vous n'êtes pas connecté. Rendez-vous dans la section Mon compte pour vous connecter.");
+                }
+                drawerLayout.openDrawer(GravityCompat.START);
+            }
+        });
+
+        //check when a button is clicked in the navigation
+        navigationView.setNavigationItemSelectedListener(item -> {
+            open_account((String) item.getTitle());
+            drawerLayout.closeDrawer(GravityCompat.START);
+            return false;
+        });
     }
 
     @Override
@@ -79,15 +116,14 @@ public class MainActivity extends AppCompatActivity implements MainAdapter.OnIte
             result -> {
                 if (result.getResultCode() == 1) {
                     //Update the page if a program is added or deleted
-                    //Log.d("TAG", ": " + Activity.RESULT_OK );
-                    //Log.d("TAG", ": " + result.getResultCode() );
                     needsRefresh = true;
                 }
             }
     );
 
-    private void open_account(View v) {
+    private void open_account(String item) {
         Intent intent = new Intent(MainActivity.this, AccountActivity.class);
+        intent.putExtra("item", item);
         startActivity(intent);
     }
 
diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramAdapter.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramAdapter.java
index bf3fe715ba7628103183d346a68cefb7d8d39ea0..63fde2dd33e44eeff566074169d039c63804745d 100644
--- a/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramAdapter.java
+++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramAdapter.java
@@ -9,6 +9,8 @@ import android.widget.Button;
 import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.RecyclerView;
 
+import java.util.Arrays;
+
 public class ProgramAdapter extends RecyclerView.Adapter<ProgramAdapter.MyViewHolder> {
 
     private final String[][] mData;
diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java
index 75fc222acbc85f424dec97093902bc5ca6b37f25..cac6ea9931410f9bc3cde055fe8ecb8704737aef 100644
--- a/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java
+++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java
@@ -1,9 +1,12 @@
 package be.lepl1509group13.workoutwarrior;
 
+import android.app.Dialog;
 import android.content.DialogInterface;
 import android.content.Intent;
+import android.graphics.Color;
 import android.graphics.Typeface;
 import android.os.Bundle;
+import android.provider.ContactsContract;
 import android.widget.AdapterView;
 import android.content.Context;
 import android.os.Bundle;
@@ -17,6 +20,8 @@ import android.widget.EditText;
 import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.ListView;
+import android.widget.TableLayout;
+import android.widget.TableRow;
 import android.widget.TextView;
 import android.widget.Toast;
 import android.view.View;
@@ -25,6 +30,8 @@ import android.widget.AutoCompleteTextView;
 import androidx.annotation.NonNull;
 import androidx.appcompat.app.AlertDialog;
 import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
 
 import com.google.firebase.database.DataSnapshot;
 import com.google.firebase.database.DatabaseError;
@@ -60,22 +67,22 @@ public class ProgramCreationActivity extends AppCompatActivity {
     // Déclaration variables
     AutoCompleteTextView input_exo; // Champ de texte pour rechercher les exercices
     // Liste d'exos dynamique à remplir depuis la DB
+    public Exercise actual_exo ;
+    public String img_actual_exo;
     private static ArrayList<String> EXOS = new ArrayList<>(); // Liste des exercices de la base de données
     CheckBox cb_lundi, cb_mardi, cb_mercredi, cb_jeudi, cb_vendredi, cb_samedi, cb_dimanche;
     private ArrayList<CheckBox> cb_list = new ArrayList<>();
-    public String current_day_displayed = "lundi";
+
     private ArrayList<String> current_days_checked = new ArrayList<>();
-    public ListView exos_current_day; // ListView des exercices pour le jour courant
 
+    public ListView exercisesView; // ListView des exercices pour le jour courant
     private ImageButton help_creation_program;
 
-    HashMap<String, ArrayList<Exercise>> exoDetailsForEachDay = new HashMap<>();
+    HashMap<String, ArrayList<Exercise>> programByDay = new HashMap<>();
+    HashMap<Exercise, ArrayList<String>> program = new HashMap<>();
 
     ListExercicesAdapter exercisesListAdapter;
-    public static int lastCheckedPosition = -1;
 
-    ArrayList<String> currentExoList = new ArrayList<>();
-    ArrayList<TextView> days_TextView = new ArrayList<>();
 
 
     @Override
@@ -84,19 +91,20 @@ public class ProgramCreationActivity extends AppCompatActivity {
         setContentView(R.layout.program_creation);
         getSupportActionBar().hide();
 
-        init_days_TextView();
-        ((TextView) findViewById(R.id.textview_monday)).setTypeface(Typeface.DEFAULT, Typeface.BOLD);
+        //init_days_TextView();
+
+
 
         db = firebaseDb.getReference("Workouts");
         get_DB_Exercices();
 
-        init_day_lists(); // initialisation des listes pour stocker les exercices choisis
-        init_checkboxes(); // initialisation des checkbox des jours
+        //init_day_lists(); // initialisation des listes pour stocker les exercices choisis
+        //init_checkboxes(); // initialisation des checkbox des jours
 
         input_exo = findViewById(R.id.input_new_exo); // champ de recherche des exercices
-        exos_current_day = findViewById(R.id.exos_current_day_ListView); // liste des exercices choisis pour le jour courant
+        exercisesView = findViewById(R.id.exercisesView); // liste des exercices choisis pour le jour courant
         exercisesListAdapter = new ListExercicesAdapter(this, new ArrayList<>());
-        exos_current_day.setAdapter(exercisesListAdapter);
+        exercisesView.setAdapter(exercisesListAdapter);
 
         ImageButton return_btn = findViewById(R.id.return_btn2);
         return_btn.setOnClickListener(view -> finish());
@@ -116,11 +124,6 @@ public class ProgramCreationActivity extends AppCompatActivity {
         ArrayAdapter<String> exos_suggestion_adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, EXOS);
         input_exo.setAdapter(exos_suggestion_adapter);
 
-        // Ajouter un listener à chaque checkBox
-        for (CheckBox cb : cb_list) cb.setOnCheckedChangeListener(myCheckBoxListener);
-
-
-
         // Popup d'aide
         helpButtonListener();
 
@@ -130,48 +133,8 @@ public class ProgramCreationActivity extends AppCompatActivity {
 
         // Sauvegarde du programme
         saveProgramListener();
-        //testLinstener();
-    }
-
-    /*
-    private void testLinstener(){
-        Button testbtn = findViewById((R.id.save_test));
-        testbtn.setOnClickListener(v -> {
-            System.out.println("EXO SAVED: \n");
-            try {
-                // recup files saved (garde que ".ser")
-                File dir = getFilesDir();
-                String[] fileNames = dir.list();
-                assert fileNames != null;
-                for (String filename : fileNames){
-                    if (filename.endsWith(".ser")){
-
-                        System.out.println("FILENAME: " + filename + "\n");
-                        FileInputStream fileInputStream = openFileInput(filename);
-                        ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
-                        ExerciseEntry exerciseEntry = (ExerciseEntry) objectInputStream.readObject();
-
-                        // ici tu peux utiliser entry comme programme perso
-                        HashMap<String, ArrayList<Exercise>> entry = exerciseEntry.getEntry();
-
-
-                        for (Map.Entry<String, ArrayList<Exercise>> set : entry.entrySet()) {
-                            System.out.println(set.getKey() + " = " + set.getValue());
-                        }
-
-                        objectInputStream.close();
-                        fileInputStream.close();
-                    }
-                }
-
-            } catch (IOException | ClassNotFoundException e) {
-                e.printStackTrace();
-            }
-        });
     }
 
-     */
-
     private void helpButtonListener(){
         help_creation_program = findViewById(R.id.help_program_creation);
         help_creation_program.setOnClickListener(v -> {
@@ -191,6 +154,7 @@ public class ProgramCreationActivity extends AppCompatActivity {
     private void saveProgramListener(){
         Button save_btn = findViewById((R.id.save_button));
         save_btn.setOnClickListener(v -> {
+            convertToProgramByDay();
 
             try {
                 // recup le nom de programme comme nom de fichier -> nomdeprogramme.ser
@@ -199,7 +163,7 @@ public class ProgramCreationActivity extends AppCompatActivity {
                 String programpath = programName + ".ser";
 
                 // place le HashMap du programme dans nomdeprogramme.ser
-                HashMap<String, ArrayList<Exercise>> entry = exoDetailsForEachDay;
+                HashMap<String, ArrayList<Exercise>> entry = programByDay;
                 ExerciseEntry exerciseEntry = new ExerciseEntry(entry);
                 FileOutputStream fileOutputStream = openFileOutput(programpath, Context.MODE_PRIVATE);
                 ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
@@ -220,115 +184,117 @@ public class ProgramCreationActivity extends AppCompatActivity {
 
 
 
-    private void init_checkboxes() {
-        /**
-         * Ajoute les checkboxes dans la liste
-         */
-        cb_lundi = findViewById(R.id.checkbox_monday);
-        cb_mardi = findViewById(R.id.checkbox_tuesday);
-        cb_mercredi = findViewById(R.id.checkbox_wednesday);
-        cb_jeudi = findViewById(R.id.checkbox_thursday);
-        cb_vendredi = findViewById(R.id.checkbox_friday);
-        cb_samedi = findViewById(R.id.checkbox_saturday);
-        cb_dimanche = findViewById(R.id.checkbox_sunday);
-
-        cb_list.add(cb_lundi);
-        cb_list.add(cb_mardi);
-        cb_list.add(cb_mercredi);
-        cb_list.add(cb_jeudi);
-        cb_list.add(cb_vendredi);
-        cb_list.add(cb_samedi);
-        cb_list.add(cb_dimanche);
-    }
-
-    private void init_day_lists() {
-        exoDetailsForEachDay.put("lundi", new ArrayList<>());
-        exoDetailsForEachDay.put("mardi", new ArrayList<>());
-        exoDetailsForEachDay.put("mercredi", new ArrayList<>());
-        exoDetailsForEachDay.put("jeudi", new ArrayList<>());
-        exoDetailsForEachDay.put("vendredi", new ArrayList<>());
-        exoDetailsForEachDay.put("samedi", new ArrayList<>());
-        exoDetailsForEachDay.put("dimanche", new ArrayList<>());
-
-        System.out.println(exoDetailsForEachDay);
-    }
-
-    void init_days_TextView() {
-        /**
-         * Ajoute à days_TextView tous les TextView des jours
-         */
-        days_TextView.add(findViewById(R.id.textview_monday));
-        days_TextView.add(findViewById(R.id.textview_tuesday));
-        days_TextView.add(findViewById(R.id.textview_wednesday));
-        days_TextView.add(findViewById(R.id.textview_thursday));
-        days_TextView.add(findViewById(R.id.textview_friday));
-        days_TextView.add(findViewById(R.id.textview_saturday));
-        days_TextView.add(findViewById(R.id.textview_sunday));
-    }
-
-
 
     private void addExerciceListener() {
         /**
-         * Ajoute un exercice au jour courant dans la HashMap exoDetailsForEachDay et dans la ListView exos_current_day
+         * Ajoute un exercice au jour courant dans la HashMap programByDay et dans la ListView exos_current_day
          */
         Button add_exo_button = findViewById(R.id.add_exo_button);
         add_exo_button.setOnClickListener(v -> {
+            current_days_checked.clear();
 
             // Récupérer la valeur du champ de texte AutoCompleteTextView
             String exercise_searched = input_exo.getText().toString();
 
-            // Récupérer la liste courante et ajouter l'exo aux jours correspondants dans la liste
-            for(int i = 0; i < current_days_checked.size(); i++){
-                String current_day = current_days_checked.get(i);
-                ArrayList<Exercise> currentDayExercices = exoDetailsForEachDay.get(current_day);
-                assert currentDayExercices != null;
+            if(exercise_searched.equals("")){
+                Toast.makeText(ProgramCreationActivity.this, "Veuillez entrer un exercice avant de vouloir l'ajouter !",
+                        Toast.LENGTH_SHORT).show();
+            }else{
+                Dialog dialog = new Dialog(ProgramCreationActivity.this);
+                dialog.setContentView(R.layout.modify_exercice_popup);
+                dialog.show();
+                // Ajouter un listener à chaque checkBox
+                cb_lundi = dialog.findViewById(R.id.checkbox_monday);
+                cb_mardi = dialog.findViewById(R.id.checkbox_tuesday);
+                cb_mercredi = dialog.findViewById(R.id.checkbox_wednesday);
+                cb_jeudi = dialog.findViewById(R.id.checkbox_thursday);
+                cb_vendredi = dialog.findViewById(R.id.checkbox_friday);
+                cb_samedi = dialog.findViewById(R.id.checkbox_saturday);
+                cb_dimanche = dialog.findViewById(R.id.checkbox_sunday);
+
+                cb_list.add(cb_lundi);
+                cb_list.add(cb_mardi);
+                cb_list.add(cb_mercredi);
+                cb_list.add(cb_jeudi);
+                cb_list.add(cb_vendredi);
+                cb_list.add(cb_samedi);
+                cb_list.add(cb_dimanche);
+
+                for (CheckBox cb : cb_list) cb.setOnCheckedChangeListener(myCheckBoxListener);
+
+                DatabaseReference workoutsDb = firebaseDb.getReference("Workouts");
+                Query query = workoutsDb.orderByChild("name").equalTo(exercise_searched);
+                query.addValueEventListener(new ValueEventListener() {
+                    @Override
+                    public void onDataChange(DataSnapshot dataSnapshot) {
+                        for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
+                            Long timer = (snapshot.child("timer").getValue(Long.class))/1000;
+                            img_actual_exo = snapshot.child("image_url").getValue(String.class);
+                            Long break_time = (snapshot.child("break").getValue(Long.class))/1000;
+                            String description = snapshot.child("description").getValue(String.class);
+
+                            EditText description_text = dialog.findViewById(R.id.exercise_description);
+                            EditText timer_edit = dialog.findViewById(R.id.exercise_timer);
+                            TextView timer_text = dialog.findViewById(R.id.timer_text);
+                            TextView break_text = dialog.findViewById(R.id.exercice_break);
+
+                            if(description != null){
+                                description_text.setText(description);
+                            }
+                            if(timer == 0){
+                                timer_edit.setVisibility(View.INVISIBLE);
+                                timer_edit.setEnabled(false);
+                                timer_text.setText("");
+                            }else{
+                                timer_edit.setText(timer.toString());
+                            }
+                            if(break_time != null){
+                                break_text.setText(break_time.toString());
+                            }
+                            int resId = getResources().getIdentifier(img_actual_exo, "drawable", getPackageName());
+                            ImageView image = dialog.findViewById(R.id.exercice_to_modify_image);
+                            image.setImageResource(resId);
+                        }
+                    }
 
-                // Rechercher dans la HashMap si l'exo n'est pas déjà dedans
-                boolean exoAlreadyIn = false;
-                for (Exercise exo : currentDayExercices) {
-                    if (Objects.equals(exo.name, exercise_searched)) exoAlreadyIn = true;
-                }
+                    @Override
+                    public void onCancelled(@NonNull DatabaseError databaseError) {
+                        System.out.println(databaseError);
+                    }
+                });
 
-                if (!exoAlreadyIn) {
-                    Query query = db.orderByChild("name").equalTo(exercise_searched);
-                    query.addListenerForSingleValueEvent(new ValueEventListener() {
-                         @Override
-                         public void onDataChange(DataSnapshot dataSnapshot) {
-                             for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
-                                 String description = snapshot.child("description").getValue(String.class);
-                                 String imageUrl = snapshot.child("image_url").getValue(String.class);
-                                 int timer = snapshot.child("timer").getValue(Integer.class);
-                                 int breakVal = snapshot.child("break").getValue(Integer.class);
-                                 Exercise newExo = new Exercise(exercise_searched, description, breakVal, imageUrl, timer);
-                                 exoDetailsForEachDay.get(current_day).add(newExo);
-                                 System.out.println("exoDetailsForEachDay : " + exoDetailsForEachDay);
-
-                                 // Si le jour affiché est le jour où l'exercice a été ajouté, mettre à jour la liste via l'adaptateur
-                                 if (Objects.equals(current_day, current_day_displayed)) {
-                                     currentExoList.clear();
-                                     for (Exercise exo : exoDetailsForEachDay.get(current_day_displayed)) currentExoList.add(exo.name);
-                                     //currentExoList.add(newExo.name);
-                                     exercisesListAdapter.updateValues(currentExoList);
-                                     System.out.println("currentExoList : " + currentExoList);
-                                 }
-                                 // print dans la console juste pour vérifier que les listes sont correctes
-                                 for (Map.Entry<String, ArrayList<Exercise>> set : exoDetailsForEachDay.entrySet()) {
-                                     System.out.println(set.getKey() + " = " + set.getValue());
-                                 }
-                             }
-                         }
-
-                         @Override
-                         public void onCancelled(DatabaseError error) {
-
-                         }
-                    });
-                }
-            }
 
-            // Effacer le champ de texte AutoCompleteTextView
-            input_exo.setText("");
+
+                ImageView closeButton = dialog.findViewById(R.id.close_btn);
+                closeButton.setOnClickListener(w -> dialog.dismiss());
+
+                TextView name_exercice = dialog.findViewById(R.id.exercice_to_modify_name);
+                name_exercice.setText(exercise_searched);
+
+                Button save_btn = dialog.findViewById(R.id.btn_save_modif);
+                save_btn.setOnClickListener(w -> {
+                    EditText description_text = dialog.findViewById(R.id.exercise_description);
+                    String description_str = description_text.getText().toString();
+
+                    EditText break_text = dialog.findViewById(R.id.exercice_break);
+                    String string_break = break_text.getText().toString();
+                    Integer break_time = Integer.parseInt(string_break);
+
+                    EditText timer_edit = dialog.findViewById(R.id.exercise_timer);
+                    String string_timer = timer_edit.getText().toString();
+                    if(string_timer.equals("")){
+                        actual_exo = new Exercise(exercise_searched, description_str, break_time, "@drawable/developpe_couche_barre", 0);
+                    }else{
+                        Integer timer_int = Integer.parseInt(string_timer);
+                        actual_exo = new Exercise(exercise_searched, description_str, break_time, "@drawable/developpe_couche_barre", timer_int);
+                    }
+                    addToProgram(actual_exo, new ArrayList<>(current_days_checked));
+                    dialog.dismiss();
+                });
+
+                // Effacer le champ de texte AutoCompleteTextView
+                input_exo.setText("");
+            }
         });
     }
 
@@ -336,50 +302,50 @@ public class ProgramCreationActivity extends AppCompatActivity {
             new CompoundButton.OnCheckedChangeListener() {
                 @Override
                 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
-                        if (buttonView == cb_lundi) {
-                            if(current_days_checked.contains("lundi")){
-                                current_days_checked.remove("lundi");
-                            }else{
-                                current_days_checked.add("lundi");
-                            }
-                        } else if (buttonView == cb_mardi) {
-                            if(current_days_checked.contains("mardi")){
-                                current_days_checked.remove("mardi");
-                            }else{
-                                current_days_checked.add("mardi");
-                            }
-                        } else if (buttonView == cb_mercredi) {
-                            if(current_days_checked.contains("mercredi")){
-                                current_days_checked.remove("mercredi");
-                            }else{
-                                current_days_checked.add("mercredi");
-                            }
-                        } else if (buttonView == cb_jeudi) {
-                            if(current_days_checked.contains("jeudi")){
-                                current_days_checked.remove("jeudi");
-                            }else{
-                                current_days_checked.add("jeudi");
-                            }
-                        } else if (buttonView == cb_vendredi) {
-                            if(current_days_checked.contains("vendredi")){
-                                current_days_checked.remove("vendredi");
-                            }else{
-                                current_days_checked.add("vendredi");
-                            }
-                        } else if (buttonView == cb_samedi) {
-                            if(current_days_checked.contains("samedi")){
-                                current_days_checked.remove("samedi");
-                            }else{
-                                current_days_checked.add("samedi");
-                            }
-                        } else if (buttonView == cb_dimanche) {
-                            if(current_days_checked.contains("dimanche")){
-                                current_days_checked.remove("dimanche");
-                            }else{
-                                current_days_checked.add("dimanche");
-                            }
-                            //for (CheckBox cb : cb_list) if (!Objects.equals(cb, cb_dimanche)) cb.setChecked(false);
+                    if (buttonView == cb_lundi) {
+                        if(current_days_checked.contains("lundi")){
+                            current_days_checked.remove("lundi");
+                        }else{
+                            current_days_checked.add("lundi");
+                        }
+                    } else if (buttonView == cb_mardi) {
+                        if(current_days_checked.contains("mardi")){
+                            current_days_checked.remove("mardi");
+                        }else{
+                            current_days_checked.add("mardi");
+                        }
+                    } else if (buttonView == cb_mercredi) {
+                        if(current_days_checked.contains("mercredi")){
+                            current_days_checked.remove("mercredi");
+                        }else{
+                            current_days_checked.add("mercredi");
+                        }
+                    } else if (buttonView == cb_jeudi) {
+                        if(current_days_checked.contains("jeudi")){
+                            current_days_checked.remove("jeudi");
+                        }else{
+                            current_days_checked.add("jeudi");
+                        }
+                    } else if (buttonView == cb_vendredi) {
+                        if(current_days_checked.contains("vendredi")){
+                            current_days_checked.remove("vendredi");
+                        }else{
+                            current_days_checked.add("vendredi");
                         }
+                    } else if (buttonView == cb_samedi) {
+                        if(current_days_checked.contains("samedi")){
+                            current_days_checked.remove("samedi");
+                        }else{
+                            current_days_checked.add("samedi");
+                        }
+                    } else if (buttonView == cb_dimanche) {
+                        if(current_days_checked.contains("dimanche")){
+                            current_days_checked.remove("dimanche");
+                        }else{
+                            current_days_checked.add("dimanche");
+                        }
+                        //for (CheckBox cb : cb_list) if (!Objects.equals(cb, cb_dimanche)) cb.setChecked(false);
+                    }
                     System.out.println(current_days_checked);
                 }
             };
@@ -409,25 +375,49 @@ public class ProgramCreationActivity extends AppCompatActivity {
         });
     }
 
-    public void onNewDayTextClick(View view){
-        current_day_displayed = (String) view.getTag();
-        TextView day = (TextView) view;
-
-        for (TextView text : days_TextView) {
-            if (text.getTypeface().isBold()) text.setTypeface(Typeface.DEFAULT, Typeface.NORMAL);
+    private void addToProgram(Exercise exercise, ArrayList<String> trainingDays) {
+        /**
+         * Add the new exercise to the program
+         */
+        if (exoInProgram(exercise)) {
+            Toast.makeText(this, "Exercice déjà dans le programme !",
+                    Toast.LENGTH_SHORT).show();
+        } else {
+            program.put(exercise, trainingDays);
+            exercisesListAdapter.add(exercise.name);
         }
-        day.setTypeface(Typeface.DEFAULT, Typeface.BOLD);
+    }
 
-        ArrayList<Exercise> exoList = exoDetailsForEachDay.get(current_day_displayed);
+    private boolean exoInProgram(Exercise exercise) {
+        /**
+         * Check if exercise is already in program
+         */
+        for (Exercise ex : program.keySet()) {
+            if (ex.name == exercise.name) return true;
+        }
+        return false;
+    }
 
-        currentExoList.clear();
-        for (Exercise exo : exoList) {
-            currentExoList.add(exo.name);
+    void convertToProgramByDay() {
+        /**
+         * Convert program (HashMap<Exercise, ArrayList<String>>) to programByDay (HashMap<String, ArrayList<Exercise>>)
+         */
+        programByDay.put("lundi", new ArrayList<>());
+        programByDay.put("mardi", new ArrayList<>());
+        programByDay.put("mercredi", new ArrayList<>());
+        programByDay.put("jeudi", new ArrayList<>());
+        programByDay.put("vendredi", new ArrayList<>());
+        programByDay.put("samedi", new ArrayList<>());
+        programByDay.put("dimanche", new ArrayList<>());
+
+        for (Map.Entry<Exercise, ArrayList<String>> set : program.entrySet()) {
+            for (String day : set.getValue()) {
+                programByDay.get(day).add(set.getKey());
+            }
         }
-        exercisesListAdapter.updateValues(currentExoList);
-        System.out.println("currentExoList : " + currentExoList);
-        System.out.println("day : " + current_day_displayed);
-        System.out.println("exos to display : " + exoList);
+
+        System.out.println("program : " + program);
+        System.out.println("programByDay : " + programByDay);
     }
 }
 
@@ -438,6 +428,7 @@ class Exercise implements Serializable {
     int breakVal;
     String image_url;
     int timer;
+    ArrayList<String> workingDays = new ArrayList<>();
 
     public Exercise(String n, String desc, int b, String im, int t) {
         this.name = n;
@@ -450,7 +441,7 @@ class Exercise implements Serializable {
     @NonNull
     @Override
     public String toString() {
-        return name + ", " + description + ", temps de pause : " + breakVal + ", image_url : " + image_url + ", timer : " + timer;
+        return name;
     }
 }
 
diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramDetailActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramDetailActivity.java
index 65a0bae10d3f14a3eca9fdec14c6687134a981a9..01810455af67658aa2ea5f73786a4565cee2c802 100644
--- a/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramDetailActivity.java
+++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramDetailActivity.java
@@ -4,12 +4,12 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.View;
-import android.widget.Button;
 import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import androidx.annotation.NonNull;
 import androidx.appcompat.app.AlertDialog;
 import androidx.appcompat.app.AppCompatActivity;
 import androidx.recyclerview.widget.LinearLayoutManager;
@@ -39,7 +39,9 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA
     private final FirebaseDatabase firebaseDb = FirebaseDatabase.getInstance();
     private DatabaseReference db;
     ImageButton return_btn;
-    TextView start_workout, delete_workout;
+    TextView start_workout, delete_workout, show_workout;
+    private boolean isLocalProgram = false;
+    private String[][] exercisesData = null;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -53,6 +55,12 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA
         //finish activity of there is no id
         if (id == 0){ this.finish(); }
 
+        delete_workout = findViewById(R.id.delete_workout);
+        delete_workout.setOnClickListener(view -> deleteWorkout());
+
+        show_workout = findViewById(R.id.show_workout);
+        show_workout.setOnClickListener(view -> showWorkout());
+
         db = firebaseDb.getReference("Programs");
         getProgramData(id, this_intent.getStringExtra("name"));
 
@@ -62,12 +70,23 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA
         start_workout = findViewById(R.id.start_workout);
         start_workout.setOnClickListener(view -> {
             Intent intent = new Intent(ProgramDetailActivity.this, WorkoutActivity.class);
-            intent.putExtra("id", id);
+            if(isLocalProgram){
+                //si c'est un programme perso et qu'on clique sur démarrer
+                //on envoie un id qui est égal à 0, pour que Workout Activity comprenne que c'est un exercise perso
+                intent.putExtra("id", 0);
+                //on envoie la liste des exos sous forme de liste
+                intent.putExtra("exercisesData", exercisesData);
+            }else{
+                //si c'est un programme de la base de donnée et qu'on clique sur démarrer
+                //on envoie l'id du programme dans l'activité WorkoutActivity
+                intent.putExtra("id", id);
+            }
             startActivity(intent);
         });
+    }
 
-        delete_workout = findViewById(R.id.delete_workout);
-        delete_workout.setOnClickListener(view -> deleteWorkout());
+    private void showWorkout() {
+        //todo
     }
 
     private void deleteWorkout() {
@@ -125,11 +144,7 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA
     private void getProgramData(int id, String name){
         if(id == -1){
             //It's a custom program
-
-            //TEMPORAIRE !!!
-            Button start = findViewById(R.id.start_workout);
-            start.setVisibility(View.INVISIBLE);
-
+            isLocalProgram = true;
             try {
                 // recup files saved (garde que ".ser")
                 File dir = getFilesDir();
@@ -159,7 +174,8 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA
                                 int totalExercises = 0;
                                 for (Exercise values : set.getValue()){totalExercises ++;}
 
-                                String[][] exercisesData = new String[totalExercises][];
+                                //String[][] exercisesData = new String[totalExercises][];
+                                exercisesData = new String[totalExercises][];
 
                                 //for each exercises in the current day, get the details
                                 int exerciseId = 0;
@@ -184,16 +200,16 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA
                         fileInputStream.close();
                     }
                 }
-
             } catch (IOException | ClassNotFoundException e) {
                 e.printStackTrace();
             }
         }else{
-            Button delete = findViewById(R.id.delete_workout);
-            delete.setVisibility(View.INVISIBLE);
+            isLocalProgram = false;
+            delete_workout.setVisibility(View.INVISIBLE);
+            show_workout.setVisibility(View.INVISIBLE);
             db.addValueEventListener(new ValueEventListener() {
                 @Override
-                public void onDataChange(DataSnapshot snapshot) {
+                public void onDataChange(@NonNull DataSnapshot snapshot) {
                     DataSnapshot program = snapshot.child(Integer.toString(id));
 
                     //update the title of the program
@@ -209,7 +225,7 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA
                 }
 
                 @Override
-                public void onCancelled(DatabaseError error) {
+                public void onCancelled(@NonNull DatabaseError error) {
                     Toast.makeText(ProgramDetailActivity.this, "Fail to get data.", Toast.LENGTH_SHORT).show();
                 }
             });
@@ -219,7 +235,7 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA
     private void getExercisesData(String[] exercises_id){
         db.addValueEventListener(new ValueEventListener() {
             @Override
-            public void onDataChange(DataSnapshot snapshot) {
+            public void onDataChange(@NonNull DataSnapshot snapshot) {
                 String[][] exercisesData = new String[exercises_id.length][];
 
                 //For each exercises that is link with the program in the database, add the data
@@ -242,7 +258,7 @@ public class ProgramDetailActivity extends AppCompatActivity implements ProgramA
             }
 
             @Override
-            public void onCancelled(DatabaseError error) {
+            public void onCancelled(@NonNull DatabaseError error) {
                 Toast.makeText(ProgramDetailActivity.this, "Fail to get data.", Toast.LENGTH_SHORT).show();
             }
         });
diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/WorkoutActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/WorkoutActivity.java
index 36892c9f60d0823b9a00d1ca527eef0ef3e9a8cd..58141cfc1e2a8c8acb55d3b84b863ae901c9a552 100644
--- a/app/src/main/java/be/lepl1509group13/workoutwarrior/WorkoutActivity.java
+++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/WorkoutActivity.java
@@ -8,6 +8,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.CountDownTimer;
 import android.os.Vibrator;
+import android.util.Log;
 import android.view.View;
 import android.widget.Button;
 import android.widget.ImageButton;
@@ -21,9 +22,6 @@ import com.google.firebase.database.DatabaseReference;
 import com.google.firebase.database.FirebaseDatabase;
 import com.google.firebase.database.ValueEventListener;
 
-import org.w3c.dom.Text;
-
-import java.util.Locale;
 import java.util.Objects;
 
 public class WorkoutActivity extends AppCompatActivity {
@@ -34,7 +32,7 @@ public class WorkoutActivity extends AppCompatActivity {
     private DatabaseReference db;
     private Integer numberOfWorkouts;
     private int[] workout_id = new int[25];
-    private boolean is_countdown = false;
+
 
     private int timer;
 
@@ -42,9 +40,11 @@ public class WorkoutActivity extends AppCompatActivity {
     TextView set_break_timer_text;
     private CountDownTimer set_countDownTimer;
     long set_break_timer; // temps de pause entre les séries
-    private boolean set_break_timer_counting = false; // vrai si le timer de pause est enclenché
-    private boolean workout_timer_counting = false; // vrai si le timer de l'exo est enclenché
-    private long timeLeftInMillis;
+    private boolean set_break_timer_counting = false; // vrai si le timer de pause est en train de décompter
+    private boolean workout_timer_counting = false; // vrai si le timer de l'exo est en train de décompter
+    private boolean workout_timer_started = false; // vrai si le timer de l'exo a déjà été démarré (qu'il soit sur pause ou non)
+    private long timeLeftInMillis; // temps restant sur le timer du workout
+    Button next_btn;
 
 
 
@@ -54,20 +54,25 @@ public class WorkoutActivity extends AppCompatActivity {
         setContentView(R.layout.activity_workout);
         getSupportActionBar().hide();
 
+        next_btn = findViewById(R.id.next_btn);
+        next_btn.setOnClickListener(v -> onNextClick());
+
         //get the id of the workout && launch the workout
         Intent intent = this.getIntent();
         int id = intent.getIntExtra("id", 0);
-        //finish activity of there is no id
-        if (id == 0){ this.finish(); }
-
-        db = firebaseDb.getReference("Programs");
-        getProgramData(id);
-
-        Button next_btn = findViewById(R.id.next_btn);
-        next_btn.setOnClickListener(v -> onNextClick());
+        //if the id is 0, then it's a custom program
+        if (id == 0){
+            String[][] exercisesData = (String[][]) intent.getSerializableExtra("exercisesData");
+            //todo pour Killian
+        }else{
+            //it's a program from the database
+            db = firebaseDb.getReference("Programs");
+            getProgramData(id);
+        }
 
         ImageButton return_btn = findViewById(R.id.return_btn);
         return_btn.setOnClickListener(view -> {
+            if (countdown != null) countdown.cancel();
             if (set_countDownTimer != null) set_countDownTimer.cancel();
             finish();
         });
@@ -79,14 +84,17 @@ public class WorkoutActivity extends AppCompatActivity {
         //Check if the user click on "start timer"
         Button launch_timer = findViewById(R.id.launch_timer);
         launch_timer.setOnClickListener(view -> {
-            updateTimer(timer, true);
+            countdown = workout_timer(timer);
+            countdown.start();
             launch_timer.setVisibility(View.INVISIBLE);
+            workout_timer_started = true;
+            workout_timer_counting = true;
         });
         timeLeftInMillis = timer;
     }
 
     // Timer entre les séries
-    CountDownTimer set_timer() {
+    CountDownTimer workout_break_timer() {
         CountDownTimer timer = new CountDownTimer(set_break_timer, 1000) {
             public void onTick(long millisUntilFinished) {
                 set_break_timer_text.setText("Temps restant: " + millisUntilFinished / 1000);
@@ -101,8 +109,11 @@ public class WorkoutActivity extends AppCompatActivity {
                 if (vibrator.hasVibrator()) {
                     vibrator.vibrate(vibrationDuration);
                 }
-                updateTimer((int) timeLeftInMillis, true);
-                workout_timer_counting = true;
+                if (workout_timer_started) {
+                    countdown = workout_timer((int) timeLeftInMillis);
+                    countdown.start();
+                    workout_timer_counting = true;
+                }
             }
         };
         return timer;
@@ -169,14 +180,19 @@ public class WorkoutActivity extends AppCompatActivity {
                 set_break_timer = workout.child("break").getValue(Integer.class);
                 set_break_timer_text.setText(String.valueOf(set_break_timer/1000) + " secondes");
 
-                set_countDownTimer = set_timer();
+                set_countDownTimer = workout_break_timer();
                 set_break_btn.setOnClickListener(view -> {
                     if (set_break_timer_counting) {
                         set_countDownTimer.cancel();
                         set_break_timer_text.setText(String.valueOf(set_break_timer/1000) + " secondes");
                         set_break_timer_counting = false;
-                        updateTimer((int) timeLeftInMillis, true);
-                        workout_timer_counting = true;
+
+                        // Si le timer avait déjà été actionné, on reprend le décompte
+                        if (workout_timer_started) {
+                            countdown = workout_timer((int) timeLeftInMillis);
+                            countdown.start();
+                            workout_timer_counting = true;
+                        }
                     }
                     else {
                         set_countDownTimer.start();
@@ -195,8 +211,12 @@ public class WorkoutActivity extends AppCompatActivity {
                     launch_timer.setVisibility(View.VISIBLE);
                 }else{
                     launch_timer.setVisibility(View.INVISIBLE);
-                    updateTimer(0, false);
+                    if (countdown != null) {
+                        countdown.cancel();
+                        countdown.onFinish();
+                    }
                 }
+
             }
 
             @Override
@@ -208,28 +228,37 @@ public class WorkoutActivity extends AppCompatActivity {
 
     @SuppressLint("SetTextI18n")
     private void onNextClick() {
-        if (set_countDownTimer != null) set_countDownTimer.cancel();
+        try {
+            countdown.cancel();
+            TextView countdown_text = findViewById(R.id.workout_timer);
+            countdown_text.setText("");
+        } catch (Exception e){
+            Log.d("Exception", "onNextClick: " + e);
+        }
+
+
+        if (set_countDownTimer != null) {
+            set_countDownTimer.cancel();
+            //set_countDownTimer.onFinish();
+            workout_timer_started = false;
+        }
 
         TextView name = findViewById(R.id.workout_todo);
         TextView description = findViewById(R.id.workout_detail);
         ImageView image = findViewById(R.id.workout_image);
-        Button btn_next = findViewById(R.id.next_btn);
 
-        //Reset countdown of the exercise and hide button
-        if(is_countdown){
-            countdown.cancel();
-        }
-        updateTimer(0, false);
+
         Button launch_timer = findViewById(R.id.launch_timer);
         launch_timer.setVisibility(View.INVISIBLE);
 
         if(step == 0){
             finish();
         }
-        // If it's not the last exercice, break and next exercice
+        // If it's not the last exercice, take a break then next exercice
         else if(!Objects.equals(numberOfWorkouts, step)){
             TextView timer_break = findViewById(R.id.timer_break);
-            CountDownTimer countDownBreak = new CountDownTimer(2000, 1000) {
+
+            CountDownTimer countDownBreak = new CountDownTimer(10000, 1000) {
                 @Override
                 public void onTick(long l) {
                     timer_break.setText("");
@@ -237,8 +266,8 @@ public class WorkoutActivity extends AppCompatActivity {
                     description.setText("");
                     image.setVisibility(View.INVISIBLE);
                     timer_break.setText("" + l/1000);
-                    btn_next.setVisibility(View.INVISIBLE);
-                    set_break_timer_text.setText("");
+                    //btn_next.setVisibility(View.INVISIBLE);
+                    set_break_timer_text.setText("Il est temps de prendre une pause...");
                     set_break_btn.setVisibility(View.INVISIBLE);
                 }
 
@@ -246,45 +275,53 @@ public class WorkoutActivity extends AppCompatActivity {
                 public void onFinish() {
                     timer_break.setText("");
                     image.setVisibility(View.VISIBLE);
-                    btn_next.setVisibility(View.VISIBLE);
+                    next_btn.setVisibility(View.VISIBLE);
                     set_break_btn.setVisibility(View.VISIBLE);
                     db = firebaseDb.getReference("Workouts");
                     getWorkoutData(Integer.toString(workout_id[step - 1]));
                     step ++;
                 }
-            }.start();
+            };
+            countDownBreak.start();
+            next_btn.setText("Passer");
+            next_btn.setOnClickListener(v -> {
+                countDownBreak.cancel();
+                countDownBreak.onFinish();
+                next_btn.setText("Suivant");
+                next_btn.setOnClickListener(v1 -> onNextClick());
+            });
         } else if (numberOfWorkouts.equals(step)) {
-            name.setText("Workout terminé!");
+            name.setText("Entrainement terminé!");
             description.setText("");
-            btn_next.setText("Retour à l'accueil");
+            next_btn.setText("Retour à l'accueil");
             image.setImageResource(0);
             set_break_timer_text.setText("");
             set_break_btn.setVisibility(View.INVISIBLE);
             step = 0;
         }
+        System.out.println("countdown = " + countdown);
     }
 
-    void updateTimer(Integer millis, Boolean isTime){
+    CountDownTimer workout_timer(Integer millis){
         workout_timer_counting = true;
         TextView timer = findViewById(R.id.workout_timer);
 
-        if(!isTime){
-            timer.setText("");
-        }else{
-            countdown = new CountDownTimer(millis, 1000) {
-                public void onTick(long millisUntilFinished) {
-                    is_countdown = true;
-                    int seconds = (int) (millisUntilFinished / 1000);
-                    int minutes = seconds / 60;
-                    seconds     = seconds % 60;
-                    timer.setText(String.format("%d:%02d", minutes, seconds));
-                    timeLeftInMillis = millisUntilFinished;
-                }
-                public void onFinish() {
-                    is_countdown = false;
-                    timer.setText("Temps dépassé!");
+        CountDownTimer countdownTimer = new CountDownTimer(millis, 1000) {
+            public void onTick(long millisUntilFinished) {
+                int seconds = (int) (millisUntilFinished / 1000);
+                int minutes = seconds / 60;
+                seconds     = seconds % 60;
+                timer.setText(String.format("%d:%02d", minutes, seconds));
+                timeLeftInMillis = millisUntilFinished;
+            }
+            public void onFinish() {
+                if (workout_timer_counting) {
+                    timeLeftInMillis = 0;
+                    timer.setText("Workout terminé!");
+                    workout_timer_counting = false;
                 }
-            }.start();
-        }
+            }
+        };
+        return countdownTimer;
     }
 }
diff --git a/app/src/main/res/drawable/check.png b/app/src/main/res/drawable/check.png
new file mode 100644
index 0000000000000000000000000000000000000000..441557fe2ec43b86742df99c22085e71107c0468
Binary files /dev/null and b/app/src/main/res/drawable/check.png differ
diff --git a/app/src/main/res/drawable/menu.png b/app/src/main/res/drawable/menu.png
new file mode 100644
index 0000000000000000000000000000000000000000..c8f355e0e25f19438a9c7684e24dd29d809b43e1
Binary files /dev/null and b/app/src/main/res/drawable/menu.png differ
diff --git a/app/src/main/res/layout/activity_account.xml b/app/src/main/res/layout/activity_account.xml
index 8767900d6713c4f3ab20ab8e8c412c37462db7cb..18b81bf3827654df43a9c44492349caf1040827d 100644
--- a/app/src/main/res/layout/activity_account.xml
+++ b/app/src/main/res/layout/activity_account.xml
@@ -21,7 +21,7 @@
         tools:text="Hello" />
 
     <RelativeLayout
-        android:id="@+id/field_layout"
+        android:id="@+id/field_pseudo_layout"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         app:layout_constraintBottom_toBottomOf="parent"
@@ -31,31 +31,16 @@
         android:padding="10dp">
 
         <com.google.android.material.textfield.TextInputLayout
-            android:id="@+id/email_layout"
+            android:id="@+id/pseudo_layout"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_centerHorizontal="true">
 
             <com.google.android.material.textfield.TextInputEditText
-                android:id="@+id/email"
+                android:id="@+id/pseudo"
                 android:layout_width="300dp"
                 android:layout_height="wrap_content"
-                android:hint="Email" />
-
-        </com.google.android.material.textfield.TextInputLayout>
-
-        <com.google.android.material.textfield.TextInputLayout
-            android:id="@+id/password_layout"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_centerHorizontal="true"
-            android:layout_marginTop="60dp">
-
-            <com.google.android.material.textfield.TextInputEditText
-                android:id="@+id/password"
-                android:layout_width="300dp"
-                android:layout_height="wrap_content"
-                android:hint="Password" />
+                android:hint="Pseudo" />
 
         </com.google.android.material.textfield.TextInputLayout>
 
@@ -68,21 +53,14 @@
         android:layout_alignParentEnd="true"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/field_layout"
+        app:layout_constraintTop_toBottomOf="@+id/field_pseudo_layout"
         android:gravity="center">
 
         <Button
-            android:id="@+id/login"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="Se connecter" />
-
-        <Button
-            android:id="@+id/register"
+            android:id="@+id/register_pseudo"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:text="S'enregistrer"
-            android:layout_marginLeft="10dp"/>
+            android:text="Enregistrer" />
 
     </LinearLayout>
 
diff --git a/app/src/main/res/layout/activity_account_login.xml b/app/src/main/res/layout/activity_account_login.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8767900d6713c4f3ab20ab8e8c412c37462db7cb
--- /dev/null
+++ b/app/src/main/res/layout/activity_account_login.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context=".AccountActivity">
+
+    <TextView
+        android:id="@+id/account_title"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="80dp"
+        android:paddingHorizontal="20dp"
+        android:textAlignment="center"
+        android:textSize="20sp"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_bias="0.0"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/relativeLayout"
+        tools:text="Hello" />
+
+    <RelativeLayout
+        android:id="@+id/field_layout"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:padding="10dp">
+
+        <com.google.android.material.textfield.TextInputLayout
+            android:id="@+id/email_layout"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerHorizontal="true">
+
+            <com.google.android.material.textfield.TextInputEditText
+                android:id="@+id/email"
+                android:layout_width="300dp"
+                android:layout_height="wrap_content"
+                android:hint="Email" />
+
+        </com.google.android.material.textfield.TextInputLayout>
+
+        <com.google.android.material.textfield.TextInputLayout
+            android:id="@+id/password_layout"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerHorizontal="true"
+            android:layout_marginTop="60dp">
+
+            <com.google.android.material.textfield.TextInputEditText
+                android:id="@+id/password"
+                android:layout_width="300dp"
+                android:layout_height="wrap_content"
+                android:hint="Password" />
+
+        </com.google.android.material.textfield.TextInputLayout>
+
+    </RelativeLayout>
+
+    <LinearLayout
+        android:id="@+id/button_layout"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentEnd="true"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/field_layout"
+        android:gravity="center">
+
+        <Button
+            android:id="@+id/login"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Se connecter" />
+
+        <Button
+            android:id="@+id/register"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="S'enregistrer"
+            android:layout_marginLeft="10dp"/>
+
+    </LinearLayout>
+
+    <RelativeLayout
+        android:id="@+id/relativeLayout"
+        android:layout_width="match_parent"
+        android:layout_height="80dp"
+        android:background="@color/orange"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
+        <ImageButton
+            android:id="@+id/return_from_account"
+            android:layout_width="66dp"
+            android:layout_height="61dp"
+            android:layout_marginStart="10dp"
+            android:layout_marginTop="10dp"
+            android:layout_marginEnd="10dp"
+            android:layout_marginBottom="10dp"
+            android:background="@color/orange"
+            android:paddingLeft="10dp"
+            android:paddingTop="1dp"
+            android:paddingRight="10dp"
+            android:paddingBottom="4dp"
+            android:scaleType="fitCenter"
+            android:src="@drawable/return_button"
+            android:textAlignment="center"
+            android:textSize="16sp"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+
+
+    <Button
+        android:id="@+id/logout"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="Deconnexion"
+        android:backgroundTint="@color/orange"
+        app:layout_constraintBottom_toBottomOf="@+id/relativeLayout"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:layout_marginRight="10dp"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_detail_program.xml b/app/src/main/res/layout/activity_detail_program.xml
index 71611fd9f2306e0bb4cef096b3bae4aef842e6e2..c51058b09796eaf173a83da195376927ed14b0d6 100644
--- a/app/src/main/res/layout/activity_detail_program.xml
+++ b/app/src/main/res/layout/activity_detail_program.xml
@@ -35,6 +35,20 @@
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent" />
 
+    <Button
+        android:id="@+id/delete_workout"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:background="@color/orange"
+        android:backgroundTint="@color/orange"
+        android:text="@string/delete_workout"
+        android:textColor="@color/black"
+        app:iconTint="@color/orange"
+        android:layout_marginEnd="15dp"
+        app:layout_constraintBottom_toBottomOf="@+id/navigation_menu"
+        app:layout_constraintEnd_toEndOf="@+id/navigation_menu"
+        app:layout_constraintTop_toTopOf="@+id/navigation_menu" />
+
     <ScrollView
         android:id="@+id/scrollView_program_view"
         android:layout_width="377dp"
@@ -98,12 +112,12 @@
         app:layout_constraintStart_toStartOf="parent" />
 
     <Button
-        android:id="@+id/delete_workout"
+        android:id="@+id/show_workout"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:background="@color/orange"
         android:backgroundTint="@color/orange"
-        android:text="@string/delete_workout"
+        android:text="@string/show_workout"
         android:textColor="@color/black"
         app:iconTint="@color/orange"
         app:layout_constraintBottom_toBottomOf="parent"
@@ -111,5 +125,4 @@
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/start_workout" />
 
-
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 6e83f1921b6a96538cc4af0a7b40c3906be0d4ce..7c8bf82de008aa805854b5daa2c16a19628cb6d7 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -1,107 +1,123 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    tools:context=".MainActivity">
+    tools:context=".MainActivity"
+    tools:openDrawer="start"
+    android:id="@+id/drawer_layout">
 
     <androidx.constraintlayout.widget.ConstraintLayout
-        android:id="@+id/top"
-        android:layout_width="376dp"
-        android:layout_height="90dp"
-        android:padding="16dp"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintHorizontal_bias="0.542"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintVertical_bias="0.04">
-
-
-        <ImageView
-            android:id="@+id/imageView"
-            android:layout_width="56dp"
-            android:layout_height="56dp"
-            android:adjustViewBounds="false"
-            android:background="@drawable/homepage_activities_border"
-            android:clipToOutline="true"
-            android:fadingEdgeLength="10dp"
-            android:scaleType="centerCrop"
-            android:src="@drawable/logo"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:id="@+id/top"
+            android:layout_width="376dp"
+            android:layout_height="90dp"
+            android:padding="16dp"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintHorizontal_bias="0.0"
+            app:layout_constraintHorizontal_bias="0.542"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintVertical_bias="0.0" />
+            app:layout_constraintVertical_bias="0.04">
 
-        <TextView
-            android:id="@+id/welcomebacktxt"
-            android:layout_width="wrap_content"
-            android:layout_height="65dp"
-            android:fontFamily="@font/poppins_semibold"
-            android:gravity="center"
-            android:text="@string/bienvenue_message"
-            android:textSize="29sp"
-            app:layout_constraintBottom_toBottomOf="parent"
+
+            <ImageView
+                android:id="@+id/imageView"
+                android:layout_width="56dp"
+                android:layout_height="56dp"
+                android:adjustViewBounds="false"
+                android:background="@drawable/homepage_activities_border"
+                android:clipToOutline="true"
+                android:fadingEdgeLength="10dp"
+                android:scaleType="centerCrop"
+                android:src="@drawable/logo"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintHorizontal_bias="0.0"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintVertical_bias="0.0" />
+
+            <TextView
+                android:id="@+id/welcomebacktxt"
+                android:layout_width="wrap_content"
+                android:layout_height="65dp"
+                android:fontFamily="@font/poppins_semibold"
+                android:gravity="center"
+                android:text="@string/bienvenue_message"
+                android:textSize="29sp"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintHorizontal_bias="0.054"
+                app:layout_constraintStart_toEndOf="@+id/imageView"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintVertical_bias="0.0"
+                tools:text="Bienvenue" />
+
+            <ImageButton
+                android:id="@+id/account"
+                android:layout_width="32dp"
+                android:layout_height="32dp"
+                android:adjustViewBounds="false"
+                android:background="@drawable/homepage_activities_border"
+                android:clipToOutline="true"
+                android:scaleType="centerCrop"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintTop_toTopOf="parent"
+                android:src="@drawable/menu"
+                app:tint="@color/orange" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
+
+        <ScrollView
+            android:id="@+id/scrollView2"
+            android:layout_width="377dp"
+            android:layout_height="450dp"
+            android:fillViewport="true"
             app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintHorizontal_bias="0.054"
-            app:layout_constraintStart_toEndOf="@+id/imageView"
-            app:layout_constraintTop_toTopOf="parent"
-            app:layout_constraintVertical_bias="0.0"
-            tools:text="Bienvenue" />
-
-        <ImageButton
-            android:id="@+id/account"
-            android:layout_width="32dp"
-            android:layout_height="32dp"
-            android:adjustViewBounds="false"
-            android:background="@drawable/homepage_activities_border"
-            android:clipToOutline="true"
-            android:scaleType="centerCrop"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/top"
+            android:layout_marginTop="20dp" >
+
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/homepage_recycler"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
+
+        </ScrollView>
+
+        <RelativeLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
-            app:layout_constraintTop_toTopOf="parent"
-            android:src="@drawable/user"
-            app:tint="@color/orange" />
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/scrollView2">
+
+            <Button
+                android:id="@+id/program_creation_button"
+                android:layout_width="318dp"
+                android:layout_height="37dp"
+                android:backgroundTint="@color/orange"
+                android:clipToOutline="true"
+                android:text="Créer un programme" />
+
+        </RelativeLayout>
 
     </androidx.constraintlayout.widget.ConstraintLayout>
 
-    <ScrollView
-        android:id="@+id/scrollView2"
-        android:layout_width="377dp"
-        android:layout_height="450dp"
-        android:fillViewport="true"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/top"
-        android:layout_marginTop="20dp" >
-
-        <androidx.recyclerview.widget.RecyclerView
-            android:id="@+id/homepage_recycler"
-            android:layout_width="match_parent"
-            android:layout_height="match_parent"
-            app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>
-
-    </ScrollView>
-
-    <RelativeLayout
+    <com.google.android.material.navigation.NavigationView
+        android:id="@+id/navigation_view"
         android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/scrollView2">
-
-        <Button
-            android:id="@+id/program_creation_button"
-            android:layout_width="318dp"
-            android:layout_height="37dp"
-            android:backgroundTint="@color/orange"
-            android:clipToOutline="true"
-            android:text="Créer un programme" />
-
-    </RelativeLayout>
-
-</androidx.constraintlayout.widget.ConstraintLayout>
+        android:layout_height="match_parent"
+        android:layout_gravity="start"
+        app:menu="@menu/menu_main"
+        app:headerLayout="@layout/menu_header"/>
+
+</androidx.drawerlayout.widget.DrawerLayout>
diff --git a/app/src/main/res/layout/activity_workout.xml b/app/src/main/res/layout/activity_workout.xml
index 996a1c65006df8e0b47ef37aa5c6ae1de885de82..afe126e9d0f6aa2d1edb08241b7a1268a8d1e0a5 100644
--- a/app/src/main/res/layout/activity_workout.xml
+++ b/app/src/main/res/layout/activity_workout.xml
@@ -133,7 +133,7 @@
       android:id="@+id/set_break_timer"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
-      android:text="Pause"
+      android:textColor="@android:color/black"
       app:layout_constraintBottom_toTopOf="@+id/set_break_btn"
       app:layout_constraintEnd_toEndOf="@id/set_break_btn"
       app:layout_constraintStart_toStartOf="@id/set_break_btn"
diff --git a/app/src/main/res/layout/exercice.xml b/app/src/main/res/layout/exercises_list_row.xml
similarity index 84%
rename from app/src/main/res/layout/exercice.xml
rename to app/src/main/res/layout/exercises_list_row.xml
index f8ecb5100452bed45b5b6036b5dd3288cd11ad25..bb4172f98827769a7aa909fe948cadd4cdc7ea54 100644
--- a/app/src/main/res/layout/exercice.xml
+++ b/app/src/main/res/layout/exercises_list_row.xml
@@ -14,39 +14,50 @@
         tools:ignore="MissingConstraints">
 
         <TextView
-            android:id="@+id/exercice_name"
+            android:id="@+id/exercise_name"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_toEndOf="@id/delete_button"
             android:text="Text"/>
 
+
+
         <LinearLayout
             android:id="@+id/buttons_layout"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_alignParentStart="true"
             android:orientation="horizontal">
+
+            <TextView
+                android:id="@+id/training_days"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_toEndOf="@id/delete_button"
+                android:paddingLeft="20dp"
+                android:text="Text"/>
+
             <ImageView
-                android:id="@+id/delete_button"
+                android:id="@+id/edit_button"
                 android:layout_marginLeft="30dp"
                 android:layout_alignParentStart="true"
                 android:clickable="true"
                 android:src="@drawable/ic_launcher_background"
-
                 android:focusable="true"
                 android:layout_width="20dp"
-                android:layout_height="20dp"/>
+                android:layout_height="20dp"
+                app:tint="@color/orange" />
 
             <ImageView
-                android:id="@+id/edit_button"
+                android:id="@+id/delete_button"
                 android:layout_marginLeft="30dp"
                 android:layout_alignParentStart="true"
                 android:clickable="true"
                 android:src="@drawable/ic_launcher_background"
+
                 android:focusable="true"
                 android:layout_width="20dp"
-                android:layout_height="20dp"
-                app:tint="@color/orange" />
+                android:layout_height="20dp"/>
         </LinearLayout>
 
     </LinearLayout>
diff --git a/app/src/main/res/layout/help_creation_program_popup.xml b/app/src/main/res/layout/help_creation_program_popup.xml
index bd9e776b0e0f1c9dc3e35d9c43e5270514d594a5..6ef6772fab44c6d2b79a6663cf2ea55a3e5f986e 100644
--- a/app/src/main/res/layout/help_creation_program_popup.xml
+++ b/app/src/main/res/layout/help_creation_program_popup.xml
@@ -49,7 +49,7 @@
                 android:id="@+id/explication_text1"
                 android:layout_width="350dp"
                 android:layout_height="match_parent"
-                android:text="• Pour commencer, sélectionnez le(s) jour(s) au(x)quel(s) vous voulez ajouter un ou plusieurs exercices."
+                android:text="• Pour commencer, sélectionnez l'exercice que vous voulez ajouter à votre programme et cliquez sur 'ajouter un exercice'"
                 android:textSize="16dp"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent" />
@@ -59,7 +59,7 @@
                 android:layout_width="357dp"
                 android:layout_height="65dp"
                 android:layout_marginTop="15dp"
-                android:text="• Sélectionnez l'exercice que vous voulez ajouter pour ce(s) jour(s) dans la liste déroulante et cliquez sur le bouton ajouter exercice."
+                android:text="• Choisissez ensuite les jours auxquels vous voulez ajouter cet exercice."
                 android:textSize="16dp"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
@@ -71,7 +71,7 @@
                 android:layout_width="350dp"
                 android:layout_height="match_parent"
                 android:layout_marginTop="15dp"
-                android:text="• Cliquez sur un jour pour voir le(s) exercice(s) enregistré(s) pour ce dernier."
+                android:text="• Personnalisez votre exercice en modifiant sa description, en ajustant son temps de pause ou sa durée totale."
                 android:textSize="16dp"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
@@ -82,7 +82,7 @@
                 android:layout_width="350dp"
                 android:layout_height="match_parent"
                 android:layout_marginTop="15dp"
-                android:text="• Cliquez sur le bouton Enregistrer pour sauvegarder votre nouveau programme."
+                android:text="• Cliquez ensuite sur enregistrer pour sauver votre exercice personnalisé."
                 android:textSize="16dp"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
diff --git a/app/src/main/res/layout/menu_header.xml b/app/src/main/res/layout/menu_header.xml
new file mode 100644
index 0000000000000000000000000000000000000000..7e283f7810342a6a81b47142d11837f0be34d935
--- /dev/null
+++ b/app/src/main/res/layout/menu_header.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="120dp"
+    android:background="@color/orange">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/menu_layout"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <ImageView
+            android:id="@+id/menu_image"
+            android:layout_width="50dp"
+            android:layout_height="50dp"
+            android:src="@drawable/user"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            android:layout_marginLeft="30dp"/>
+
+        <TextView
+            android:id="@+id/menu_title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="10dp"
+            android:layout_toEndOf="@+id/menu_image"
+            android:text="Paramètres"
+            android:textSize="30sp"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toEndOf="@+id/menu_image"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <TextView
+            android:id="@+id/menu_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Vous êtes connecté !"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toBottomOf="@+id/menu_title" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+
+</RelativeLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/modify_exercice_popup.xml b/app/src/main/res/layout/modify_exercice_popup.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fdb200a10dc5081bb8035d0c989560873f5c742c
--- /dev/null
+++ b/app/src/main/res/layout/modify_exercice_popup.xml
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        app:layout_constraintBottom_toTopOf="@+id/constraintLayout2"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintVertical_bias="0.260"
+        android:layout_marginTop="60dp"
+        android:layout_marginBottom="50dp">
+
+        <TextView
+            android:id="@+id/exercice_to_modify_name"
+            android:layout_width="200dp"
+            android:layout_height="wrap_content"
+            android:fontFamily="@font/poppins_semibold"
+            android:gravity="center"
+            android:textSize="20sp"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toEndOf="@+id/exercice_to_modify_image"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <ImageView
+            android:id="@+id/exercice_to_modify_image"
+            android:layout_width="110dp"
+            android:layout_height="110dp"
+            android:layout_marginLeft="25dp"
+            android:src="@drawable/developpe_couche_barre"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/constraintLayout2"
+        android:layout_width="380dp"
+        android:layout_height="500dp"
+        android:layout_marginBottom="50dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintHorizontal_bias="0.466"
+        app:layout_constraintStart_toStartOf="parent">
+
+        <RelativeLayout
+            android:layout_width="290dp"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="30dp"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent">
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:orientation="vertical"
+                android:layout_marginTop="35dp">
+
+                <TextView
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:fontFamily="@font/poppins"
+                    android:text="Sélectionnez les jours pour lesquels l'exercice sera ajouté :" />
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical">
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <CheckBox
+                            android:id="@+id/checkbox_monday"
+                            android:layout_width="100dp"
+                            android:layout_height="wrap_content"
+                            android:buttonTint="@color/orange"
+                            android:fontFamily="@font/poppins"
+                            android:text="Lundi"/>
+
+                        <CheckBox
+                            android:id="@+id/checkbox_tuesday"
+                            android:layout_width="100dp"
+                            android:layout_height="wrap_content"
+                            android:buttonTint="@color/orange"
+                            android:fontFamily="@font/poppins"
+                            android:text="Mardi"/>
+
+                        <CheckBox
+                            android:id="@+id/checkbox_wednesday"
+                            android:layout_width="100dp"
+                            android:layout_height="wrap_content"
+                            android:buttonTint="@color/orange"
+                            android:fontFamily="@font/poppins"
+                            android:text="Mercredi"/>
+
+                    </LinearLayout>
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <CheckBox
+                            android:id="@+id/checkbox_thursday"
+                            android:layout_width="100dp"
+                            android:layout_height="wrap_content"
+                            android:buttonTint="@color/orange"
+                            android:fontFamily="@font/poppins"
+                            android:text="Jeudi"/>
+
+                        <CheckBox
+                            android:id="@+id/checkbox_friday"
+                            android:layout_width="100dp"
+                            android:layout_height="wrap_content"
+                            android:buttonTint="@color/orange"
+                            android:fontFamily="@font/poppins"
+                            android:text="Vendredi"/>
+
+                        <CheckBox
+                            android:id="@+id/checkbox_saturday"
+                            android:layout_width="100dp"
+                            android:layout_height="wrap_content"
+                            android:buttonTint="@color/orange"
+                            android:fontFamily="@font/poppins"
+                            android:text="Samedi"/>
+
+                    </LinearLayout>
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <CheckBox
+                            android:id="@+id/checkbox_sunday"
+                            android:layout_width="110dp"
+                            android:layout_height="wrap_content"
+                            android:buttonTint="@color/orange"
+                            android:fontFamily="@font/poppins"
+                            android:text="Dimanche"/>
+
+                    </LinearLayout>
+
+                </LinearLayout>
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    app:layout_constraintTop_toBottomOf="@+id/exercise_popup_image">
+
+                    <TextView
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:text="Entrer la description de votre choix pour cet exercice"/>
+
+                    <EditText
+                        android:id="@+id/exercise_description"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:hint="Description"
+                        android:text=""/>
+
+                    <TextView
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:text="Gérez votre temps de pause en secondes"/>
+
+                    <EditText
+                        android:id="@+id/exercice_break"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:hint="Pause"
+                        android:text=""/>
+
+                    <TextView
+                        android:id="@+id/timer_text"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:text="Entrez la durée totale de cet exercice"/>
+
+                    <EditText
+                        android:id="@+id/exercise_timer"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:hint="Durée"
+                        android:inputType="number"
+                        android:text=""/>
+
+                </LinearLayout>
+                <Button
+                    android:id="@+id/btn_save_modif"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:text="Enregistrer"
+                    android:backgroundTint="@color/orange"/>
+            </LinearLayout>
+        </RelativeLayout>
+
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+    <ImageView
+        android:id="@+id/close_btn"
+        android:layout_width="35dp"
+        android:layout_height="35dp"
+        android:layout_marginTop="10dp"
+        android:layout_marginEnd="10dp"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:srcCompat="@drawable/close_btn" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/program_creation.xml b/app/src/main/res/layout/program_creation.xml
index 206282d1a295ccbecc701505e4c148a15a07019f..21d70e4d9af11241a5d6a70daa28c2ec1971ad8b 100644
--- a/app/src/main/res/layout/program_creation.xml
+++ b/app/src/main/res/layout/program_creation.xml
@@ -46,22 +46,6 @@
             android:textAlignment="center"
             android:textSize="16sp" />
 
-        <!--
-        <Button
-            android:id="@+id/save_test"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginLeft="120dp"
-            android:layout_marginTop="12dp"
-            android:background="#FFFFFF"
-            android:backgroundTint="#FFFFFF"
-            android:clickable="true"
-            android:scaleType="fitCenter"
-            android:text="TEST"
-            android:textAlignment="center"
-            android:textSize="16sp" />
-        -->
-
     </RelativeLayout>
 
     <LinearLayout
@@ -164,178 +148,10 @@
             android:layout_height="wrap_content"
             android:layout_marginTop="14dp">
 
-            <LinearLayout
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:orientation="vertical">
-
-                <TextView
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:fontFamily="@font/poppins"
-                    android:text="Sélectionnez les jours pour lesquels l'exercice sera ajouté :" />
-
-                <LinearLayout
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:orientation="vertical">
-
-                    <LinearLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:orientation="horizontal">
-
-                        <CheckBox
-                            android:id="@+id/checkbox_monday"
-                            android:layout_width="30dp"
-                            android:layout_height="wrap_content"
-                            android:buttonTint="@color/orange"
-                            android:fontFamily="@font/poppins" />
-
-                        <TextView
-                            android:id="@+id/textview_monday"
-                            android:layout_width="70dp"
-                            android:layout_height="wrap_content"
-                            android:clickable="true"
-                            android:focusable="true"
-                            android:fontFamily="@font/poppins"
-                            android:onClick="onNewDayTextClick"
-                            android:tag="lundi"
-                            android:text="Lundi"
-                            android:textSize="15dp" />
-
-                        <CheckBox
-                            android:id="@+id/checkbox_tuesday"
-                            android:layout_width="30dp"
-                            android:layout_height="wrap_content"
-                            android:buttonTint="@color/orange"
-                            android:fontFamily="@font/poppins" />
-
-                        <TextView
-                            android:id="@+id/textview_tuesday"
-                            android:layout_width="70dp"
-                            android:layout_height="wrap_content"
-                            android:clickable="true"
-                            android:focusable="true"
-                            android:fontFamily="@font/poppins"
-                            android:onClick="onNewDayTextClick"
-                            android:tag="mardi"
-                            android:text="Mardi"
-                            android:textSize="15dp" />
-
-                        <CheckBox
-                            android:id="@+id/checkbox_wednesday"
-                            android:layout_width="30dp"
-                            android:layout_height="wrap_content"
-                            android:buttonTint="@color/orange"
-                            android:fontFamily="@font/poppins" />
-
-                        <TextView
-                            android:id="@+id/textview_wednesday"
-                            android:layout_width="70dp"
-                            android:layout_height="wrap_content"
-                            android:clickable="true"
-                            android:focusable="true"
-                            android:fontFamily="@font/poppins"
-                            android:onClick="onNewDayTextClick"
-                            android:tag="mercredi"
-                            android:text="Mercredi"
-                            android:textSize="15dp" />
-
-                    </LinearLayout>
-
-                    <LinearLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:orientation="horizontal">
-
-                        <CheckBox
-                            android:id="@+id/checkbox_thursday"
-                            android:layout_width="30dp"
-                            android:layout_height="wrap_content"
-                            android:buttonTint="@color/orange"
-                            android:fontFamily="@font/poppins" />
-
-                        <TextView
-                            android:id="@+id/textview_thursday"
-                            android:layout_width="70dp"
-                            android:layout_height="wrap_content"
-                            android:clickable="true"
-                            android:focusable="true"
-                            android:fontFamily="@font/poppins"
-                            android:onClick="onNewDayTextClick"
-                            android:tag="jeudi"
-                            android:text="Jeudi"
-                            android:textSize="15dp" />
-
-                        <CheckBox
-                            android:id="@+id/checkbox_friday"
-                            android:layout_width="30dp"
-                            android:layout_height="wrap_content"
-                            android:buttonTint="@color/orange"
-                            android:fontFamily="@font/poppins" />
-
-                        <TextView
-                            android:id="@+id/textview_friday"
-                            android:layout_width="70dp"
-                            android:layout_height="wrap_content"
-                            android:clickable="true"
-                            android:focusable="true"
-                            android:fontFamily="@font/poppins"
-                            android:onClick="onNewDayTextClick"
-                            android:tag="vendredi"
-                            android:text="Vendredi"
-                            android:textSize="15dp" />
-
-                        <CheckBox
-                            android:id="@+id/checkbox_saturday"
-                            android:layout_width="30dp"
-                            android:layout_height="wrap_content"
-                            android:buttonTint="@color/orange"
-                            android:fontFamily="@font/poppins" />
-
-                        <TextView
-                            android:id="@+id/textview_saturday"
-                            android:layout_width="70dp"
-                            android:layout_height="wrap_content"
-                            android:clickable="true"
-                            android:focusable="true"
-                            android:fontFamily="@font/poppins"
-                            android:onClick="onNewDayTextClick"
-                            android:tag="samedi"
-                            android:text="Samedi"
-                            android:textSize="15dp" />
-
-                    </LinearLayout>
-
-                    <LinearLayout
-                        android:layout_width="match_parent"
-                        android:layout_height="wrap_content"
-                        android:orientation="horizontal">
-
-                        <CheckBox
-                            android:id="@+id/checkbox_sunday"
-                            android:layout_width="30dp"
-                            android:layout_height="wrap_content"
-                            android:buttonTint="@color/orange"
-                            android:fontFamily="@font/poppins" />
-
-                        <TextView
-                            android:id="@+id/textview_sunday"
-                            android:layout_width="80dp"
-                            android:layout_height="wrap_content"
-                            android:clickable="true"
-                            android:focusable="true"
-                            android:fontFamily="@font/poppins"
-                            android:onClick="onNewDayTextClick"
-                            android:tag="dimanche"
-                            android:text="Dimanche"
-                            android:textSize="15dp" />
-
-                    </LinearLayout>
-
-                </LinearLayout>
-            </LinearLayout>
+            <androidx.recyclerview.widget.RecyclerView
+                android:id="@+id/exercise_recycler_view"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content" />
         </RelativeLayout>
     </LinearLayout>
 
@@ -351,7 +167,7 @@
             android:layout_height="match_parent">
 
             <ListView
-                android:id="@+id/exos_current_day_ListView"
+                android:id="@+id/exercisesView"
                 android:layout_width="match_parent"
                 android:layout_height="100dp" />
 
diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml
new file mode 100644
index 0000000000000000000000000000000000000000..427245be6e70a2aa3921361d85f2c70b6d91c46b
--- /dev/null
+++ b/app/src/main/res/menu/menu_main.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <group android:checkableBehavior="single">
+        <item
+            android:id="@+id/menu_item_1"
+            android:title="Mon compte" />
+        <item
+            android:id="@+id/menu_item_2"
+            android:title="Mes amis" />
+    </group>
+</menu>
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index daafd4599a7d636bfd77bcb343a7d04c1176315d..2624b16b5748a98d20d58629cc0d92c1930fc209 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -9,6 +9,7 @@
     <string name="entrainement_badminton">Entrainement Badminton</string>
     <string name="launch_workout">Démarrer</string>
     <string name="delete_workout">Supprimer le programme</string>
+    <string name="show_workout">Afficher / Modifier le programme</string>
     <string name="title_activity_account">AccountActivity</string>
     <string name="prompt_email">Email</string>
     <string name="prompt_password">Password</string>