diff --git a/.env.dist b/.env.dist
new file mode 100644
index 0000000000000000000000000000000000000000..7c26e96577a539823ed3caad91f659ce9428aa16
--- /dev/null
+++ b/.env.dist
@@ -0,0 +1,10 @@
+# Flask app settings
+
+MYSQL_HOST=
+MYSQL_USER=  
+MYSQL_PASSWORD=
+MYSQL_DB=
+
+# MySQL settings
+MYSQL_DATABASE=
+MYSQL_ROOT_PASSWORD=
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..26f1a2243177f73bdaf62de1e0dba04ef49aade7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+__pycache__
+.env
+docker-compose.yaml
+Dockerfile
\ No newline at end of file
diff --git a/README.md b/README.md
index 9a632cb719371a4d0667cf6fcb51b0fe8efb8596..e223949c00b3b14d50b9da070c684917d367b393 100644
--- a/README.md
+++ b/README.md
@@ -3,3 +3,7 @@
 - ecrire le dockerfile pour conteneuriser l'application
 - ecrire le docker-compose file pour lancer le conteneur
 - utiliser les commandes de base git pour créer les branches puis les merger dans une barnche par default
+
+# Flask MySQL CRUD Application
+
+Il s'agit d'une application Flask simple qui effectue des opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) sur une base de données MySQL. L'application est Dockerisée à l'aide de Docker Compose, qui orchestre l'application Flask et les services MySQL.
diff --git a/app.py b/app.py
index def6287b599f84a218be9aef1ae85bc99013e544..06c20348472084043422be273ba4443a17c3eb4b 100644
--- a/app.py
+++ b/app.py
@@ -1,14 +1,77 @@
-from flask import Flask
+from flask import Flask, jsonify, request, redirect, url_for
+from flask_mysqldb import MySQL
+import MySQLdb.cursors
 import os
 
 app = Flask(__name__)
 
+# MySQL configurations
+app.config['MYSQL_HOST'] = os.getenv('MYSQL_HOST')
+app.config['MYSQL_USER'] = os.getenv('MYSQL_USER')  
+app.config['MYSQL_PASSWORD'] = os.getenv('MYSQL_PASSWORD')
+app.config['MYSQL_DB'] = os.getenv('MYSQL_DB')
 
-name = os.getenv('name')
+
+# Initialize MySQL
+mysql = MySQL(app)
+
+# Create operation
+@app.route('/add_user', methods=['POST'])
+def add_user():
+    firstname = request.json['firstname']
+    email = request.json['email']
+    cursor = mysql.connection.cursor()
+    cursor.execute("INSERT INTO users (firstname, email) VALUES (%s, %s)", (firstname, email))
+    mysql.connection.commit()
+    cursor.close()
+    return jsonify({'message': 'User added successfully!'})
+
+# Read operation
+@app.route('/users', methods=['GET'])
+def get_users():
+    cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
+    cursor.execute("SELECT * FROM users")
+    users = cursor.fetchall()
+    cursor.close()
+    return jsonify(users)
+
+# Read operation by id
+@app.route('/user/<int:id>', methods=['GET'])
+def get_user(id):
+    cursor = mysql.connection.cursor(MySQLdb.cursors.DictCursor)
+    cursor.execute("SELECT * FROM users WHERE id = %s", (id,))
+    user = cursor.fetchone()
+    cursor.close()
+
+    if user:
+        return jsonify(user)
+    else:
+        return jsonify({'message': 'User not found'}), 404
+
+
+# Update operation
+@app.route('/update_user/<int:id>', methods=['PUT'])
+def update_user(id):
+    firstname = request.json['firstname']
+    email = request.json['email']
+    cursor = mysql.connection.cursor()
+    cursor.execute("UPDATE users SET firstname = %s, email = %s WHERE id = %s", (firstname, email, id))
+    mysql.connection.commit()
+    cursor.close()
+    return jsonify({'message': 'User updated successfully!'})
+
+# Delete operation
+@app.route('/delete_user/<int:id>', methods=['DELETE'])
+def delete_user(id):
+    cursor = mysql.connection.cursor()
+    cursor.execute("DELETE FROM users WHERE id = %s", (id,))
+    mysql.connection.commit()
+    cursor.close()
+    return jsonify({'message': 'User deleted successfully!'})
 
 @app.route('/')
 def hello_world():
-    return f'Hello, {name}!'
+    return f'Hello, from flask app!'
 
 if __name__ == '__main__':
     app.run(debug=True, host=os.environ.get('FLASK_RUN_HOST', '0.0.0.0'), port=int(os.environ.get('FLASK_RUN_PORT', 5000)))
diff --git a/requirements.txt b/requirements.txt
index db4365489b6f8e934b0ab7fa0472793d2b5b9e36..a406bf9f674399edfc02ca5c713ffcb4e1be33ea 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,3 +1,4 @@
 Flask==3.0.0
 requests==2.26.0
 Flask-DotEnv==0.1.2
+Flask-MySQLdb==2.0.0
diff --git a/scripts/user.sql b/scripts/user.sql
new file mode 100644
index 0000000000000000000000000000000000000000..7bbf5296517afbaba3a9528835175ffa0a4deace
--- /dev/null
+++ b/scripts/user.sql
@@ -0,0 +1,9 @@
+CREATE DATABASE IF NOT EXISTS workshop;
+
+USE workshop;
+
+CREATE TABLE IF NOT EXISTS users (
+    id INT AUTO_INCREMENT PRIMARY KEY,
+    firstname VARCHAR(100),
+    email VARCHAR(100)
+);