JavaScript Project - Notes App

In this tutorial, we will learn how to create a simple Notes App in JavaScript.

JavaScript Notes Application

Create a folder called notes-app as project workspace and we will create all the project files inside this folder.

1. index.html

Let's create index.html and add the following code to it:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Notes App</title> <link rel="stylesheet" href="style.css" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/marked/1.1.1/marked.min.js"></script> <script src="script.js" defer></script> </head> <body> <button class="add" id="add"> <i class="fas fa-plus"></i> Add note </button> </body> </html>

2. script.js

Let's create JavaScript file named script.js and add following JavaScript code to it:

const addBtn = document.getElementById("add"); const notes = JSON.parse(localStorage.getItem("notes")); if (notes) { notes.forEach((note) => { addNewNote(note); }); } addBtn.addEventListener("click", () => { addNewNote(); }); function addNewNote(text = "") { const note = document.createElement("div"); note.classList.add("note"); note.innerHTML = `  <div class="notes">  <div class="tools">  <button class="edit"><i class="fas fa-edit"></i></button>  <button class="delete"><i class="fas fa-trash-alt"></i></button>  </div>  <div class="main ${text ? "" : "hidden"}"></div>  <textarea class="${text ? "hidden" : ""}"></textarea>  </div>  `; const editBtn = note.querySelector(".edit"); const deleteBtn = note.querySelector(".delete"); const main = note.querySelector(".main"); const textArea = note.querySelector("textarea"); textArea.value = text; main.innerHTML = marked(text); editBtn.addEventListener("click", () => { main.classList.toggle("hidden"); textArea.classList.toggle("hidden"); }); deleteBtn.addEventListener("click", () => { note.remove(); updateLS(); }); textArea.addEventListener("input", (e) => { const { value } = e.target; main.innerHTML = marked(value); updateLS(); }); document.body.appendChild(note); } function updateLS() { const notesText = document.querySelectorAll("textarea"); const notes = []; notesText.forEach((note) => { notes.push(note.value); }); localStorage.setItem("notes", JSON.stringify(notes)); }

style.css

Let's create CSS file named style.css and add the following CSS code to it:

@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@200;400;600&display=swap"); * { box-sizing: border-box; } body { background-color: #7bdaf3; display: flex; flex-wrap: wrap; font-family: "Poppins", sans-serif; margin: 0; padding-top: 3rem; } .add { background-color: #9ec862; border-radius: 3px; border: none; color: white; cursor: pointer; padding: 0.5rem 1rem; position: fixed; top: 1rem; right: 1rem; } .note { background-color: #fff; box-shadow: 0 0 10px 4px rgba(0, 0, 0, 0.1); margin: 20px; height: 400px; width: 400px; } .note .tools { background-color: #9ec862; display: flex; justify-content: flex-end; padding: 0.5rem; } .note .tools button { background-color: transparent; border: none; color: #fff; cursor: pointer; font-size: 1rem; margin-left: 0.5rem; } .note .main { background-color: #eee; overflow: hidden; height: 400px; width: 100%; } .note textarea { outline: none; font-family: inherit; font-size: 1.2rem; border: none; height: 400px; width: 100%; } .note .hidden { display: none; }

Open index.html in Browser

Let's open the index.html file in the browser and you will be able to see the following screen:

More Free JavaScript Projects with Source Code


Comments