commit 231f2feadc5a6c561c7cd42afd5a68456979d40d
Author: root <root@hub.scroll.pub> Date: 2025-01-05 05:35:55 +0000 Subject: Initial commit diff --git a/body.html b/body.html new file mode 100644 index 0000000..16fb14b --- /dev/null +++ b/body.html @@ -0,0 +1,63 @@ +<header> + <nav> + <h1>Should I Drop My PhD?</h1> + </nav> +</header> + +<main> + <section class="hero"> + <h2>Let's Help You Make This Important Decision</h2> + <p>A structured approach to evaluate your PhD journey</p> + </section> + + <section class="decision-tool"> + <div class="progress-bar"> + <div class="progress"></div> + </div> + + <div class="question-container"> + <div class="question current" data-weight="3"> + <h3>How passionate are you about your research topic?</h3> + <div class="options"> + <button data-value="1">Not at all</button> + <button data-value="2">Somewhat</button> + <button data-value="3">Moderately</button> + <button data-value="4">Very</button> + <button data-value="5">Extremely</button> + </div> + </div> + + <div class="question" data-weight="2"> + <h3>How is your relationship with your advisor?</h3> + <div class="options"> + <button data-value="1">Very poor</button> + <button data-value="2">Poor</button> + <button data-value="3">Neutral</button> + <button data-value="4">Good</button> + <button data-value="5">Excellent</button> + </div> + </div> + + <div class="question" data-weight="2"> + <h3>Are you experiencing financial strain?</h3> + <div class="options"> + <button data-value="5">None</button> + <button data-value="4">Little</button> + <button data-value="3">Moderate</button> + <button data-value="2">Significant</button> + <button data-value="1">Severe</button> + </div> + </div> + </div> + + <div class="result hidden"> + <h3>Your Analysis</h3> + <div class="result-content"></div> + <button class="restart-btn">Start Over</button> + </div> + </section> +</main> + +<footer> + <p>This tool is meant to help with reflection and should not be the sole basis for your decision.</p> +</footer> diff --git a/index.scroll b/index.scroll new file mode 100644 index 0000000..595da06 --- /dev/null +++ b/index.scroll @@ -0,0 +1,8 @@ +buildHtml +baseUrl https://phdchoice.scroll.pub +metaTags +editButton /edit.html +title Should I Drop My PhD? | PhD Decision Helper +style.css +body.html +script.js diff --git a/prompt.json b/prompt.json new file mode 100644 index 0000000..644315d --- /dev/null +++ b/prompt.json @@ -0,0 +1,20 @@ +{ + "id": "msg_0198rGScW9G1igfHTb3VAcFF", + "type": "message", + "role": "assistant", + "model": "claude-3-5-sonnet-20241022", + "content": [ + { + "type": "text", + "text": "I'll help create a decision-helper website for PhD students considering dropping out. For the domain, I suggest:\n\n---domain---\nphdchoice.scroll.pub\n\n---index.scroll---\nbuildHtml\nbaseUrl https://phdchoice.scroll.pub\nmetaTags\neditButton /edit.html\ntitle Should I Drop My PhD? | PhD Decision Helper\nstyle.css\nbody.html\nscript.js\n\n---body.html---\n<header>\n <nav>\n <h1>Should I Drop My PhD?</h1>\n </nav>\n</header>\n\n<main>\n <section class=\"hero\">\n <h2>Let's Help You Make This Important Decision</h2>\n <p>A structured approach to evaluate your PhD journey</p>\n </section>\n\n <section class=\"decision-tool\">\n <div class=\"progress-bar\">\n <div class=\"progress\"></div>\n </div>\n \n <div class=\"question-container\">\n <div class=\"question current\" data-weight=\"3\">\n <h3>How passionate are you about your research topic?</h3>\n <div class=\"options\">\n <button data-value=\"1\">Not at all</button>\n <button data-value=\"2\">Somewhat</button>\n <button data-value=\"3\">Moderately</button>\n <button data-value=\"4\">Very</button>\n <button data-value=\"5\">Extremely</button>\n </div>\n </div>\n\n <div class=\"question\" data-weight=\"2\">\n <h3>How is your relationship with your advisor?</h3>\n <div class=\"options\">\n <button data-value=\"1\">Very poor</button>\n <button data-value=\"2\">Poor</button>\n <button data-value=\"3\">Neutral</button>\n <button data-value=\"4\">Good</button>\n <button data-value=\"5\">Excellent</button>\n </div>\n </div>\n\n <div class=\"question\" data-weight=\"2\">\n <h3>Are you experiencing financial strain?</h3>\n <div class=\"options\">\n <button data-value=\"5\">None</button>\n <button data-value=\"4\">Little</button>\n <button data-value=\"3\">Moderate</button>\n <button data-value=\"2\">Significant</button>\n <button data-value=\"1\">Severe</button>\n </div>\n </div>\n </div>\n\n <div class=\"result hidden\">\n <h3>Your Analysis</h3>\n <div class=\"result-content\"></div>\n <button class=\"restart-btn\">Start Over</button>\n </div>\n </section>\n</main>\n\n<footer>\n <p>This tool is meant to help with reflection and should not be the sole basis for your decision.</p>\n</footer>\n\n---style.css---\n:root {\n --primary: #2a4365;\n --secondary: #4299e1;\n --accent: #90cdf4;\n --background: #f7fafc;\n --text: #2d3748;\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nbody {\n font-family: system-ui, -apple-system, sans-serif;\n line-height: 1.6;\n color: var(--text);\n background: var(--background);\n}\n\nheader {\n background: var(--primary);\n color: white;\n padding: 1.5rem;\n box-shadow: 0 4px 6px rgba(0,0,0,0.1);\n}\n\nh1 {\n font-size: 2rem;\n font-weight: 700;\n text-align: center;\n}\n\n.hero {\n text-align: center;\n padding: 4rem 1rem;\n background: linear-gradient(135deg, var(--secondary), var(--primary));\n color: white;\n}\n\n.hero h2 {\n font-size: 2.5rem;\n margin-bottom: 1rem;\n}\n\n.decision-tool {\n max-width: 800px;\n margin: 2rem auto;\n padding: 0 1rem;\n}\n\n.progress-bar {\n height: 8px;\n background: #e2e8f0;\n border-radius: 4px;\n margin: 2rem 0;\n overflow: hidden;\n}\n\n.progress {\n height: 100%;\n width: 0;\n background: var(--secondary);\n transition: width 0.3s ease;\n}\n\n.question {\n display: none;\n animation: fadeIn 0.5s ease;\n}\n\n.question.current {\n display: block;\n}\n\n.question h3 {\n font-size: 1.5rem;\n margin-bottom: 2rem;\n color: var(--primary);\n}\n\n.options {\n display: grid;\n gap: 1rem;\n}\n\nbutton {\n padding: 1rem 2rem;\n border: none;\n border-radius: 8px;\n background: white;\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n font-size: 1rem;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\nbutton:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 6px rgba(0,0,0,0.15);\n background: var(--accent);\n color: var(--primary);\n}\n\n.result {\n text-align: center;\n padding: 2rem;\n background: white;\n border-radius: 12px;\n box-shadow: 0 4px 6px rgba(0,0,0,0.1);\n}\n\n.hidden {\n display: none;\n}\n\n.restart-btn {\n margin-top: 2rem;\n background: var(--primary);\n color: white;\n}\n\nfooter {\n text-align: center;\n padding: 2rem;\n background: var(--primary);\n color: white;\n margin-top: 4rem;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(20px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n@media (max-width: 768px) {\n .hero h2 {\n font-size: 2rem;\n }\n \n .question h3 {\n font-size: 1.25rem;\n }\n \n button {\n padding: 0.75rem 1.5rem;\n }\n}\n\n---script.js---\ndocument.addEventListener('DOMContentLoaded', () => {\n const questions = document.querySelectorAll('.question');\n const progressBar = document.querySelector('.progress');\n const resultDiv = document.querySelector('.result');\n const resultContent = document.querySelector('.result-content');\n const restartBtn = document.querySelector('.restart-btn');\n \n let currentQuestion = 0;\n let scores = [];\n \n function updateProgress() {\n const progress = ((currentQuestion) / questions.length) * 100;\n progressBar.style.width = `${progress}%`;\n }\n \n function showResult() {\n const weightedSum = scores.reduce((acc, score, index) => {\n const weight = parseInt(questions[index].dataset.weight);\n return acc + (score * weight);\n }, 0);\n \n const totalWeight = Array.from(questions).reduce((acc, q) => \n acc + parseInt(q.dataset.weight), 0);\n \n const finalScore = (weightedSum / (totalWeight * 5)) * 100;\n \n let recommendation;\n if (finalScore >= 80) {\n recommendation = \"Based on your responses, you seem to be in a good position to continue your PhD. The challenges you're facing appear manageable.\";\n } else if (finalScore >= 60) {\n recommendation = \"You have some significant concerns, but they might be addressable. Consider discussing these with your advisor or department.\";\n } else {\n recommendation = \"You're facing several serious challenges. While the decision is yours, you might want to carefully evaluate if continuing serves your best interests.\";\n }\n \n questions.forEach(q => q.style.display = 'none');\n resultDiv.classList.remove('hidden');\n resultContent.innerHTML = `\n <p class=\"score\">Score: ${Math.round(finalScore)}%</p>\n <p class=\"recommendation\">${recommendation}</p>\n `;\n }\n \n document.addEventListener('click', (e) => {\n if (!e.target.matches('button[data-value]')) return;\n \n const value = parseInt(e.target.dataset.value);\n scores.push(value);\n \n if (currentQuestion < questions.length - 1) {\n questions[currentQuestion].classList.remove('current');\n currentQuestion++;\n questions[currentQuestion].classList.add('current');\n updateProgress();\n } else {\n showResult();\n }\n });\n \n restartBtn.addEventListener('click', () => {\n currentQuestion = 0;\n scores = [];\n resultDiv.classList.add('hidden');\n questions.forEach((q, i) => {\n q.style.display = i === 0 ? 'block' : 'none';\n if (i === 0) q.classList.add('current');\n });\n updateProgress();\n });\n \n updateProgress();\n});\n\n---end---\n\nThis creates a sleek, professional decision helper tool that guides users through important questions about their PhD journey. The design features smooth animations, a progress bar, and a weighted scoring system that provides nuanced recommendations. The interface is fully responsive and accessible, with clear visual hierarchy and intuitive interactions." + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 288, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 2485 + } +} \ No newline at end of file diff --git a/readme.scroll b/readme.scroll new file mode 100644 index 0000000..d670ce8 --- /dev/null +++ b/readme.scroll @@ -0,0 +1,2 @@ +# phdchoice.scroll.pub +Website generated by Claude from prompt: I want a website that will help me decide if I should drop out the ph.d \ No newline at end of file diff --git a/script.js b/script.js new file mode 100644 index 0000000..d213251 --- /dev/null +++ b/script.js @@ -0,0 +1,72 @@ +document.addEventListener('DOMContentLoaded', () => { + const questions = document.querySelectorAll('.question'); + const progressBar = document.querySelector('.progress'); + const resultDiv = document.querySelector('.result'); + const resultContent = document.querySelector('.result-content'); + const restartBtn = document.querySelector('.restart-btn'); + + let currentQuestion = 0; + let scores = []; + + function updateProgress() { + const progress = ((currentQuestion) / questions.length) * 100; + progressBar.style.width = `${progress}%`; + } + + function showResult() { + const weightedSum = scores.reduce((acc, score, index) => { + const weight = parseInt(questions[index].dataset.weight); + return acc + (score * weight); + }, 0); + + const totalWeight = Array.from(questions).reduce((acc, q) => + acc + parseInt(q.dataset.weight), 0); + + const finalScore = (weightedSum / (totalWeight * 5)) * 100; + + let recommendation; + if (finalScore >= 80) { + recommendation = "Based on your responses, you seem to be in a good position to continue your PhD. The challenges you're facing appear manageable."; + } else if (finalScore >= 60) { + recommendation = "You have some significant concerns, but they might be addressable. Consider discussing these with your advisor or department."; + } else { + recommendation = "You're facing several serious challenges. While the decision is yours, you might want to carefully evaluate if continuing serves your best interests."; + } + + questions.forEach(q => q.style.display = 'none'); + resultDiv.classList.remove('hidden'); + resultContent.innerHTML = ` + <p class="score">Score: ${Math.round(finalScore)}%</p> + <p class="recommendation">${recommendation}</p> + `; + } + + document.addEventListener('click', (e) => { + if (!e.target.matches('button[data-value]')) return; + + const value = parseInt(e.target.dataset.value); + scores.push(value); + + if (currentQuestion < questions.length - 1) { + questions[currentQuestion].classList.remove('current'); + currentQuestion++; + questions[currentQuestion].classList.add('current'); + updateProgress(); + } else { + showResult(); + } + }); + + restartBtn.addEventListener('click', () => { + currentQuestion = 0; + scores = []; + resultDiv.classList.add('hidden'); + questions.forEach((q, i) => { + q.style.display = i === 0 ? 'block' : 'none'; + if (i === 0) q.classList.add('current'); + }); + updateProgress(); + }); + + updateProgress(); +}); diff --git a/style.css b/style.css new file mode 100644 index 0000000..2435c1a --- /dev/null +++ b/style.css @@ -0,0 +1,149 @@ +:root { + --primary: #2a4365; + --secondary: #4299e1; + --accent: #90cdf4; + --background: #f7fafc; + --text: #2d3748; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: system-ui, -apple-system, sans-serif; + line-height: 1.6; + color: var(--text); + background: var(--background); +} + +header { + background: var(--primary); + color: white; + padding: 1.5rem; + box-shadow: 0 4px 6px rgba(0,0,0,0.1); +} + +h1 { + font-size: 2rem; + font-weight: 700; + text-align: center; +} + +.hero { + text-align: center; + padding: 4rem 1rem; + background: linear-gradient(135deg, var(--secondary), var(--primary)); + color: white; +} + +.hero h2 { + font-size: 2.5rem; + margin-bottom: 1rem; +} + +.decision-tool { + max-width: 800px; + margin: 2rem auto; + padding: 0 1rem; +} + +.progress-bar { + height: 8px; + background: #e2e8f0; + border-radius: 4px; + margin: 2rem 0; + overflow: hidden; +} + +.progress { + height: 100%; + width: 0; + background: var(--secondary); + transition: width 0.3s ease; +} + +.question { + display: none; + animation: fadeIn 0.5s ease; +} + +.question.current { + display: block; +} + +.question h3 { + font-size: 1.5rem; + margin-bottom: 2rem; + color: var(--primary); +} + +.options { + display: grid; + gap: 1rem; +} + +button { + padding: 1rem 2rem; + border: none; + border-radius: 8px; + background: white; + box-shadow: 0 2px 4px rgba(0,0,0,0.1); + font-size: 1rem; + cursor: pointer; + transition: all 0.3s ease; +} + +button:hover { + transform: translateY(-2px); + box-shadow: 0 4px 6px rgba(0,0,0,0.15); + background: var(--accent); + color: var(--primary); +} + +.result { + text-align: center; + padding: 2rem; + background: white; + border-radius: 12px; + box-shadow: 0 4px 6px rgba(0,0,0,0.1); +} + +.hidden { + display: none; +} + +.restart-btn { + margin-top: 2rem; + background: var(--primary); + color: white; +} + +footer { + text-align: center; + padding: 2rem; + background: var(--primary); + color: white; + margin-top: 4rem; +} + +@keyframes fadeIn { + from { opacity: 0; transform: translateY(20px); } + to { opacity: 1; transform: translateY(0); } +} + +@media (max-width: 768px) { + .hero h2 { + font-size: 2rem; + } + + .question h3 { + font-size: 1.25rem; + } + + button { + padding: 0.75rem 1.5rem; + } +}