From 6a2865240154fe0eeb32cb65114cbc8010222666 Mon Sep 17 00:00:00 2001 From: Kanavpreet-Singh Date: Sun, 19 Oct 2025 19:35:24 +0530 Subject: [PATCH 1/2] added md file --- assets/expense-tracker-preview.png | Bin 0 -> 46081 bytes en/beginner-projects/expense-tracker.md | 43 ++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 assets/expense-tracker-preview.png create mode 100644 en/beginner-projects/expense-tracker.md diff --git a/assets/expense-tracker-preview.png b/assets/expense-tracker-preview.png new file mode 100644 index 0000000000000000000000000000000000000000..b158d912c57c7887c69f6ff6ce980e973e4f977d GIT binary patch literal 46081 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

mu3Q#${*W7vF0-5j@nOm*i( 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

(Mdx7Vt{yifj0 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 + + From 1274bd38488f2b660ab1ae362ccb4f53c52b9c2c Mon Sep 17 00:00:00 2001 From: Kanavpreet-Singh Date: Sun, 19 Oct 2025 19:38:05 +0530 Subject: [PATCH 2/2] added codes in 'examples' folder --- examples/Expense-Tracker/README.md | 40 +++++++++ examples/Expense-Tracker/index.html | 47 +++++++++++ examples/Expense-Tracker/index.mjs | 112 +++++++++++++++++++++++++ examples/Expense-Tracker/styles.css | 125 ++++++++++++++++++++++++++++ 4 files changed, 324 insertions(+) create mode 100644 examples/Expense-Tracker/README.md create mode 100644 examples/Expense-Tracker/index.html create mode 100644 examples/Expense-Tracker/index.mjs create mode 100644 examples/Expense-Tracker/styles.css diff --git a/examples/Expense-Tracker/README.md b/examples/Expense-Tracker/README.md new file mode 100644 index 00000000..0117b920 --- /dev/null +++ b/examples/Expense-Tracker/README.md @@ -0,0 +1,40 @@ +# 💰 Expense Tracker + +A simple and interactive **Expense Tracker** built using **HTML, CSS, and modern JavaScript (ES Modules)**. +It helps users manage their daily income and expenses, view summaries, and store data locally — all without a backend. + +## Features + +- ➕ **Add new transactions** — income or expense. +- ✏️ **Edit transactions** — update existing entries easily. +- ❌ **Delete transactions** you no longer need. +- 💵 **Live balance summary** showing total, income, and expenses. +- 💾 **Data persistence** using `localStorage` (no backend required). +- 📱 **Clean and responsive UI** — works on both desktop and mobile. + +## Files + +- `index.html` — main structure and layout of the app. +- `styles.css` — styling, layout, and responsive design. +- `index.mjs` — handles core functionality like adding, editing, deleting, and storing transactions. + +## How to Use + +1. Open `index.html` in your browser (Chrome, Edge, or Firefox recommended). +2. Enter a **description** and **amount**. + - Use positive numbers for income (e.g., `+5000`). + - Use negative numbers for expenses (e.g., `-1200`). +3. Click **Add Transaction** to save it. +4. View your total **balance**, **income**, and **expense** at a glance. +5. Edit or delete transactions anytime — all changes are saved automatically. + +## Notes + +- Data is stored locally in the browser using **localStorage**. +- The app automatically loads your saved data on refresh. +- Built entirely with **vanilla JS, HTML, and CSS** — no external libraries used. +- Great for beginners learning **DOM manipulation, events, and localStorage**. + +--- + +✨ **Easily track where your money goes with the Expense Tracker!** diff --git a/examples/Expense-Tracker/index.html b/examples/Expense-Tracker/index.html new file mode 100644 index 00000000..76dfd866 --- /dev/null +++ b/examples/Expense-Tracker/index.html @@ -0,0 +1,47 @@ + + + + + + Expense Tracker + + + +

+

Expense Tracker

+ +
+

Your Balance

+

₹0

+
+ +
+
+

Income

+

₹0

+
+
+

Expense

+

₹0

+
+
+ +

Add New Transaction

+
+ + + +
+ +

Transaction History

+
    +
    + + + + diff --git a/examples/Expense-Tracker/index.mjs b/examples/Expense-Tracker/index.mjs new file mode 100644 index 00000000..4adad0b4 --- /dev/null +++ b/examples/Expense-Tracker/index.mjs @@ -0,0 +1,112 @@ +// Select elements +const balanceEl = document.getElementById("balance"); +const incomeEl = document.getElementById("income"); +const expenseEl = document.getElementById("expense"); +const listEl = document.getElementById("transaction-list"); +const form = document.getElementById("transaction-form"); +const textInput = document.getElementById("text"); +const amountInput = document.getElementById("amount"); + +// Load transactions from localStorage +let transactions = JSON.parse(localStorage.getItem("transactions")) || []; + +// Add transaction +function addTransaction(e) { + e.preventDefault(); + + const text = textInput.value.trim(); + const amount = +amountInput.value; + + if (text === "" || amount === 0 || isNaN(amount)) { + alert("Please enter valid description and amount."); + return; + } + + const transaction = { + id: Date.now(), + text, + amount, + }; + + transactions.push(transaction); + updateLocalStorage(); + renderTransactions(); + + textInput.value = ""; + amountInput.value = ""; +} + +// Delete transaction +function deleteTransaction(id) { + transactions = transactions.filter((t) => t.id !== id); + updateLocalStorage(); + renderTransactions(); +} + +// Edit transaction +function editTransaction(id) { + const t = transactions.find((t) => t.id === id); + if (!t) return; + + const newText = prompt("Edit description:", t.text); + const newAmount = parseFloat(prompt("Edit amount:", t.amount)); + + if (newText && !isNaN(newAmount)) { + t.text = newText; + t.amount = newAmount; + updateLocalStorage(); + renderTransactions(); + } +} + +// Update totals +function updateSummary() { + const amounts = transactions.map((t) => t.amount); + const total = amounts.reduce((a, b) => a + b, 0).toFixed(2); + const income = amounts + .filter((a) => a > 0) + .reduce((a, b) => a + b, 0) + .toFixed(2); + const expense = ( + amounts.filter((a) => a < 0).reduce((a, b) => a + b, 0) * -1 + ).toFixed(2); + + balanceEl.textContent = `₹${total}`; + incomeEl.textContent = `₹${income}`; + expenseEl.textContent = `₹${expense}`; +} + +// Render transactions +function renderTransactions() { + listEl.innerHTML = ""; + + transactions.forEach((t) => { + const li = document.createElement("li"); + li.classList.add(t.amount < 0 ? "expense" : "income"); + + li.innerHTML = ` + ${t.text} ₹${t.amount} +
    + + +
    + `; + + listEl.appendChild(li); + }); + + updateSummary(); +} + +// Save to localStorage +function updateLocalStorage() { + localStorage.setItem("transactions", JSON.stringify(transactions)); +} + +// Initialize +renderTransactions(); +form.addEventListener("submit", addTransaction); + +// Expose functions globally (for inline onclick) +window.editTransaction = editTransaction; +window.deleteTransaction = deleteTransaction; diff --git a/examples/Expense-Tracker/styles.css b/examples/Expense-Tracker/styles.css new file mode 100644 index 00000000..ffc08903 --- /dev/null +++ b/examples/Expense-Tracker/styles.css @@ -0,0 +1,125 @@ +* { + box-sizing: border-box; + margin: 0; + padding: 0; + font-family: "Poppins", sans-serif; +} + +body { + background: #f4f4f9; + color: #333; + display: flex; + justify-content: center; + align-items: flex-start; + min-height: 100vh; + padding: 20px; +} + +.container { + background: #fff; + border-radius: 16px; + padding: 30px; + width: 100%; + max-width: 400px; + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); +} + +h1 { + text-align: center; + margin-bottom: 20px; + color: #2d3436; +} + +.balance { + text-align: center; + margin-bottom: 20px; +} + +#balance { + font-size: 2rem; + color: #2d3436; + margin-top: 10px; +} + +.summary { + display: flex; + justify-content: space-between; + background: #fafafa; + border-radius: 8px; + padding: 10px 20px; + margin-bottom: 30px; + border: 1px solid #ddd; +} + +.summary div { + text-align: center; +} + +.income p { + color: #27ae60; + font-weight: bold; +} + +.expense p { + color: #c0392b; + font-weight: bold; +} + +form { + display: flex; + flex-direction: column; + gap: 10px; + margin-bottom: 30px; +} + +form input { + padding: 10px; + border-radius: 8px; + border: 1px solid #ccc; +} + +form button { + padding: 10px; + border: none; + border-radius: 8px; + background-color: #0984e3; + color: #fff; + cursor: pointer; + transition: background 0.3s ease; +} + +form button:hover { + background-color: #74b9ff; +} + +.list { + list-style-type: none; + margin-top: 10px; +} + +.list li { + background: #f9f9f9; + border-left: 5px solid #2ecc71; + margin-bottom: 10px; + padding: 10px; + border-radius: 8px; + display: flex; + justify-content: space-between; + align-items: center; +} + +.list li.expense { + border-left-color: #e74c3c; +} + +.list button { + border: none; + background: transparent; + color: #e74c3c; + font-weight: bold; + cursor: pointer; +} + +.list button:hover { + color: #c0392b; +}