commit 44e881be953f17fcd62a2749bdbdce4f2123c9e0
Author: root <root@hub.scroll.pub>
Date: 2024-12-27 19:10:48 +0000
Subject: Initial commit
diff --git a/body.html b/body.html
new file mode 100644
index 0000000..5a2b78c
--- /dev/null
+++ b/body.html
@@ -0,0 +1,61 @@
+<header>
+ <h1>PhD vs OnlyFans Calculator</h1>
+ <p class="tagline">Make an informed decision about your academic future</p>
+</header>
+
+<main>
+ <section class="calculator">
+ <div class="input-group">
+ <h2>Current PhD Situation</h2>
+ <label for="stipend">Annual Stipend ($)</label>
+ <input type="number" id="stipend" placeholder="25000">
+
+ <label for="years-left">Years Left in Program</label>
+ <input type="number" id="years-left" placeholder="3">
+
+ <label for="stress-level">Current Stress Level (1-10)</label>
+ <input type="range" id="stress-level" min="1" max="10" value="7">
+ </div>
+
+ <div class="input-group">
+ <h2>OnlyFans Potential</h2>
+ <label for="followers">Social Media Followers</label>
+ <input type="number" id="followers" placeholder="5000">
+
+ <label for="content-hours">Hours Available for Content/Week</label>
+ <input type="number" id="content-hours" placeholder="20">
+
+ <label for="comfort-level">Content Comfort Level (1-10)</label>
+ <input type="range" id="comfort-level" min="1" max="10" value="5">
+ </div>
+
+ <button id="calculate" class="gradient-btn">Calculate Career Path</button>
+
+ <div id="result" class="hidden">
+ <h2>Analysis Results</h2>
+ <div class="result-cards">
+ <div class="card phd">
+ <h3>PhD Path</h3>
+ <p class="projected">Projected 5-Year Earnings: $<span id="phd-earnings">0</span></p>
+ <div class="meter">
+ <div id="phd-meter" class="meter-fill"></div>
+ </div>
+ </div>
+
+ <div class="card onlyfans">
+ <h3>OnlyFans Path</h3>
+ <p class="projected">Projected 5-Year Earnings: $<span id="of-earnings">0</span></p>
+ <div class="meter">
+ <div id="of-meter" class="meter-fill"></div>
+ </div>
+ </div>
+ </div>
+
+ <p id="recommendation" class="recommendation"></p>
+ </div>
+ </section>
+</main>
+
+<footer>
+ <p>This is a satirical calculator for entertainment purposes only. Please make career decisions thoughtfully.</p>
+</footer>
diff --git a/index.scroll b/index.scroll
new file mode 100644
index 0000000..08398d6
--- /dev/null
+++ b/index.scroll
@@ -0,0 +1,8 @@
+buildHtml
+baseUrl https://phdonlyfans.scroll.pub
+metaTags
+editButton /edit.html
+title PhD vs OnlyFans Career Calculator
+style.css
+body.html
+script.js
diff --git a/prompt.json b/prompt.json
new file mode 100644
index 0000000..cb61fff
--- /dev/null
+++ b/prompt.json
@@ -0,0 +1,20 @@
+{
+ "id": "msg_01HL9WNEuGcRVaykPGv4KvC8",
+ "type": "message",
+ "role": "assistant",
+ "model": "claude-3-5-sonnet-20241022",
+ "content": [
+ {
+ "type": "text",
+ "text": "Here's a creative implementation:\n\n---domain---\nphdonlyfans.scroll.pub\n\n---index.scroll---\nbuildHtml\nbaseUrl https://phdonlyfans.scroll.pub\nmetaTags\neditButton /edit.html\ntitle PhD vs OnlyFans Career Calculator\nstyle.css\nbody.html\nscript.js\n\n---body.html---\n<header>\n <h1>PhD vs OnlyFans Calculator</h1>\n <p class=\"tagline\">Make an informed decision about your academic future</p>\n</header>\n\n<main>\n <section class=\"calculator\">\n <div class=\"input-group\">\n <h2>Current PhD Situation</h2>\n <label for=\"stipend\">Annual Stipend ($)</label>\n <input type=\"number\" id=\"stipend\" placeholder=\"25000\">\n \n <label for=\"years-left\">Years Left in Program</label>\n <input type=\"number\" id=\"years-left\" placeholder=\"3\">\n \n <label for=\"stress-level\">Current Stress Level (1-10)</label>\n <input type=\"range\" id=\"stress-level\" min=\"1\" max=\"10\" value=\"7\">\n </div>\n\n <div class=\"input-group\">\n <h2>OnlyFans Potential</h2>\n <label for=\"followers\">Social Media Followers</label>\n <input type=\"number\" id=\"followers\" placeholder=\"5000\">\n \n <label for=\"content-hours\">Hours Available for Content/Week</label>\n <input type=\"number\" id=\"content-hours\" placeholder=\"20\">\n \n <label for=\"comfort-level\">Content Comfort Level (1-10)</label>\n <input type=\"range\" id=\"comfort-level\" min=\"1\" max=\"10\" value=\"5\">\n </div>\n\n <button id=\"calculate\" class=\"gradient-btn\">Calculate Career Path</button>\n\n <div id=\"result\" class=\"hidden\">\n <h2>Analysis Results</h2>\n <div class=\"result-cards\">\n <div class=\"card phd\">\n <h3>PhD Path</h3>\n <p class=\"projected\">Projected 5-Year Earnings: $<span id=\"phd-earnings\">0</span></p>\n <div class=\"meter\">\n <div id=\"phd-meter\" class=\"meter-fill\"></div>\n </div>\n </div>\n \n <div class=\"card onlyfans\">\n <h3>OnlyFans Path</h3>\n <p class=\"projected\">Projected 5-Year Earnings: $<span id=\"of-earnings\">0</span></p>\n <div class=\"meter\">\n <div id=\"of-meter\" class=\"meter-fill\"></div>\n </div>\n </div>\n </div>\n \n <p id=\"recommendation\" class=\"recommendation\"></p>\n </div>\n </section>\n</main>\n\n<footer>\n <p>This is a satirical calculator for entertainment purposes only. Please make career decisions thoughtfully.</p>\n</footer>\n\n---style.css---\n:root {\n --gradient-1: #FF69B4;\n --gradient-2: #4B0082;\n --card-bg: rgba(255, 255, 255, 0.1);\n --text-color: #fff;\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nbody {\n font-family: 'Segoe UI', system-ui, sans-serif;\n line-height: 1.6;\n color: var(--text-color);\n min-height: 100vh;\n background: linear-gradient(135deg, var(--gradient-1), var(--gradient-2));\n padding: 2rem;\n}\n\nheader {\n text-align: center;\n margin-bottom: 3rem;\n}\n\nh1 {\n font-size: 2.5rem;\n margin-bottom: 0.5rem;\n text-shadow: 2px 2px 4px rgba(0,0,0,0.3);\n}\n\n.tagline {\n font-size: 1.2rem;\n opacity: 0.9;\n}\n\n.calculator {\n max-width: 800px;\n margin: 0 auto;\n padding: 2rem;\n background: rgba(255, 255, 255, 0.1);\n backdrop-filter: blur(10px);\n border-radius: 20px;\n box-shadow: 0 8px 32px rgba(0,0,0,0.1);\n}\n\n.input-group {\n margin-bottom: 2rem;\n}\n\nh2 {\n margin-bottom: 1rem;\n color: #fff;\n}\n\nlabel {\n display: block;\n margin: 1rem 0 0.5rem;\n}\n\ninput {\n width: 100%;\n padding: 0.8rem;\n border: none;\n border-radius: 8px;\n background: rgba(255, 255, 255, 0.2);\n color: white;\n font-size: 1rem;\n}\n\ninput[type=\"range\"] {\n height: 2px;\n background: rgba(255, 255, 255, 0.3);\n cursor: pointer;\n}\n\n.gradient-btn {\n display: block;\n width: 100%;\n padding: 1rem;\n margin: 2rem 0;\n border: none;\n border-radius: 8px;\n background: linear-gradient(45deg, var(--gradient-1), var(--gradient-2));\n color: white;\n font-size: 1.2rem;\n cursor: pointer;\n transition: transform 0.3s ease;\n}\n\n.gradient-btn:hover {\n transform: translateY(-2px);\n}\n\n.result-cards {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 2rem;\n margin: 2rem 0;\n}\n\n.card {\n background: var(--card-bg);\n padding: 1.5rem;\n border-radius: 12px;\n text-align: center;\n}\n\n.meter {\n height: 8px;\n background: rgba(255, 255, 255, 0.2);\n border-radius: 4px;\n margin-top: 1rem;\n overflow: hidden;\n}\n\n.meter-fill {\n height: 100%;\n width: 0;\n background: linear-gradient(90deg, var(--gradient-1), var(--gradient-2));\n transition: width 1s ease-in-out;\n}\n\n.recommendation {\n text-align: center;\n font-size: 1.2rem;\n margin-top: 2rem;\n padding: 1rem;\n background: rgba(255, 255, 255, 0.1);\n border-radius: 8px;\n}\n\n.hidden {\n display: none;\n}\n\nfooter {\n text-align: center;\n margin-top: 3rem;\n opacity: 0.7;\n font-size: 0.9rem;\n}\n\n@media (max-width: 600px) {\n body {\n padding: 1rem;\n }\n \n .calculator {\n padding: 1rem;\n }\n \n h1 {\n font-size: 2rem;\n }\n}\n\n---script.js---\ndocument.addEventListener('DOMContentLoaded', () => {\n const calculateBtn = document.getElementById('calculate');\n const resultDiv = document.getElementById('result');\n \n calculateBtn.addEventListener('click', () => {\n const stipend = parseFloat(document.getElementById('stipend').value) || 25000;\n const yearsLeft = parseFloat(document.getElementById('years-left').value) || 3;\n const stressLevel = parseFloat(document.getElementById('stress-level').value);\n const followers = parseFloat(document.getElementById('followers').value) || 0;\n const contentHours = parseFloat(document.getElementById('content-hours').value) || 0;\n const comfortLevel = parseFloat(document.getElementById('comfort-level').value);\n \n // Calculate PhD potential\n const phdScore = calculatePhDScore(stipend, yearsLeft, stressLevel);\n const ofScore = calculateOnlyFansScore(followers, contentHours, comfortLevel);\n \n // Update UI\n resultDiv.classList.remove('hidden');\n updateMeters(phdScore, ofScore);\n updateEarnings(phdScore, ofScore);\n updateRecommendation(phdScore, ofScore);\n });\n \n function calculatePhDScore(stipend, yearsLeft, stressLevel) {\n const yearlyValue = stipend * (1 - (stressLevel / 20));\n const futureValue = yearlyValue * (5 - yearsLeft) * 1.1; // 10% increase post-PhD\n return Math.max(0, Math.min(100, (futureValue / 300000) * 100));\n }\n \n function calculateOnlyFansScore(followers, hours, comfort) {\n const potentialSubs = followers * 0.05; // 5% conversion rate\n const monthlyRevenue = potentialSubs * 15 * (comfort / 10); // $15 average sub\n const yearlyRevenue = monthlyRevenue * 12 * (hours / 40); // Scale by hours\n return Math.max(0, Math.min(100, (yearlyRevenue / 300000) * 100));\n }\n \n function updateMeters(phdScore, ofScore) {\n document.getElementById('phd-meter').style.width = `${phdScore}%`;\n document.getElementById('of-meter').style.width = `${ofScore}%`;\n }\n \n function updateEarnings(phdScore, ofScore) {\n const phdEarnings = Math.round(phdScore * 3000);\n const ofEarnings = Math.round(ofScore * 3000);\n \n document.getElementById('phd-earnings').textContent = phdEarnings.toLocaleString();\n document.getElementById('of-earnings').textContent = ofEarnings.toLocaleString();\n }\n \n function updateRecommendation(phdScore, ofScore) {\n const recommendation = document.getElementById('recommendation');\n const diff = Math.abs(phdScore - ofScore);\n \n if (diff < 10) {\n recommendation.textContent = \"This is a tough call! Consider your personal values and long-term goals.\";\n } else if (phdScore > ofScore) {\n recommendation.textContent = \"The numbers suggest sticking with your PhD might be more profitable long-term.\";\n } else {\n recommendation.textContent = \"The numbers suggest OnlyFans could be more lucrative, but remember to consider all life factors!\";\n }\n }\n});\n\n---end---\n\nThis implementation features:\n\n1. A modern, gradient-based design with glassmorphism effects\n2. Responsive layout that works on all devices\n3. Interactive sliders and input fields\n4. Real-time calculations with animated results\n5. Professional yet playful tone\n6. Accessibility features\n7. Smooth animations and transitions\n8. Clear recommendations based on input\n9. Thoughtful UI/UX with proper spacing and typography\n10. Satirical but useful calculations\n\nThe domain name \"phdonlyfans\" is memorable, relevant, and slightly humorous while remaining professional enough for the purpose. The calculator takes various factors into account including current stipend, stress levels, social media following, and content creation capacity to provide a comparative analysis between the two career paths."
+ }
+ ],
+ "stop_reason": "end_turn",
+ "stop_sequence": null,
+ "usage": {
+ "input_tokens": 307,
+ "cache_creation_input_tokens": 0,
+ "cache_read_input_tokens": 0,
+ "output_tokens": 2945
+ }
+}
\ No newline at end of file
diff --git a/readme.scroll b/readme.scroll
new file mode 100644
index 0000000..95d3a9a
--- /dev/null
+++ b/readme.scroll
@@ -0,0 +1,2 @@
+# phdonlyfans1.scroll.pub
+Website generated by Claude from prompt: I want a website that will help decide if I should drout of my PhD program to do only Fans. So it should have some numerical tools and interactivity. Be creative.
\ No newline at end of file
diff --git a/script.js b/script.js
new file mode 100644
index 0000000..55a9d8d
--- /dev/null
+++ b/script.js
@@ -0,0 +1,62 @@
+document.addEventListener('DOMContentLoaded', () => {
+ const calculateBtn = document.getElementById('calculate');
+ const resultDiv = document.getElementById('result');
+
+ calculateBtn.addEventListener('click', () => {
+ const stipend = parseFloat(document.getElementById('stipend').value) || 25000;
+ const yearsLeft = parseFloat(document.getElementById('years-left').value) || 3;
+ const stressLevel = parseFloat(document.getElementById('stress-level').value);
+ const followers = parseFloat(document.getElementById('followers').value) || 0;
+ const contentHours = parseFloat(document.getElementById('content-hours').value) || 0;
+ const comfortLevel = parseFloat(document.getElementById('comfort-level').value);
+
+ // Calculate PhD potential
+ const phdScore = calculatePhDScore(stipend, yearsLeft, stressLevel);
+ const ofScore = calculateOnlyFansScore(followers, contentHours, comfortLevel);
+
+ // Update UI
+ resultDiv.classList.remove('hidden');
+ updateMeters(phdScore, ofScore);
+ updateEarnings(phdScore, ofScore);
+ updateRecommendation(phdScore, ofScore);
+ });
+
+ function calculatePhDScore(stipend, yearsLeft, stressLevel) {
+ const yearlyValue = stipend * (1 - (stressLevel / 20));
+ const futureValue = yearlyValue * (5 - yearsLeft) * 1.1; // 10% increase post-PhD
+ return Math.max(0, Math.min(100, (futureValue / 300000) * 100));
+ }
+
+ function calculateOnlyFansScore(followers, hours, comfort) {
+ const potentialSubs = followers * 0.05; // 5% conversion rate
+ const monthlyRevenue = potentialSubs * 15 * (comfort / 10); // $15 average sub
+ const yearlyRevenue = monthlyRevenue * 12 * (hours / 40); // Scale by hours
+ return Math.max(0, Math.min(100, (yearlyRevenue / 300000) * 100));
+ }
+
+ function updateMeters(phdScore, ofScore) {
+ document.getElementById('phd-meter').style.width = `${phdScore}%`;
+ document.getElementById('of-meter').style.width = `${ofScore}%`;
+ }
+
+ function updateEarnings(phdScore, ofScore) {
+ const phdEarnings = Math.round(phdScore * 3000);
+ const ofEarnings = Math.round(ofScore * 3000);
+
+ document.getElementById('phd-earnings').textContent = phdEarnings.toLocaleString();
+ document.getElementById('of-earnings').textContent = ofEarnings.toLocaleString();
+ }
+
+ function updateRecommendation(phdScore, ofScore) {
+ const recommendation = document.getElementById('recommendation');
+ const diff = Math.abs(phdScore - ofScore);
+
+ if (diff < 10) {
+ recommendation.textContent = "This is a tough call! Consider your personal values and long-term goals.";
+ } else if (phdScore > ofScore) {
+ recommendation.textContent = "The numbers suggest sticking with your PhD might be more profitable long-term.";
+ } else {
+ recommendation.textContent = "The numbers suggest OnlyFans could be more lucrative, but remember to consider all life factors!";
+ }
+ }
+});
diff --git a/style.css b/style.css
new file mode 100644
index 0000000..537da67
--- /dev/null
+++ b/style.css
@@ -0,0 +1,158 @@
+:root {
+ --gradient-1: #FF69B4;
+ --gradient-2: #4B0082;
+ --card-bg: rgba(255, 255, 255, 0.1);
+ --text-color: #fff;
+}
+
+* {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+}
+
+body {
+ font-family: 'Segoe UI', system-ui, sans-serif;
+ line-height: 1.6;
+ color: var(--text-color);
+ min-height: 100vh;
+ background: linear-gradient(135deg, var(--gradient-1), var(--gradient-2));
+ padding: 2rem;
+}
+
+header {
+ text-align: center;
+ margin-bottom: 3rem;
+}
+
+h1 {
+ font-size: 2.5rem;
+ margin-bottom: 0.5rem;
+ text-shadow: 2px 2px 4px rgba(0,0,0,0.3);
+}
+
+.tagline {
+ font-size: 1.2rem;
+ opacity: 0.9;
+}
+
+.calculator {
+ max-width: 800px;
+ margin: 0 auto;
+ padding: 2rem;
+ background: rgba(255, 255, 255, 0.1);
+ backdrop-filter: blur(10px);
+ border-radius: 20px;
+ box-shadow: 0 8px 32px rgba(0,0,0,0.1);
+}
+
+.input-group {
+ margin-bottom: 2rem;
+}
+
+h2 {
+ margin-bottom: 1rem;
+ color: #fff;
+}
+
+label {
+ display: block;
+ margin: 1rem 0 0.5rem;
+}
+
+input {
+ width: 100%;
+ padding: 0.8rem;
+ border: none;
+ border-radius: 8px;
+ background: rgba(255, 255, 255, 0.2);
+ color: white;
+ font-size: 1rem;
+}
+
+input[type="range"] {
+ height: 2px;
+ background: rgba(255, 255, 255, 0.3);
+ cursor: pointer;
+}
+
+.gradient-btn {
+ display: block;
+ width: 100%;
+ padding: 1rem;
+ margin: 2rem 0;
+ border: none;
+ border-radius: 8px;
+ background: linear-gradient(45deg, var(--gradient-1), var(--gradient-2));
+ color: white;
+ font-size: 1.2rem;
+ cursor: pointer;
+ transition: transform 0.3s ease;
+}
+
+.gradient-btn:hover {
+ transform: translateY(-2px);
+}
+
+.result-cards {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+ gap: 2rem;
+ margin: 2rem 0;
+}
+
+.card {
+ background: var(--card-bg);
+ padding: 1.5rem;
+ border-radius: 12px;
+ text-align: center;
+}
+
+.meter {
+ height: 8px;
+ background: rgba(255, 255, 255, 0.2);
+ border-radius: 4px;
+ margin-top: 1rem;
+ overflow: hidden;
+}
+
+.meter-fill {
+ height: 100%;
+ width: 0;
+ background: linear-gradient(90deg, var(--gradient-1), var(--gradient-2));
+ transition: width 1s ease-in-out;
+}
+
+.recommendation {
+ text-align: center;
+ font-size: 1.2rem;
+ margin-top: 2rem;
+ padding: 1rem;
+ background: rgba(255, 255, 255, 0.1);
+ border-radius: 8px;
+}
+
+.hidden {
+ display: none;
+}
+
+footer {
+ text-align: center;
+ margin-top: 3rem;
+ opacity: 0.7;
+ font-size: 0.9rem;
+}
+
+@media (max-width: 600px) {
+ body {
+ padding: 1rem;
+ }
+
+ .calculator {
+ padding: 1rem;
+ }
+
+ h1 {
+ font-size: 2rem;
+ }
+}