diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 4da48e270b843b5cbe5ecc03f3a8307b3a86f9ac..ac13cdcaa904917d9ef8b85d1d6cade59711a934 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,6 +1,8 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="be.lepl1509group13.workoutwarrior" >
+    package="be.lepl1509group13.workoutwarrior">
+
+    <uses-permission android:name="android.permission.VIBRATE" />
 
     <application
         android:allowBackup="true"
@@ -9,7 +11,10 @@
         android:label="@string/app_name"
         android:roundIcon="@drawable/logo"
         android:supportsRtl="true"
-        android:theme="@style/Theme.WorkoutWarrior" >
+        android:theme="@style/Theme.WorkoutWarrior">
+        <activity
+            android:name=".AddFriendActivity"
+            android:exported="false" />
         <activity
             android:name=".AccountActivity"
             android:exported="false" />
@@ -20,7 +25,7 @@
         <activity android:name=".ProgramCreationActivity" />
         <activity
             android:name=".MainActivity"
-            android:exported="true" >
+            android:exported="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
@@ -32,6 +37,5 @@
             android:name="preloaded_fonts"
             android:resource="@array/preloaded_fonts" />
     </application>
-    <uses-permission android:name="android.permission.VIBRATE"/>
 
 </manifest>
\ No newline at end of file
diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/AccountActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/AccountActivity.java
index dfabbafc4d4778ae07bb8b279f5d556481e93586..b7a65519a317aa23a9997b1fd90af3dbca849220 100644
--- a/app/src/main/java/be/lepl1509group13/workoutwarrior/AccountActivity.java
+++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/AccountActivity.java
@@ -1,6 +1,9 @@
 package be.lepl1509group13.workoutwarrior;
 
+import androidx.annotation.NonNull;
 import androidx.appcompat.app.AppCompatActivity;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
 
 import android.annotation.SuppressLint;
 import android.content.Intent;
@@ -15,6 +18,8 @@ import android.widget.TextView;
 import android.widget.Toast;
 
 import com.google.android.gms.tasks.OnCompleteListener;
+import com.google.android.gms.tasks.OnFailureListener;
+import com.google.android.gms.tasks.OnSuccessListener;
 import com.google.android.gms.tasks.Task;
 import com.google.android.material.textfield.TextInputEditText;
 import com.google.firebase.auth.AuthResult;
@@ -30,13 +35,13 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
 
-public class AccountActivity extends AppCompatActivity {
+public class AccountActivity extends AppCompatActivity implements FriendsAdapter.OnItemClickListener{
 
     private FirebaseAuth mAuth;
     private final FirebaseDatabase firebaseDb = FirebaseDatabase.getInstance();
     private DatabaseReference db;
-    private Button logout;
     private TextView title;
+    private String userPseudo;
 
     @SuppressLint("MissingInflatedId")
     @Override
@@ -48,18 +53,27 @@ public class AccountActivity extends AppCompatActivity {
         FirebaseUser currentUser = mAuth.getCurrentUser();
 
         if(currentUser != null){
+            db = firebaseDb.getReference("Account_pseudo");
+
             //get which button is clicked in the navigation
             Intent intent = this.getIntent();
             String item = intent.getStringExtra("item");
             if(Objects.equals(item, "Mon compte")){
-                //todo
+                setContentView(R.layout.activity_account);
+                getPseudo(currentUser);
+
+                Button logout = findViewById(R.id.logout);
+                logout.setOnClickListener(view -> logout());
+
             } else if (Objects.equals(item, "Mes amis")) {
-                //todo
-            }
-            setContentView(R.layout.activity_account);
+                setContentView(R.layout.activity_account_friends);
 
-            db = firebaseDb.getReference("Account_pseudo");
-            getPseudo(currentUser);
+                Button add_friend = findViewById(R.id.friends_add);
+                add_friend.setOnClickListener(view -> addFriend());
+
+                db = firebaseDb.getReference("Account_pseudo");
+                getUserPseudo(currentUser);
+            }
         }else{
             setContentView(R.layout.activity_account_login);
 
@@ -77,9 +91,74 @@ public class AccountActivity extends AppCompatActivity {
 
         ImageButton return_btn = findViewById(R.id.return_from_account);
         return_btn.setOnClickListener(view -> finish());
+    }
+
+    private void getUserPseudo(FirebaseUser currentUser) {
+        db.addValueEventListener(new ValueEventListener() {
+            @Override
+            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+                for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
+                    String userKey = childSnapshot.getKey();
+                    String pseudo = childSnapshot.getValue(String.class);
+                    if(Objects.equals(userKey, currentUser.getUid())){
+                        userPseudo = pseudo;
+
+                        db = firebaseDb.getReference("Friends");
+                        getFriends(userPseudo);
+                        return;
+                    }
+                }
+            }
+
+            @Override
+            public void onCancelled(@NonNull DatabaseError error) {
+                Toast.makeText(AccountActivity.this, "Une erreur est survenue !", Toast.LENGTH_SHORT).show();
+                finish();
+            }
+        });
+    }
+
+    private void addFriend() {
+        Intent intent = new Intent(AccountActivity.this, AddFriendActivity.class);
+        startActivity(intent);
+    }
 
-        logout = findViewById(R.id.logout);
-        logout.setOnClickListener(view -> logout());
+    public void onItemClick(String friend_pseudo) {
+        //todo when a friend is clicked to be deleted
+        db = firebaseDb.getReference("Friends");
+        db.child(userPseudo).child(friend_pseudo).removeValue()
+                .addOnSuccessListener(aVoid -> Toast.makeText(AccountActivity.this, friend_pseudo + " supprimé de vos amis !", Toast.LENGTH_SHORT).show())
+                .addOnFailureListener(e -> Toast.makeText(AccountActivity.this, "Une erreur est survenue !", Toast.LENGTH_SHORT).show());
+    }
+
+    private void getFriends(String pseudo) {
+        db.addValueEventListener(new ValueEventListener() {
+            @Override
+            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+                DataSnapshot friendsList = dataSnapshot.child(pseudo);
+
+                String[][] friendsData = new String[(int) friendsList.getChildrenCount()][];
+
+                int i = 0;
+                for (DataSnapshot childFriendList: friendsList.getChildren()) {
+                    String friendPseudo = childFriendList.getKey();
+
+                    friendsData[i] = new String[]{friendPseudo};
+                    i ++;
+                }
+
+                RecyclerView recyclerView = findViewById(R.id.friends_view_recycler);
+                recyclerView.setLayoutManager(new LinearLayoutManager(AccountActivity.this));
+                FriendsAdapter adapter = new FriendsAdapter(friendsData);
+                adapter.setOnItemClickListener(AccountActivity.this);
+                recyclerView.setAdapter(adapter);
+            }
+
+            @Override
+            public void onCancelled(@NonNull DatabaseError error) {
+                // Failed to read value
+            }
+        });
     }
 
     private void getPseudo(FirebaseUser currentUser) {
@@ -99,7 +178,7 @@ public class AccountActivity extends AppCompatActivity {
 
                     String pseudo = data.getValue().toString();
 
-                    title.setText("Vous êtes connecté !\n" + currentUser.getEmail() + " & " + id_user + " & " + pseudo);
+                    title.setText("Vous êtes connecté en tant que :\n" + pseudo + "\n avec l'adresse mail :\n" + currentUser.getEmail());
                     field_pseudo_layout.setVisibility(View.INVISIBLE);
                     register.setVisibility(View.INVISIBLE);
                 } catch (Exception e){
@@ -133,22 +212,6 @@ public class AccountActivity extends AppCompatActivity {
         isLoged();
     }
 
-    /**
-    @Override
-    public void onStart() {
-        super.onStart();
-        // Check if user is signed in (non-null) and update UI accordingly.
-        FirebaseUser currentUser = mAuth.getCurrentUser();
-        if(currentUser != null){
-            //reload();
-            Log.d("LOGIN", "onStart: LOGED");
-            isLoged();
-        }else{
-            logout.setVisibility(View.INVISIBLE);
-        }
-    }
-    */
-
     private void isLoged(){
         //Refresh the layout when user is logged
         finish();
@@ -159,8 +222,8 @@ public class AccountActivity extends AppCompatActivity {
 
     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();
+        String email_string = email.toString();
+        String password_string = password.toString();
         if(email_string.isEmpty() || password_string.isEmpty()){
             return;
         }
@@ -190,8 +253,8 @@ public class AccountActivity extends AppCompatActivity {
     }
 
     private void register(Editable email, Editable password) {
-        String email_string = (String)email.toString();
-        String password_string = (String)password.toString();
+        String email_string = email.toString();
+        String password_string = password.toString();
         if(email_string.isEmpty() || password_string.isEmpty()){
             return;
         }
@@ -199,7 +262,7 @@ public class AccountActivity extends AppCompatActivity {
         mAuth.createUserWithEmailAndPassword(email_string, password_string)
                 .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                     @Override
-                    public void onComplete(Task<AuthResult> task) {
+                    public void onComplete(@NonNull Task<AuthResult> task) {
                         if (task.isSuccessful()) {
                             // Sign in success, update UI with the signed-in user's information
                             //Log.d("TAG", "createUserWithEmail:success");
diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/AddFriendActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/AddFriendActivity.java
new file mode 100644
index 0000000000000000000000000000000000000000..afeb6be4465ae8bbe35f903c20516256f88e1065
--- /dev/null
+++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/AddFriendActivity.java
@@ -0,0 +1,159 @@
+package be.lepl1509group13.workoutwarrior;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.os.Bundle;
+import android.text.Editable;
+import android.util.Log;
+import android.widget.Button;
+import android.widget.ImageButton;
+import android.widget.Toast;
+
+import com.google.android.material.textfield.TextInputEditText;
+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 AddFriendActivity extends AppCompatActivity {
+
+    private FirebaseAuth mAuth;
+    private FirebaseUser currentUser;
+    private final FirebaseDatabase firebaseDb = FirebaseDatabase.getInstance();
+    private DatabaseReference db;
+    private String userPseudo;
+    private ValueEventListener checkPseudo;
+    private ValueEventListener checkIfFriends;
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_add_friend);
+        getSupportActionBar().hide();
+
+        mAuth = FirebaseAuth.getInstance();
+        currentUser = mAuth.getCurrentUser();
+
+        db = firebaseDb.getReference("Account_pseudo");
+        getUserPseudo();
+
+        ImageButton back = findViewById(R.id.return_from_add_friend);
+        back.setOnClickListener(view -> finish());
+
+        Button add = findViewById(R.id.add_friend_activity_btn);
+        add.setOnClickListener(view -> addFriend());
+    }
+
+    private void getUserPseudo() {
+        db.addValueEventListener(new ValueEventListener() {
+            @Override
+            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+                for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
+                    String userKey = childSnapshot.getKey();
+                    String pseudo = childSnapshot.getValue(String.class);
+                    if(Objects.equals(userKey, currentUser.getUid())){
+                        userPseudo = pseudo;
+                        return;
+                    }
+                }
+            }
+
+            @Override
+            public void onCancelled(@NonNull DatabaseError error) {
+                Toast.makeText(AddFriendActivity.this, "Une erreur est survenue !", Toast.LENGTH_SHORT).show();
+                finish();
+            }
+        });
+    }
+
+    private void addFriend() {
+        TextInputEditText pseudo_input = findViewById(R.id.add_friend_pseudo);
+        Editable pseudo_string = pseudo_input.getText();
+        Log.d("TRYING TO:", "addFriend: " + pseudo_string);
+
+        db = firebaseDb.getReference("Account_pseudo");
+        checkPseudo(pseudo_string.toString());
+    }
+
+    private void checkPseudo(String pseudo) {
+        checkPseudo = new ValueEventListener() {
+            @Override
+            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+                for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
+                    String pseudoInput = childSnapshot.getValue(String.class);
+                    if(Objects.equals(pseudoInput, pseudo)){
+                        //the pseudo in the input exist in the database
+                        db = firebaseDb.getReference("Friends");
+                        checkIfAlreadyFriends(pseudoInput, userPseudo);
+                        return;
+                    }
+                }
+                Toast.makeText(AddFriendActivity.this, "Ce pseudo n'existe pas !", Toast.LENGTH_SHORT).show();
+            }
+
+            @Override
+            public void onCancelled(@NonNull DatabaseError error) {
+                Toast.makeText(AddFriendActivity.this, "Erreur !", Toast.LENGTH_SHORT).show();
+            }
+        };
+        db.addValueEventListener(checkPseudo);
+    }
+
+    private void checkIfAlreadyFriends(String newFriendPseudo, String userPseudo) {
+        checkIfFriends = new ValueEventListener() {
+            @Override
+            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
+                DataSnapshot friendsList = dataSnapshot.child(userPseudo);
+
+                for (DataSnapshot childFriendList: friendsList.getChildren()) {
+                    String friendPseudo = childFriendList.getKey();
+
+                    if(Objects.equals(friendPseudo, newFriendPseudo)){
+                        Toast.makeText(AddFriendActivity.this, "Vous avez déjà ajouter cet ami !", Toast.LENGTH_SHORT).show();
+                        return;
+                    }
+                }
+                addFriendship(userPseudo, newFriendPseudo);
+            }
+
+            @Override
+            public void onCancelled(@NonNull DatabaseError error) {
+                Toast.makeText(AddFriendActivity.this, "Erreur !", Toast.LENGTH_SHORT).show();
+            }
+        };
+        db.addValueEventListener(checkIfFriends);
+        //db.removeEventListener(checkIfFriends);
+    }
+
+    private void addFriendship(String userPseudo, String newFriendPseudo) {
+        db = firebaseDb.getReference("Friends").child(userPseudo);
+
+        Map<String, Object> updates = new HashMap<>();
+        updates.put(newFriendPseudo, "");
+
+        try {
+            db.updateChildren(updates);
+            Toast.makeText(AddFriendActivity.this, "Ami ajouté !", Toast.LENGTH_SHORT).show();
+            resetFirebaseQuery();
+            finish();
+            return;
+        } catch (Exception e){
+            Log.d("error", "savePseudo: " + e);
+        }
+    }
+
+    private void resetFirebaseQuery(){
+        //stop each onDataChange query
+        db = firebaseDb.getReference("Friends");
+        db.removeEventListener(checkPseudo);
+        db.removeEventListener(checkIfFriends);
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/FriendsAdapter.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/FriendsAdapter.java
new file mode 100644
index 0000000000000000000000000000000000000000..3b3f4788dcc43739f1f094d10583cbb137c9e953
--- /dev/null
+++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/FriendsAdapter.java
@@ -0,0 +1,66 @@
+package be.lepl1509group13.workoutwarrior;
+
+import android.annotation.SuppressLint;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+public class FriendsAdapter extends RecyclerView.Adapter<FriendsAdapter.MyViewHolder>{
+
+    private final String[][] friendData;
+    private OnItemClickListener mListener;
+    public FriendsAdapter(String[][] data) {friendData = data;}
+
+    @NonNull
+    @Override
+    public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.friends_item, parent, false);
+        return new MyViewHolder(view);
+    }
+
+    @Override
+    public void onBindViewHolder(@NonNull MyViewHolder holder, @SuppressLint("RecyclerView") int position) {
+        // Parcourir la liste et afficher le contenu de chaque tableau
+        String[] friend_data = friendData[position];
+
+        holder.pseudo.setText(friend_data[0]);
+
+        holder.delete.setOnClickListener(view -> {
+            if (mListener != null) {
+                mListener.onItemClick(friend_data[0]);
+            }
+        });
+
+    }
+
+    @Override
+    public int getItemCount() {
+        return friendData.length;
+    }
+
+    public void setOnItemClickListener(OnItemClickListener listener) {
+        mListener = listener;
+    }
+
+    public interface OnItemClickListener {
+        void onItemClick(String friend_pseudo);
+    }
+    public static class MyViewHolder extends RecyclerView.ViewHolder {
+
+        public TextView pseudo;
+        public ImageView delete;
+
+        public MyViewHolder(View itemView) {
+            super(itemView);
+            pseudo = itemView.findViewById(R.id.friend_pseudo);
+            delete = itemView.findViewById(R.id.friend_delete);
+        }
+    }
+}
+
+
diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/ListExercicesAdapter.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/ListExercicesAdapter.java
index 78804c5b4d3d23d1d7e5cad6689e1d85dba47b54..624d6a99e1e4be6379e1518949a19db3ab9ad62b 100644
--- a/app/src/main/java/be/lepl1509group13/workoutwarrior/ListExercicesAdapter.java
+++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/ListExercicesAdapter.java
@@ -1,24 +1,51 @@
 package be.lepl1509group13.workoutwarrior;
+import be.lepl1509group13.workoutwarrior.ProgramCreationActivity;
 
+import android.app.Dialog;
 import android.content.Context;
 import android.graphics.drawable.Drawable;
+import android.text.InputType;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import androidx.constraintlayout.widget.ConstraintLayout;
+
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
+import be.lepl1509group13.workoutwarrior.ProgramCreationActivity;
+
 public class ListExercicesAdapter extends ArrayAdapter<String> {
 
     private final Context context;
     private ArrayList<String> values;
 
+    public Exercise actual_exo ;
+    public String img_actual_exo;
+    HashMap<Exercise, ArrayList<String>> program = new HashMap<>();
+
+    String name_exo;
+    String description_exo;
+    Long timer_exo;
+    Long break_exo;
+    ArrayList<String> days_exo = new ArrayList<String>();
+    CheckBox cb_lundi, cb_mardi, cb_mercredi, cb_jeudi, cb_vendredi, cb_samedi, cb_dimanche;
+    private ArrayList<CheckBox> cb_list = new ArrayList<>();
+    private ArrayList<String> current_days_checked = new ArrayList<>();
+    Integer nbre_day = 0;
+
     public ListExercicesAdapter(Context context, ArrayList<String> values) {
         super(context, R.layout.exercises_list_row, values);
         this.context = context;
@@ -40,7 +67,6 @@ public class ListExercicesAdapter extends ArrayAdapter<String> {
 
             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);
@@ -48,7 +74,6 @@ public class ListExercicesAdapter extends ArrayAdapter<String> {
 
             // 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()) {
@@ -58,84 +83,168 @@ public class ListExercicesAdapter extends ArrayAdapter<String> {
             }
             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);
             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.program);
-                AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
-                View dialogView = inflater.inflate(R.layout.edit_workout, null);
-                builder.setView(dialogView);
-                AlertDialog dialog = builder.create();
-                dialog.show();
-
-
-                TextView exerciseName = dialogView.findViewById(R.id.exercise_name);
-                exerciseName.setText(exercise);
-
-                // Rechercher l'exercice dans la HashMap
-                ArrayList<Exercise> exercises = activity.exoDetailsForEachDay.get(activity.current_day_displayed);
-                String imageUrl;
-                String description;
-                for (Exercise exo : exercises) {
-                    if (Objects.equals(exo.name, exercise)) {
-
-                        // Afficher les détails de l'exo
-                        imageUrl = exo.image_url;
-                        ImageView imageView = dialogView.findViewById(R.id.exercise_image);
-                        int resourceId = context.getResources().getIdentifier(imageUrl, "drawable", context.getPackageName());
-                        imageView.setImageResource(resourceId);
-
-                        TextView descriptionTextView = dialogView.findViewById(R.id.description_edit);
-                        descriptionTextView.setText(exo.description);
-
-
-                        TextView break_time_TextView = dialogView.findViewById(R.id.pause_edit);
-                        break_time_TextView.setText(String.valueOf(exo.breakVal/1000));
+                days_exo = new ArrayList<>();
+                for (Map.Entry<Exercise, ArrayList<String>> set : activity.program.entrySet()) {
+                    if (set.getKey().name == exercise) {
+                        for (String day : set.getValue()) {
+                            if(!days_exo.contains(day)){
+                                days_exo.add(day);
+                            }
+                        }
+                        name_exo = set.getKey().name;
+                        description_exo = set.getKey().description;
+                        timer_exo = Long.valueOf(set.getKey().timer);
+                        break_exo = Long.valueOf(set.getKey().breakVal);
+                        img_actual_exo = set.getKey().image_url;
+                    }
+                }
+                Dialog dialog = new Dialog(this.context);
+                dialog.setContentView(R.layout.modify_exercice_popup);
+
+                ImageView closeButton = dialog.findViewById(R.id.close_btn);
+                closeButton.setOnClickListener(w -> dialog.dismiss());
+                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(int i = 0; i < days_exo.size(); i++){
+                    if(days_exo.get(i).equals("lundi")){
+                        cb_lundi.setChecked(true);
+                        current_days_checked.add(days_exo.get(i));
+                        nbre_day += 1;
+                    }
+                    if(days_exo.get(i).equals("mardi")){
+                        cb_mardi.setChecked(true);
+                        current_days_checked.add(days_exo.get(i));
+                        nbre_day += 1;
+                    }
+                    if(days_exo.get(i).equals("mercredi")){
+                        cb_mercredi.setChecked(true);
+                        current_days_checked.add(days_exo.get(i));
+                        nbre_day += 1;
+                    }
+                    if(days_exo.get(i).equals("jeudi")){
+                        cb_jeudi.setChecked(true);
+                        current_days_checked.add(days_exo.get(i));
+                        nbre_day += 1;
+                    }
+                    if(days_exo.get(i).equals("vendredi")){
+                        cb_vendredi.setChecked(true);
+                        current_days_checked.add(days_exo.get(i));
+                        nbre_day += 1;
+                    }
+                    if(days_exo.get(i).equals("samedi")){
+                        cb_samedi.setChecked(true);
+                        current_days_checked.add(days_exo.get(i));
+                        nbre_day += 1;
+                    }
+                    if(days_exo.get(i).equals("dimanche")){
+                        cb_dimanche.setChecked(true);
+                        current_days_checked.add(days_exo.get(i));
+                        nbre_day += 1;
                     }
                 }
 
-                // Enregistrer les modifications de l'exercice
-                Button save_btn = dialogView.findViewById(R.id.save_modif_button);
-                save_btn.setOnClickListener(v -> {
-                    EditText description_edit = dialogView.findViewById(R.id.description_edit);
-                    EditText break_time_edit = dialogView.findViewById(R.id.pause_edit);
-
-                    String new_description = description_edit.getText().toString();
-                    int new_break_time = Integer.parseInt(break_time_edit.getText().toString());
+                for (CheckBox cb : cb_list) cb.setOnCheckedChangeListener(myCheckBoxListener);
+                ConstraintLayout form_layout = dialog.findViewById(R.id.constraintLayout2);
 
-                    // Rechercher l'exercice dans la HashMap et modifier ces paramètres
+                EditText description_text = dialog.findViewById(R.id.exercise_description);
+                EditText timer_edit = dialog.findViewById(R.id.exercise_timer);
+                EditText break_edit = dialog.findViewById(R.id.exercice_break);
+                TextView timer_text = dialog.findViewById(R.id.timer_text);
+                if(description_exo != null){
+                    description_text.setText(description_exo);
+                }
+                if(timer_exo == 0){
+                    timer_edit.setVisibility(View.INVISIBLE);
+                    timer_edit.setEnabled(false);
+                    timer_text.setText("");
+                }else{
+                    timer_edit.setText(timer_exo.toString());
+                }
+                if(break_exo != null){
+                    break_edit.setText(break_exo.toString());
+                }
 
-                    for (Exercise exo : exercises) {
-                        if (Objects.equals(exo.name, exercise)) {
-                            exo.description = new_description;
-                            exo.breakVal = new_break_time * 1000;
+                dialog.show();
+                Button save_btn = dialog.findViewById(R.id.btn_save_modif);
+                save_btn.setOnClickListener(w -> {
+                    if(nbre_day > 0){
+                        String description_str = description_text.getText().toString();
+                        String string_break = break_edit.getText().toString();
+                        Integer break_time = Integer.parseInt(string_break);
+                        String string_timer = timer_edit.getText().toString();
+                        if(string_timer.equals("")){
+                            actual_exo = new Exercise(name_exo, description_str, break_time, "@drawable/developpe_couche_barre", 0);
+                        }else{
+                            Integer timer_int = Integer.parseInt(string_timer);
+                            actual_exo = new Exercise(name_exo, description_str, break_time, "@drawable/developpe_couche_barre", timer_int);
+                        }
+                        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)) {
+                                key.description = description_str;
+                                key.breakVal = break_time;
+                                key.timer = Math.toIntExact(timer_exo);
+                            }
                         }
+                        dialog.dismiss();
+                    }
+                    else{
+                        Toast.makeText(this.context, "Veuillez sélectionner au moins un jour !",
+                                Toast.LENGTH_SHORT).show();
                     }
-                    activity.exoDetailsForEachDay.put(activity.current_day_displayed, exercises);
-                    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);
-                closeButton.setOnClickListener(v -> {
-                    // Fermer la pop-up
-                    dialog.dismiss();
+                form_layout.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        if (description_text.hasFocus()) {
+                            description_text.clearFocus();
+                        }
+                    }
                 });
-                */
 
+                description_text.setOnFocusChangeListener(new View.OnFocusChangeListener() {
+                    @Override
+                    public void onFocusChange(View v, boolean hasFocus) {
+                        if (!hasFocus) {
+                            description_text.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
+                        } else {
+                            description_text.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
+                        }
+                    }
+                });
+                TextView name_exercice = dialog.findViewById(R.id.exercice_to_modify_name);
+                name_exercice.setText(name_exo);
+
+                int resId = context.getResources().getIdentifier(img_actual_exo, "drawable", context.getPackageName());
+                System.out.println(img_actual_exo);
+                System.out.println(resId);
+                ImageView image = dialog.findViewById(R.id.exercice_to_modify_image);
+                image.setImageResource(resId);
             });
 
             // Ajouter un OnClickListener à l'image
@@ -152,8 +261,6 @@ public class ListExercicesAdapter extends ArrayAdapter<String> {
                     }
                 }
 
-
-
                 ArrayList<String> updatedExercicesList = new ArrayList<>();
                 for (Map.Entry<Exercise, ArrayList<String>> set : activity.program.entrySet()) {
                     updatedExercicesList.add(set.getKey().name);
@@ -171,11 +278,6 @@ public class ListExercicesAdapter extends ArrayAdapter<String> {
         this.values.clear();
         this.values.addAll(exercices);
         notifyDataSetChanged();
-        System.out.println("values : " + values);
-    }
-
-    private void save_workout_details() {
-
     }
 
     String getShortDayName(String day) {
@@ -189,7 +291,70 @@ public class ListExercicesAdapter extends ArrayAdapter<String> {
         else throw new IllegalArgumentException();
     }
 
-
+    public CompoundButton.OnCheckedChangeListener myCheckBoxListener =
+            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");
+                            nbre_day -= 1;
+                        }else{
+                            current_days_checked.add("lundi");
+                            nbre_day += 1;
+                        }
+                    } else if (buttonView == cb_mardi) {
+                        if(current_days_checked.contains("mardi")){
+                            current_days_checked.remove("mardi");
+                            nbre_day -= 1;
+                        }else{
+                            current_days_checked.add("mardi");
+                            nbre_day += 1;
+                        }
+                    } else if (buttonView == cb_mercredi) {
+                        if(current_days_checked.contains("mercredi")){
+                            current_days_checked.remove("mercredi");
+                            nbre_day -= 1;
+                        }else{
+                            current_days_checked.add("mercredi");
+                            nbre_day += 1;
+                        }
+                    } else if (buttonView == cb_jeudi) {
+                        if(current_days_checked.contains("jeudi")){
+                            current_days_checked.remove("jeudi");
+                            nbre_day -= 1;
+                        }else{
+                            current_days_checked.add("jeudi");
+                            nbre_day += 1;
+                        }
+                    } else if (buttonView == cb_vendredi) {
+                        if(current_days_checked.contains("vendredi")){
+                            current_days_checked.remove("vendredi");
+                            nbre_day -= 1;
+                        }else{
+                            current_days_checked.add("vendredi");
+                            nbre_day += 1;
+                        }
+                    } else if (buttonView == cb_samedi) {
+                        if(current_days_checked.contains("samedi")){
+                            current_days_checked.remove("samedi");
+                            nbre_day -= 1;
+                        }else{
+                            current_days_checked.add("samedi");
+                            nbre_day += 1;
+                        }
+                    } else if (buttonView == cb_dimanche) {
+                        if(current_days_checked.contains("dimanche")){
+                            current_days_checked.remove("dimanche");
+                            nbre_day -= 1;
+                        }else{
+                            current_days_checked.add("dimanche");
+                            nbre_day += 1;
+                        }
+                        //for (CheckBox cb : cb_list) if (!Objects.equals(cb, cb_dimanche)) cb.setChecked(false);
+                    }
+                }
+            };
 }
 
 
diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/MainActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/MainActivity.java
index c1ee501e4ee30b16f5c9dd32adc808e3da514158..e84b222fb10c6efde701a83666010fd82fc65807 100644
--- a/app/src/main/java/be/lepl1509group13/workoutwarrior/MainActivity.java
+++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/MainActivity.java
@@ -12,16 +12,12 @@ 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;
@@ -68,19 +64,6 @@ public class MainActivity extends AppCompatActivity implements MainAdapter.OnIte
         //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);
             }
         });
diff --git a/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java b/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java
index cac6ea9931410f9bc3cde055fe8ecb8704737aef..6a3668f5d000d989d574ae8e92b6abd04a95ee57 100644
--- a/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java
+++ b/app/src/main/java/be/lepl1509group13/workoutwarrior/ProgramCreationActivity.java
@@ -7,6 +7,7 @@ import android.graphics.Color;
 import android.graphics.Typeface;
 import android.os.Bundle;
 import android.provider.ContactsContract;
+import android.text.InputType;
 import android.widget.AdapterView;
 import android.content.Context;
 import android.os.Bundle;
@@ -30,6 +31,7 @@ import android.widget.AutoCompleteTextView;
 import androidx.annotation.NonNull;
 import androidx.appcompat.app.AlertDialog;
 import androidx.appcompat.app.AppCompatActivity;
+import androidx.constraintlayout.widget.ConstraintLayout;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 
@@ -66,9 +68,11 @@ public class ProgramCreationActivity extends AppCompatActivity {
 
     // Déclaration variables
     AutoCompleteTextView input_exo; // Champ de texte pour rechercher les exercices
+    Integer nbre_day = 0;
     // 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<>();
@@ -83,7 +87,8 @@ public class ProgramCreationActivity extends AppCompatActivity {
 
     ListExercicesAdapter exercisesListAdapter;
 
-
+    String descriptionText;
+    Long break_time;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -92,9 +97,6 @@ public class ProgramCreationActivity extends AppCompatActivity {
         getSupportActionBar().hide();
 
         //init_days_TextView();
-
-
-
         db = firebaseDb.getReference("Workouts");
         get_DB_Exercices();
 
@@ -130,12 +132,11 @@ public class ProgramCreationActivity extends AppCompatActivity {
         // Ajoute l'exo dans la HashMap (en mémoire) et dans la ListView (sur la page) quand l'utilisateur appuie sur le bouton "ajouter"
         addExerciceListener();
 
-
         // Sauvegarde du programme
         saveProgramListener();
     }
 
-    private void helpButtonListener(){
+    public void helpButtonListener(){
         help_creation_program = findViewById(R.id.help_program_creation);
         help_creation_program.setOnClickListener(v -> {
             AlertDialog.Builder builder = new AlertDialog.Builder(ProgramCreationActivity.this);
@@ -151,7 +152,7 @@ public class ProgramCreationActivity extends AppCompatActivity {
         });
     }
 
-    private void saveProgramListener(){
+    public void saveProgramListener(){
         Button save_btn = findViewById((R.id.save_button));
         save_btn.setOnClickListener(v -> {
             convertToProgramByDay();
@@ -182,10 +183,7 @@ public class ProgramCreationActivity extends AppCompatActivity {
 
     }
 
-
-
-
-    private void addExerciceListener() {
+    public void addExerciceListener() {
         /**
          * Ajoute un exercice au jour courant dans la HashMap programByDay et dans la ListView exos_current_day
          */
@@ -230,7 +228,7 @@ public class ProgramCreationActivity extends AppCompatActivity {
                         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;
+                            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);
@@ -238,6 +236,27 @@ public class ProgramCreationActivity extends AppCompatActivity {
                             TextView timer_text = dialog.findViewById(R.id.timer_text);
                             TextView break_text = dialog.findViewById(R.id.exercice_break);
 
+                            ConstraintLayout form_layout = dialog.findViewById(R.id.constraintLayout2);
+                            form_layout.setOnClickListener(new View.OnClickListener() {
+                                @Override
+                                public void onClick(View v) {
+                                    if (description_text.hasFocus()) {
+                                        description_text.clearFocus();
+                                    }
+                                }
+                            });
+
+                            description_text.setOnFocusChangeListener(new View.OnFocusChangeListener() {
+                                @Override
+                                public void onFocusChange(View v, boolean hasFocus) {
+                                    if (!hasFocus) {
+                                        description_text.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
+                                    } else {
+                                        description_text.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_MULTI_LINE | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
+                                    }
+                                }
+                            });
+
                             if(description != null){
                                 description_text.setText(description);
                             }
@@ -260,93 +279,111 @@ public class ProgramCreationActivity extends AppCompatActivity {
                     @Override
                     public void onCancelled(@NonNull DatabaseError databaseError) {
                         System.out.println(databaseError);
-                    }
-                });
-
-
+                        }
+                    });
 
-                ImageView closeButton = dialog.findViewById(R.id.close_btn);
-                closeButton.setOnClickListener(w -> dialog.dismiss());
+                    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);
+                    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();
+                    Button save_btn = dialog.findViewById(R.id.btn_save_modif);
+                    save_btn.setOnClickListener(w -> {
+                    if(nbre_day > 0){
+                        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 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);
+                        EditText timer_edit = dialog.findViewById(R.id.exercise_timer);
+                        String string_timer = timer_edit.getText().toString();
+                        String img = "@drawable/"+img_actual_exo;
+                        if(string_timer.equals("")){
+                            actual_exo = new Exercise(exercise_searched, description_str, break_time, img, 0);
+                        }else{
+                            Integer timer_int = Integer.parseInt(string_timer);
+                            actual_exo = new Exercise(exercise_searched, description_str, break_time, img, timer_int);
+                            actual_exo = new Exercise(exercise_searched, description_str, break_time, img, 0);
+                        }
+                        addToProgram(actual_exo, new ArrayList<>(current_days_checked));
+                        dialog.dismiss();
+                        // Effacer le champ de texte AutoCompleteTextView
+                        input_exo.setText("");
+                    }
+                    else{
+                        Toast.makeText(ProgramCreationActivity.this, "Veuillez sélectionner au moins un jour !",
+                                Toast.LENGTH_SHORT).show();
                     }
-                    addToProgram(actual_exo, new ArrayList<>(current_days_checked));
-                    dialog.dismiss();
                 });
-
-                // Effacer le champ de texte AutoCompleteTextView
-                input_exo.setText("");
             }
         });
     }
 
-    private CompoundButton.OnCheckedChangeListener myCheckBoxListener =
+    public CompoundButton.OnCheckedChangeListener myCheckBoxListener =
             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");
+                            nbre_day -= 1;
                         }else{
                             current_days_checked.add("lundi");
+                            nbre_day += 1;
                         }
                     } else if (buttonView == cb_mardi) {
                         if(current_days_checked.contains("mardi")){
                             current_days_checked.remove("mardi");
+                            nbre_day -= 1;
                         }else{
                             current_days_checked.add("mardi");
+                            nbre_day += 1;
                         }
                     } else if (buttonView == cb_mercredi) {
                         if(current_days_checked.contains("mercredi")){
                             current_days_checked.remove("mercredi");
+                            nbre_day -= 1;
                         }else{
                             current_days_checked.add("mercredi");
+                            nbre_day += 1;
                         }
                     } else if (buttonView == cb_jeudi) {
                         if(current_days_checked.contains("jeudi")){
                             current_days_checked.remove("jeudi");
+                            nbre_day -= 1;
                         }else{
                             current_days_checked.add("jeudi");
+                            nbre_day += 1;
                         }
                     } else if (buttonView == cb_vendredi) {
                         if(current_days_checked.contains("vendredi")){
                             current_days_checked.remove("vendredi");
+                            nbre_day -= 1;
                         }else{
                             current_days_checked.add("vendredi");
+                            nbre_day += 1;
                         }
                     } else if (buttonView == cb_samedi) {
                         if(current_days_checked.contains("samedi")){
                             current_days_checked.remove("samedi");
+                            nbre_day -= 1;
                         }else{
                             current_days_checked.add("samedi");
+                            nbre_day += 1;
                         }
                     } else if (buttonView == cb_dimanche) {
                         if(current_days_checked.contains("dimanche")){
                             current_days_checked.remove("dimanche");
+                            nbre_day -= 1;
                         }else{
                             current_days_checked.add("dimanche");
+                            nbre_day += 1;
                         }
                         //for (CheckBox cb : cb_list) if (!Objects.equals(cb, cb_dimanche)) cb.setChecked(false);
                     }
-                    System.out.println(current_days_checked);
                 }
             };
 
@@ -375,7 +412,7 @@ public class ProgramCreationActivity extends AppCompatActivity {
         });
     }
 
-    private void addToProgram(Exercise exercise, ArrayList<String> trainingDays) {
+    public void addToProgram(Exercise exercise, ArrayList<String> trainingDays) {
         /**
          * Add the new exercise to the program
          */
@@ -416,8 +453,6 @@ public class ProgramCreationActivity extends AppCompatActivity {
             }
         }
 
-        System.out.println("program : " + program);
-        System.out.println("programByDay : " + programByDay);
     }
 }
 
diff --git a/app/src/main/res/drawable/delete.png b/app/src/main/res/drawable/delete.png
new file mode 100644
index 0000000000000000000000000000000000000000..0d30fb0646efbb883db75db9d985fb06af304adb
Binary files /dev/null and b/app/src/main/res/drawable/delete.png differ
diff --git a/app/src/main/res/layout/activity_account.xml b/app/src/main/res/layout/activity_account.xml
index 18b81bf3827654df43a9c44492349caf1040827d..0a0887b439e685bd93d779144df8cd7c622e0c42 100644
--- a/app/src/main/res/layout/activity_account.xml
+++ b/app/src/main/res/layout/activity_account.xml
@@ -100,7 +100,8 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="Deconnexion"
-        android:backgroundTint="@color/orange"
+        android:background="#FFFFFF"
+        android:backgroundTint="#FFFFFF"
         app:layout_constraintBottom_toBottomOf="@+id/relativeLayout"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintTop_toTopOf="parent"
diff --git a/app/src/main/res/layout/activity_account_friends.xml b/app/src/main/res/layout/activity_account_friends.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8cc4d76707275caf8fbc74c6ca5b47cc91233e7e
--- /dev/null
+++ b/app/src/main/res/layout/activity_account_friends.xml
@@ -0,0 +1,89 @@
+<?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_friends_title"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="20dp"
+        android:paddingHorizontal="20dp"
+        android:textAlignment="center"
+        android:textSize="20sp"
+        android:text="@string/friends_list"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/relativeLayout" />
+
+    <ScrollView
+        android:id="@+id/scrollView_friends"
+        android:layout_width="match_parent"
+        android:layout_height="500dp"
+        android:padding="10dp"
+        android:fillViewport="true"
+        app:layout_constraintBottom_toTopOf="@+id/button_layout"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/account_friends_title">
+
+        <androidx.recyclerview.widget.RecyclerView
+            android:id="@+id/friends_view_recycler"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
+
+    </ScrollView>
+
+    <LinearLayout
+        android:id="@+id/button_layout"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentEnd="true"
+        android:gravity="center"
+        android:layout_marginBottom="15dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent">
+
+        <Button
+            android:id="@+id/friends_add"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/friends_add" />
+
+    </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" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_account_login.xml b/app/src/main/res/layout/activity_account_login.xml
index 8767900d6713c4f3ab20ab8e8c412c37462db7cb..fd3221fcec5d66ad3baee5a4f007f76869ac7899 100644
--- a/app/src/main/res/layout/activity_account_login.xml
+++ b/app/src/main/res/layout/activity_account_login.xml
@@ -14,11 +14,11 @@
         android:paddingHorizontal="20dp"
         android:textAlignment="center"
         android:textSize="20sp"
+        android:text="@string/login_title"
         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" />
+        app:layout_constraintTop_toBottomOf="@+id/relativeLayout" />
 
     <RelativeLayout
         android:id="@+id/field_layout"
@@ -115,17 +115,4 @@
             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_add_friend.xml b/app/src/main/res/layout/activity_add_friend.xml
new file mode 100644
index 0000000000000000000000000000000000000000..51859383c3aed026039fe4b5d08b8921b7313aed
--- /dev/null
+++ b/app/src/main/res/layout/activity_add_friend.xml
@@ -0,0 +1,95 @@
+<?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=".AddFriendActivity">
+
+    <TextView
+        android:id="@+id/account_friends_title"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="20dp"
+        android:paddingHorizontal="20dp"
+        android:textAlignment="center"
+        android:textSize="20sp"
+        android:text="@string/add_friend_activity_title"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/relativeLayout" />
+
+    <RelativeLayout
+        android:id="@+id/add_friend_activity_field"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="10dp"
+        android:layout_marginTop="35dp"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/account_friends_title">
+
+        <com.google.android.material.textfield.TextInputLayout
+            android:id="@+id/add_friend_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/add_friend_pseudo"
+                android:layout_width="300dp"
+                android:layout_height="wrap_content"
+                android:hint="Pseudo" />
+
+        </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"
+        android:gravity="center"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/add_friend_activity_field">
+
+        <Button
+            android:id="@+id/add_friend_activity_btn"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/add_friend_activity_btn_text" />
+
+    </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_add_friend"
+        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" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/friends_item.xml b/app/src/main/res/layout/friends_item.xml
new file mode 100644
index 0000000000000000000000000000000000000000..72512fa0f81eb0f6e29b76bc78254cc397091dbc
--- /dev/null
+++ b/app/src/main/res/layout/friends_item.xml
@@ -0,0 +1,42 @@
+<?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"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/friend_layout"
+        android:layout_width="325dp"
+        android:layout_height="70dp"
+        android:layout_marginTop="25dp"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:background="@drawable/border_orange"
+        android:padding="15dp">
+
+        <TextView
+            android:id="@+id/friend_pseudo"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:fontFamily="@font/poppins"
+            android:text="Pseudo"
+            android:textSize="24sp"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <ImageView
+            android:id="@+id/friend_delete"
+            android:layout_width="40dp"
+            android:layout_height="wrap_content"
+            android:layout_alignParentEnd="true"
+            android:src="@drawable/delete"
+            android:textColor="@color/white"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/menu_header.xml b/app/src/main/res/layout/menu_header.xml
index 7e283f7810342a6a81b47142d11837f0be34d935..845991e6ef0090aca184785c9f9050e238c4e029 100644
--- a/app/src/main/res/layout/menu_header.xml
+++ b/app/src/main/res/layout/menu_header.xml
@@ -32,16 +32,6 @@
             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>
 
 
diff --git a/app/src/main/res/layout/modify_exercice_popup.xml b/app/src/main/res/layout/modify_exercice_popup.xml
index fdb200a10dc5081bb8035d0c989560873f5c742c..9722d04f05a01a842c0f1de26c2d25ff4081f840 100644
--- a/app/src/main/res/layout/modify_exercice_popup.xml
+++ b/app/src/main/res/layout/modify_exercice_popup.xml
@@ -179,7 +179,8 @@
                         android:layout_width="match_parent"
                         android:layout_height="wrap_content"
                         android:hint="Pause"
-                        android:text=""/>
+                        android:text=""
+                        android:maxLines="5"/>
 
                     <TextView
                         android:id="@+id/timer_text"
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2624b16b5748a98d20d58629cc0d92c1930fc209..2442df26381513a76c96b329db7368438f546378 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -18,5 +18,10 @@
     <string name="welcome">"Welcome !"</string>
     <string name="invalid_username">Not a valid username</string>
     <string name="invalid_password">Password must be >5 characters</string>
-    <string name="login_failed">"Login failed"</string>
+    <string name="login_failed">Login failed</string>
+    <string name="friends_list">Voici la liste de vos amis</string>
+    <string name="friends_add">Ajouter des amis</string>
+    <string name="add_friend_activity_title">Entrez le pseudo de l\'ami à ajouter</string>
+    <string name="add_friend_activity_btn_text">Ajouter</string>
+    <string name="login_title">Veuillez d\'abord vous connecter</string>
 </resources>