commit f004be68cf4aff082cea55a3804a1f0cedbdc352
Author: root <root@hub.scroll.pub> Date: 2024-12-28 01:32:33 +0000 Subject: Initial commit diff --git a/body.html b/body.html new file mode 100644 index 0000000..41ccee3 --- /dev/null +++ b/body.html @@ -0,0 +1,74 @@ +<header> + <h1>BudgetWise</h1> + <p>Your Detailed Budget Calculator</p> +</header> + +<main> + <section class="input-section"> + <h2>Income & Expenses</h2> + <div class="form-group"> + <label for="income">Monthly Income:</label> + <input type="number" id="income" placeholder="Enter your monthly income"> + </div> + + <div class="expenses"> + <h3>Monthly Expenses</h3> + <div class="form-group"> + <label for="housing">Housing:</label> + <input type="number" id="housing" placeholder="Enter housing costs"> + </div> + <div class="form-group"> + <label for="utilities">Utilities:</label> + <input type="number" id="utilities" placeholder="Enter utilities costs"> + </div> + <div class="form-group"> + <label for="transportation">Transportation:</label> + <input type="number" id="transportation" placeholder="Enter transportation costs"> + </div> + <div class="form-group"> + <label for="food">Food:</label> + <input type="number" id="food" placeholder="Enter food costs"> + </div> + <div class="form-group"> + <label for="entertainment">Entertainment:</label> + <input type="number" id="entertainment" placeholder="Enter entertainment costs"> + </div> + <div class="form-group"> + <label for="savings">Savings:</label> + <input type="number" id="savings" placeholder="Enter savings amount"> + </div> + </div> + + <button id="calculate">Calculate Budget</button> + </section> + + <section class="results-section"> + <h2>Your Budget Breakdown</h2> + <div class="results-grid"> + <div class="result-item"> + <span>Total Income</span> + <span id="total-income">$0.00</span> + </div> + <div class="result-item"> + <span>Total Expenses</span> + <span id="total-expenses">$0.00</span> + </div> + <div class="result-item"> + <span>Net Balance</span> + <span id="net-balance">$0.00</span> + </div> + <div class="result-item"> + <span>Savings Rate</span> + <span id="savings-rate">0%</span> + </div> + </div> + + <div class="chart-container"> + <canvas id="budgetChart"></canvas> + </div> + </section> +</main> + +<footer> + <p>BudgetWise - Take control of your finances</p> +</footer> \ No newline at end of file diff --git a/index.scroll b/index.scroll new file mode 100644 index 0000000..fb1d515 --- /dev/null +++ b/index.scroll @@ -0,0 +1,8 @@ +buildHtml +baseUrl https://budgetwise.scroll.pub +metaTags +editButton /edit.html +title BudgetWise - Detailed Budget Calculator +style.css +body.html +script.js \ No newline at end of file diff --git a/prompt.json b/prompt.json new file mode 100644 index 0000000..f1f531d --- /dev/null +++ b/prompt.json @@ -0,0 +1,25 @@ +{ + "id": "b1a325d3-55e4-4937-96b7-f8a558f36d0b", + "object": "chat.completion", + "created": 1735349528, + "model": "deepseek-chat", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "---domain---\nbudgetwise.scroll.pub\n---index.scroll---\nbuildHtml\nbaseUrl https://budgetwise.scroll.pub\nmetaTags\neditButton /edit.html\ntitle BudgetWise - Detailed Budget Calculator\nstyle.css\nbody.html\nscript.js\n---body.html---\n<header>\n <h1>BudgetWise</h1>\n <p>Your Detailed Budget Calculator</p>\n</header>\n\n<main>\n <section class=\"input-section\">\n <h2>Income & Expenses</h2>\n <div class=\"form-group\">\n <label for=\"income\">Monthly Income:</label>\n <input type=\"number\" id=\"income\" placeholder=\"Enter your monthly income\">\n </div>\n \n <div class=\"expenses\">\n <h3>Monthly Expenses</h3>\n <div class=\"form-group\">\n <label for=\"housing\">Housing:</label>\n <input type=\"number\" id=\"housing\" placeholder=\"Enter housing costs\">\n </div>\n <div class=\"form-group\">\n <label for=\"utilities\">Utilities:</label>\n <input type=\"number\" id=\"utilities\" placeholder=\"Enter utilities costs\">\n </div>\n <div class=\"form-group\">\n <label for=\"transportation\">Transportation:</label>\n <input type=\"number\" id=\"transportation\" placeholder=\"Enter transportation costs\">\n </div>\n <div class=\"form-group\">\n <label for=\"food\">Food:</label>\n <input type=\"number\" id=\"food\" placeholder=\"Enter food costs\">\n </div>\n <div class=\"form-group\">\n <label for=\"entertainment\">Entertainment:</label>\n <input type=\"number\" id=\"entertainment\" placeholder=\"Enter entertainment costs\">\n </div>\n <div class=\"form-group\">\n <label for=\"savings\">Savings:</label>\n <input type=\"number\" id=\"savings\" placeholder=\"Enter savings amount\">\n </div>\n </div>\n \n <button id=\"calculate\">Calculate Budget</button>\n </section>\n\n <section class=\"results-section\">\n <h2>Your Budget Breakdown</h2>\n <div class=\"results-grid\">\n <div class=\"result-item\">\n <span>Total Income</span>\n <span id=\"total-income\">$0.00</span>\n </div>\n <div class=\"result-item\">\n <span>Total Expenses</span>\n <span id=\"total-expenses\">$0.00</span>\n </div>\n <div class=\"result-item\">\n <span>Net Balance</span>\n <span id=\"net-balance\">$0.00</span>\n </div>\n <div class=\"result-item\">\n <span>Savings Rate</span>\n <span id=\"savings-rate\">0%</span>\n </div>\n </div>\n \n <div class=\"chart-container\">\n <canvas id=\"budgetChart\"></canvas>\n </div>\n </section>\n</main>\n\n<footer>\n <p>BudgetWise - Take control of your finances</p>\n</footer>\n---style.css---\n:root {\n --primary-color: #4a90e2;\n --secondary-color: #50e3c2;\n --background-color: #f5f7fa;\n --text-color: #333;\n --border-color: #ddd;\n}\n\nbody {\n font-family: 'Segoe UI', system-ui, sans-serif;\n line-height: 1.6;\n color: var(--text-color);\n background-color: var(--background-color);\n margin: 0;\n padding: 0;\n}\n\nheader {\n background: var(--primary-color);\n color: white;\n padding: 2rem;\n text-align: center;\n}\n\nh1 {\n margin: 0;\n font-size: 2.5rem;\n}\n\nmain {\n max-width: 1200px;\n margin: 2rem auto;\n padding: 0 1rem;\n}\n\n.input-section, .results-section {\n background: white;\n border-radius: 8px;\n padding: 2rem;\n margin-bottom: 2rem;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.form-group {\n margin-bottom: 1.5rem;\n}\n\nlabel {\n display: block;\n margin-bottom: 0.5rem;\n font-weight: 600;\n}\n\ninput {\n width: 100%;\n padding: 0.75rem;\n border: 1px solid var(--border-color);\n border-radius: 4px;\n font-size: 1rem;\n}\n\nbutton {\n background: var(--secondary-color);\n color: white;\n border: none;\n padding: 1rem 2rem;\n border-radius: 4px;\n cursor: pointer;\n font-size: 1rem;\n transition: background 0.3s ease;\n}\n\nbutton:hover {\n background: #3fc1a8;\n}\n\n.results-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n gap: 1rem;\n margin-bottom: 2rem;\n}\n\n.result-item {\n background: var(--background-color);\n padding: 1rem;\n border-radius: 4px;\n text-align: center;\n}\n\n.result-item span:first-child {\n display: block;\n font-weight: 600;\n margin-bottom: 0.5rem;\n}\n\n.chart-container {\n max-width: 800px;\n margin: 0 auto;\n}\n\nfooter {\n text-align: center;\n padding: 1rem;\n background: var(--primary-color);\n color: white;\n}\n\n@media (max-width: 768px) {\n h1 {\n font-size: 2rem;\n }\n \n .results-grid {\n grid-template-columns: 1fr;\n }\n}\n---script.js---\ndocument.addEventListener('DOMContentLoaded', function() {\n const incomeInput = document.getElementById('income');\n const housingInput = document.getElementById('housing');\n const utilitiesInput = document.getElementById('utilities');\n const transportationInput = document.getElementById('transportation');\n const foodInput = document.getElementById('food');\n const entertainmentInput = document.getElementById('entertainment');\n const savingsInput = document.getElementById('savings');\n \n const totalIncome = document.getElementById('total-income');\n const totalExpenses = document.getElementById('total-expenses');\n const netBalance = document.getElementById('net-balance');\n const savingsRate = document.getElementById('savings-rate');\n \n const calculateButton = document.getElementById('calculate');\n \n const ctx = document.getElementById('budgetChart').getContext('2d');\n let budgetChart;\n \n calculateButton.addEventListener('click', function() {\n const income = parseFloat(incomeInput.value) || 0;\n const housing = parseFloat(housingInput.value) || 0;\n const utilities = parseFloat(utilitiesInput.value) || 0;\n const transportation = parseFloat(transportationInput.value) || 0;\n const food = parseFloat(foodInput.value) || 0;\n const entertainment = parseFloat(entertainmentInput.value) || 0;\n const savings = parseFloat(savingsInput.value) || 0;\n \n const totalExpensesValue = housing + utilities + transportation + food + entertainment;\n const netBalanceValue = income - totalExpensesValue;\n const savingsRateValue = ((savings / income) * 100) || 0;\n \n totalIncome.textContent = `$${income.toFixed(2)}`;\n totalExpenses.textContent = `$${totalExpensesValue.toFixed(2)}`;\n netBalance.textContent = `$${netBalanceValue.toFixed(2)}`;\n savingsRate.textContent = `${savingsRateValue.toFixed(1)}%`;\n \n if (budgetChart) {\n budgetChart.destroy();\n }\n \n budgetChart = new Chart(ctx, {\n type: 'pie',\n data: {\n labels: ['Housing', 'Utilities', 'Transportation', 'Food', 'Entertainment', 'Savings'],\n datasets: [{\n label: 'Budget Breakdown',\n data: [housing, utilities, transportation, food, entertainment, savings],\n backgroundColor: [\n '#4a90e2',\n '#50e3c2',\n '#f5a623',\n '#7ed321',\n '#bd10e0',\n '#ff6b6b'\n ],\n borderWidth: 1\n }]\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n plugins: {\n legend: {\n position: 'bottom'\n }\n }\n }\n });\n });\n});\n---end---" + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 249, + "completion_tokens": 1919, + "total_tokens": 2168, + "prompt_cache_hit_tokens": 0, + "prompt_cache_miss_tokens": 249 + }, + "system_fingerprint": "fp_f1afce2943" +} \ No newline at end of file diff --git a/readme.scroll b/readme.scroll new file mode 100644 index 0000000..5abe4c7 --- /dev/null +++ b/readme.scroll @@ -0,0 +1,2 @@ +# budgetwise2.scroll.pub +Website generated by DeepSeek from prompt: Create a website that is a budget calculator, make it as detailed as possible \ No newline at end of file diff --git a/script.js b/script.js new file mode 100644 index 0000000..2979e61 --- /dev/null +++ b/script.js @@ -0,0 +1,71 @@ +document.addEventListener('DOMContentLoaded', function() { + const incomeInput = document.getElementById('income'); + const housingInput = document.getElementById('housing'); + const utilitiesInput = document.getElementById('utilities'); + const transportationInput = document.getElementById('transportation'); + const foodInput = document.getElementById('food'); + const entertainmentInput = document.getElementById('entertainment'); + const savingsInput = document.getElementById('savings'); + + const totalIncome = document.getElementById('total-income'); + const totalExpenses = document.getElementById('total-expenses'); + const netBalance = document.getElementById('net-balance'); + const savingsRate = document.getElementById('savings-rate'); + + const calculateButton = document.getElementById('calculate'); + + const ctx = document.getElementById('budgetChart').getContext('2d'); + let budgetChart; + + calculateButton.addEventListener('click', function() { + const income = parseFloat(incomeInput.value) || 0; + const housing = parseFloat(housingInput.value) || 0; + const utilities = parseFloat(utilitiesInput.value) || 0; + const transportation = parseFloat(transportationInput.value) || 0; + const food = parseFloat(foodInput.value) || 0; + const entertainment = parseFloat(entertainmentInput.value) || 0; + const savings = parseFloat(savingsInput.value) || 0; + + const totalExpensesValue = housing + utilities + transportation + food + entertainment; + const netBalanceValue = income - totalExpensesValue; + const savingsRateValue = ((savings / income) * 100) || 0; + + totalIncome.textContent = `$${income.toFixed(2)}`; + totalExpenses.textContent = `$${totalExpensesValue.toFixed(2)}`; + netBalance.textContent = `$${netBalanceValue.toFixed(2)}`; + savingsRate.textContent = `${savingsRateValue.toFixed(1)}%`; + + if (budgetChart) { + budgetChart.destroy(); + } + + budgetChart = new Chart(ctx, { + type: 'pie', + data: { + labels: ['Housing', 'Utilities', 'Transportation', 'Food', 'Entertainment', 'Savings'], + datasets: [{ + label: 'Budget Breakdown', + data: [housing, utilities, transportation, food, entertainment, savings], + backgroundColor: [ + '#4a90e2', + '#50e3c2', + '#f5a623', + '#7ed321', + '#bd10e0', + '#ff6b6b' + ], + borderWidth: 1 + }] + }, + options: { + responsive: true, + maintainAspectRatio: false, + plugins: { + legend: { + position: 'bottom' + } + } + } + }); + }); +}); \ No newline at end of file diff --git a/style.css b/style.css new file mode 100644 index 0000000..2ae806c --- /dev/null +++ b/style.css @@ -0,0 +1,117 @@ +:root { + --primary-color: #4a90e2; + --secondary-color: #50e3c2; + --background-color: #f5f7fa; + --text-color: #333; + --border-color: #ddd; +} + +body { + font-family: 'Segoe UI', system-ui, sans-serif; + line-height: 1.6; + color: var(--text-color); + background-color: var(--background-color); + margin: 0; + padding: 0; +} + +header { + background: var(--primary-color); + color: white; + padding: 2rem; + text-align: center; +} + +h1 { + margin: 0; + font-size: 2.5rem; +} + +main { + max-width: 1200px; + margin: 2rem auto; + padding: 0 1rem; +} + +.input-section, .results-section { + background: white; + border-radius: 8px; + padding: 2rem; + margin-bottom: 2rem; + box-shadow: 0 2px 4px rgba(0,0,0,0.1); +} + +.form-group { + margin-bottom: 1.5rem; +} + +label { + display: block; + margin-bottom: 0.5rem; + font-weight: 600; +} + +input { + width: 100%; + padding: 0.75rem; + border: 1px solid var(--border-color); + border-radius: 4px; + font-size: 1rem; +} + +button { + background: var(--secondary-color); + color: white; + border: none; + padding: 1rem 2rem; + border-radius: 4px; + cursor: pointer; + font-size: 1rem; + transition: background 0.3s ease; +} + +button:hover { + background: #3fc1a8; +} + +.results-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 1rem; + margin-bottom: 2rem; +} + +.result-item { + background: var(--background-color); + padding: 1rem; + border-radius: 4px; + text-align: center; +} + +.result-item span:first-child { + display: block; + font-weight: 600; + margin-bottom: 0.5rem; +} + +.chart-container { + max-width: 800px; + margin: 0 auto; +} + +footer { + text-align: center; + padding: 1rem; + background: var(--primary-color); + color: white; +} + +@media (max-width: 768px) { + h1 { + font-size: 2rem; + } + + .results-grid { + grid-template-columns: 1fr; + } +} \ No newline at end of file