diff --git a/projects/dice-roller/dice_images/Dice-1.png b/projects/dice-roller/dice_images/Dice-1.png
new file mode 100644
index 0000000..4475581
Binary files /dev/null and b/projects/dice-roller/dice_images/Dice-1.png differ
diff --git a/projects/dice-roller/dice_images/Dice-2.svg.png b/projects/dice-roller/dice_images/Dice-2.svg.png
new file mode 100644
index 0000000..492c41e
Binary files /dev/null and b/projects/dice-roller/dice_images/Dice-2.svg.png differ
diff --git a/projects/dice-roller/dice_images/Dice-3.svg.png b/projects/dice-roller/dice_images/Dice-3.svg.png
new file mode 100644
index 0000000..c64e0c9
Binary files /dev/null and b/projects/dice-roller/dice_images/Dice-3.svg.png differ
diff --git a/projects/dice-roller/dice_images/Dice-4.svg.png b/projects/dice-roller/dice_images/Dice-4.svg.png
new file mode 100644
index 0000000..c566dee
Binary files /dev/null and b/projects/dice-roller/dice_images/Dice-4.svg.png differ
diff --git a/projects/dice-roller/dice_images/Dice-5.svg.png b/projects/dice-roller/dice_images/Dice-5.svg.png
new file mode 100644
index 0000000..2eef430
Binary files /dev/null and b/projects/dice-roller/dice_images/Dice-5.svg.png differ
diff --git a/projects/dice-roller/dice_images/Dice-6.svg.png b/projects/dice-roller/dice_images/Dice-6.svg.png
new file mode 100644
index 0000000..454f81f
Binary files /dev/null and b/projects/dice-roller/dice_images/Dice-6.svg.png differ
diff --git a/projects/dice-roller/index.html b/projects/dice-roller/index.html
new file mode 100644
index 0000000..ddb4f52
--- /dev/null
+++ b/projects/dice-roller/index.html
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+ Document
+
+
+
+
Dice Roller
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/projects/dice-roller/script.js b/projects/dice-roller/script.js
new file mode 100644
index 0000000..48591ef
--- /dev/null
+++ b/projects/dice-roller/script.js
@@ -0,0 +1,16 @@
+function rollDice(){
+ const numOfDice = document.getElementById("numOfDice").value;
+ const diceResult = document.getElementById("diceResult");
+ const diceImages = document.getElementById("diceImages");
+ const values = [];
+ const images = [];
+
+ for(let i = 0;i < numOfDice;i++){
+ const value = Math.floor(Math.random()*6)+1;
+ values.push(value);
+ images.push(`
`);
+ }
+
+ diceResult.textContent = `dice: ${values.join(', ')}`;
+ diceImages.innerHTML = images.join('');
+ }
diff --git a/projects/dice-roller/styles.css b/projects/dice-roller/styles.css
new file mode 100644
index 0000000..0bdb6db
--- /dev/null
+++ b/projects/dice-roller/styles.css
@@ -0,0 +1,30 @@
+#container{
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
+ text-align: center;
+ font-size: 2rem;
+ font-weight: bold;
+
+}
+button{
+ font-size: 1.5rem;
+ font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
+ padding: 10px 15px;
+ border-radius: 10px;
+ border: none;
+ color: rgb(37, 37, 37);
+ font-weight:500;
+ cursor: pointer;
+ background: linear-gradient(to left bottom, lightgreen, lightblue);
+}
+button:hover{
+ background:linear-gradient(to left bottom, rgb(104, 246, 104), rgb(139, 223, 250));
+}
+button:active{
+ background:linear-gradient(to left bottom, rgb(158, 235, 158), rgb(179, 224, 240));
+}
+input{
+ font-size: 2rem;
+ width: 150px;
+ text-align: center;
+ font-weight: bold;
+}
\ No newline at end of file
diff --git a/random-password-generator/index.html b/random-password-generator/index.html
new file mode 100644
index 0000000..7f03756
--- /dev/null
+++ b/random-password-generator/index.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+ Document
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/random-password-generator/script.js b/random-password-generator/script.js
new file mode 100644
index 0000000..09dfef2
--- /dev/null
+++ b/random-password-generator/script.js
@@ -0,0 +1,39 @@
+function generatePassword(length, includeLowercase, includeNumbers, includeSymbols, includeUppercase){
+ const lowercaseChars = "abscdefghijklopqrstuvwxyz";
+ const uppercaseChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ const numberChars = "0123456789"
+ const symbolChars = "@._&";
+ let allowedChars = " ";
+ let password = "";
+ allowedChars += includeLowercase ? lowercaseChars: "";
+ allowedChars += includeUppercase ? uppercaseChars: "";
+ allowedChars += includeNumbers ? numberChars:"";
+ allowedChars += includeSymbols ? symbolChars:"";
+ console.log(allowedChars);
+ if(length <= 0){
+ return `(password length must be at least 1)`;
+ }
+ if(allowedChars.length === 0){
+ return `(At least 1 char needs to be selected)`
+ }
+ for(let i = 0; i