commit d4a7e6ebd2837dae2da67e4ae46eb78437d7710a
Author: root <root@hub.scroll.pub> Date: 2025-01-03 10:12:00 +0000 Subject: Initial commit diff --git a/body.html b/body.html new file mode 100644 index 0000000..f4d64c1 --- /dev/null +++ b/body.html @@ -0,0 +1,81 @@ +<header class="header"> + <nav class="nav"> + <div class="logo">{"<CodeCraftsman/>"}</div> + <div class="nav-links"> + <a href="#home">Home</a> + <a href="#about">About</a> + <a href="#skills">Skills</a> + <a href="#projects">Projects</a> + <a href="#blog">Blog</a> + </div> + <button class="theme-toggle" aria-label="Toggle dark mode">🌓</button> + </nav> +</header> + +<main> + <section id="home" class="hero"> + <div class="container"> + <h1>Hello, I'm <span class="highlight">Alex Chen</span></h1> + <p class="typewriter">Full Stack Developer & Problem Solver</p> + <div class="cta-buttons"> + <a href="#projects" class="btn primary">View Projects</a> + <a href="#contact" class="btn secondary">Contact Me</a> + </div> + </div> + </section> + + <section id="about" class="about"> + <div class="container"> + <h2>About Me</h2> + <div class="about-content"> + <div class="about-text"> + <p>With over 8 years of experience in software development, I specialize in creating elegant solutions to complex problems. My passion lies in clean code, performance optimization, and building scalable applications.</p> + </div> + <div class="skills-grid"> + <div class="skill-card">Backend</div> + <div class="skill-card">Frontend</div> + <div class="skill-card">DevOps</div> + <div class="skill-card">Architecture</div> + </div> + </div> + </section> + + <section id="projects" class="projects"> + <div class="container"> + <h2>Featured Projects</h2> + <div class="project-grid"> + <article class="project-card"> + <h3>Cloud Platform</h3> + <p>Scalable cloud infrastructure management system</p> + <div class="tech-stack"> + <span>Go</span> + <span>Kubernetes</span> + <span>React</span> + </div> + </article> + <article class="project-card"> + <h3>AI Assistant</h3> + <p>Natural language processing chatbot</p> + <div class="tech-stack"> + <span>Python</span> + <span>TensorFlow</span> + <span>FastAPI</span> + </div> + </article> + </div> + </div> + </section> +</main> + +<footer class="footer"> + <div class="container"> + <div class="footer-content"> + <div class="social-links"> + <a href="#" aria-label="GitHub">GitHub</a> + <a href="#" aria-label="LinkedIn">LinkedIn</a> + <a href="#" aria-label="Twitter">Twitter</a> + </div> + <p>Built with passion and code</p> + </div> + </div> +</footer> diff --git a/index.scroll b/index.scroll new file mode 100644 index 0000000..787c5cb --- /dev/null +++ b/index.scroll @@ -0,0 +1,10 @@ +buildHtml +baseUrl https://coder.scroll.pub +metaTags + description A professional programmer's personal website showcasing skills, projects, and thoughts on software development + keywords programming, software development, coding, developer portfolio +editButton /edit.html +title Code Craftsman +style.css +body.html +script.js diff --git a/prompt.json b/prompt.json new file mode 100644 index 0000000..d2759ab --- /dev/null +++ b/prompt.json @@ -0,0 +1,20 @@ +{ + "id": "msg_0152LLGsTvvFUbMHWnpdHxj8", + "type": "message", + "role": "assistant", + "model": "claude-3-5-sonnet-20241022", + "content": [ + { + "type": "text", + "text": "I'll create a personal website for a programmer with a clean, professional design.\n\n---domain---\ncoder.scroll.pub\n\n---index.scroll---\nbuildHtml\nbaseUrl https://coder.scroll.pub\nmetaTags\n description A professional programmer's personal website showcasing skills, projects, and thoughts on software development\n keywords programming, software development, coding, developer portfolio\neditButton /edit.html\ntitle Code Craftsman\nstyle.css\nbody.html\nscript.js\n\n---body.html---\n<header class=\"header\">\n <nav class=\"nav\">\n <div class=\"logo\">{\"<CodeCraftsman/>\"}</div>\n <div class=\"nav-links\">\n <a href=\"#home\">Home</a>\n <a href=\"#about\">About</a>\n <a href=\"#skills\">Skills</a>\n <a href=\"#projects\">Projects</a>\n <a href=\"#blog\">Blog</a>\n </div>\n <button class=\"theme-toggle\" aria-label=\"Toggle dark mode\">🌓</button>\n </nav>\n</header>\n\n<main>\n <section id=\"home\" class=\"hero\">\n <div class=\"container\">\n <h1>Hello, I'm <span class=\"highlight\">Alex Chen</span></h1>\n <p class=\"typewriter\">Full Stack Developer & Problem Solver</p>\n <div class=\"cta-buttons\">\n <a href=\"#projects\" class=\"btn primary\">View Projects</a>\n <a href=\"#contact\" class=\"btn secondary\">Contact Me</a>\n </div>\n </div>\n </section>\n\n <section id=\"about\" class=\"about\">\n <div class=\"container\">\n <h2>About Me</h2>\n <div class=\"about-content\">\n <div class=\"about-text\">\n <p>With over 8 years of experience in software development, I specialize in creating elegant solutions to complex problems. My passion lies in clean code, performance optimization, and building scalable applications.</p>\n </div>\n <div class=\"skills-grid\">\n <div class=\"skill-card\">Backend</div>\n <div class=\"skill-card\">Frontend</div>\n <div class=\"skill-card\">DevOps</div>\n <div class=\"skill-card\">Architecture</div>\n </div>\n </div>\n </section>\n\n <section id=\"projects\" class=\"projects\">\n <div class=\"container\">\n <h2>Featured Projects</h2>\n <div class=\"project-grid\">\n <article class=\"project-card\">\n <h3>Cloud Platform</h3>\n <p>Scalable cloud infrastructure management system</p>\n <div class=\"tech-stack\">\n <span>Go</span>\n <span>Kubernetes</span>\n <span>React</span>\n </div>\n </article>\n <article class=\"project-card\">\n <h3>AI Assistant</h3>\n <p>Natural language processing chatbot</p>\n <div class=\"tech-stack\">\n <span>Python</span>\n <span>TensorFlow</span>\n <span>FastAPI</span>\n </div>\n </article>\n </div>\n </div>\n </section>\n</main>\n\n<footer class=\"footer\">\n <div class=\"container\">\n <div class=\"footer-content\">\n <div class=\"social-links\">\n <a href=\"#\" aria-label=\"GitHub\">GitHub</a>\n <a href=\"#\" aria-label=\"LinkedIn\">LinkedIn</a>\n <a href=\"#\" aria-label=\"Twitter\">Twitter</a>\n </div>\n <p>Built with passion and code</p>\n </div>\n </div>\n</footer>\n\n---style.css---\n:root {\n --primary: #2563eb;\n --secondary: #3b82f6;\n --background: #ffffff;\n --text: #1f2937;\n --accent: #dbeafe;\n --transition: all 0.3s ease;\n}\n\n[data-theme=\"dark\"] {\n --primary: #3b82f6;\n --secondary: #60a5fa;\n --background: #0f172a;\n --text: #f1f5f9;\n --accent: #1e293b;\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nbody {\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n background: var(--background);\n color: var(--text);\n line-height: 1.6;\n transition: var(--transition);\n}\n\n.container {\n max-width: 1200px;\n margin: 0 auto;\n padding: 0 2rem;\n}\n\n.header {\n position: fixed;\n width: 100%;\n top: 0;\n background: rgba(255, 255, 255, 0.8);\n backdrop-filter: blur(10px);\n z-index: 1000;\n}\n\n.nav {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 1rem 2rem;\n}\n\n.logo {\n font-family: monospace;\n font-size: 1.5rem;\n font-weight: bold;\n color: var(--primary);\n}\n\n.nav-links a {\n margin-left: 2rem;\n text-decoration: none;\n color: var(--text);\n transition: var(--transition);\n}\n\n.nav-links a:hover {\n color: var(--primary);\n}\n\n.hero {\n height: 100vh;\n display: flex;\n align-items: center;\n text-align: center;\n padding-top: 4rem;\n}\n\n.hero h1 {\n font-size: 3.5rem;\n margin-bottom: 1rem;\n}\n\n.highlight {\n color: var(--primary);\n}\n\n.typewriter {\n font-size: 1.5rem;\n margin-bottom: 2rem;\n}\n\n.btn {\n display: inline-block;\n padding: 1rem 2rem;\n border-radius: 0.5rem;\n text-decoration: none;\n margin: 0.5rem;\n transition: var(--transition);\n}\n\n.primary {\n background: var(--primary);\n color: white;\n}\n\n.secondary {\n background: transparent;\n border: 2px solid var(--primary);\n color: var(--text);\n}\n\n.about-content {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 2rem;\n margin-top: 2rem;\n}\n\n.skills-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 1rem;\n}\n\n.skill-card {\n background: var(--accent);\n padding: 1rem;\n border-radius: 0.5rem;\n text-align: center;\n transition: var(--transition);\n}\n\n.skill-card:hover {\n transform: translateY(-5px);\n}\n\n.project-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 2rem;\n margin-top: 2rem;\n}\n\n.project-card {\n background: var(--accent);\n padding: 2rem;\n border-radius: 1rem;\n transition: var(--transition);\n}\n\n.project-card:hover {\n transform: translateY(-5px);\n box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);\n}\n\n.tech-stack {\n margin-top: 1rem;\n}\n\n.tech-stack span {\n background: var(--primary);\n color: white;\n padding: 0.25rem 0.75rem;\n border-radius: 1rem;\n font-size: 0.875rem;\n margin-right: 0.5rem;\n}\n\n.footer {\n margin-top: 4rem;\n padding: 2rem 0;\n background: var(--accent);\n}\n\n.footer-content {\n text-align: center;\n}\n\n.social-links a {\n margin: 0 1rem;\n color: var(--text);\n text-decoration: none;\n}\n\n@media (max-width: 768px) {\n .nav-links {\n display: none;\n }\n \n .hero h1 {\n font-size: 2.5rem;\n }\n \n .about-content {\n grid-template-columns: 1fr;\n }\n}\n\n---script.js---\ndocument.addEventListener('DOMContentLoaded', () => {\n // Theme toggling\n const themeToggle = document.querySelector('.theme-toggle');\n const prefersDark = window.matchMedia('(prefers-color-scheme: dark)');\n \n function setTheme(isDark) {\n document.documentElement.setAttribute('data-theme', isDark ? 'dark' : 'light');\n themeToggle.textContent = isDark ? '🌞' : '🌓';\n }\n \n setTheme(prefersDark.matches);\n \n themeToggle.addEventListener('click', () => {\n const isDark = document.documentElement.getAttribute('data-theme') === 'dark';\n setTheme(!isDark);\n });\n\n // Typewriter effect\n const typewriter = document.querySelector('.typewriter');\n const text = typewriter.textContent;\n typewriter.textContent = '';\n \n let i = 0;\n function type() {\n if (i < text.length) {\n typewriter.textContent += text.charAt(i);\n i++;\n setTimeout(type, 100);\n }\n }\n \n type();\n\n // Smooth scrolling\n document.querySelectorAll('a[href^=\"#\"]').forEach(anchor => {\n anchor.addEventListener('click', function (e) {\n e.preventDefault();\n document.querySelector(this.getAttribute('href')).scrollIntoView({\n behavior: 'smooth'\n });\n });\n });\n\n // Intersection Observer for fade-in animations\n const observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n entry.target.classList.add('fade-in');\n }\n });\n }, { threshold: 0.1 });\n\n document.querySelectorAll('section').forEach(section => {\n observer.observe(section);\n });\n});\n\n---end---\n\nThis website features:\n1. Clean, modern design with dark/light mode toggle\n2. Smooth animations and transitions\n3. Responsive layout that works on all devices\n4. Typewriter effect on the hero section\n5. Interactive project cards with hover effects\n6. Semantic HTML structure for better SEO\n7. Smooth scrolling navigation\n8. Intersection Observer for scroll animations\n9. Accessible navigation and color contrast\n10. Professional typography and spacing\n\nThe domain name \"coder.scroll.pub\" is short, memorable, and directly relates to the purpose of the website." + } + ], + "stop_reason": "end_turn", + "stop_sequence": null, + "usage": { + "input_tokens": 278, + "cache_creation_input_tokens": 0, + "cache_read_input_tokens": 0, + "output_tokens": 2865 + } +} \ No newline at end of file diff --git a/readme.scroll b/readme.scroll new file mode 100644 index 0000000..c393287 --- /dev/null +++ b/readme.scroll @@ -0,0 +1,2 @@ +# coder.scroll.pub +Website generated by Claude from prompt: 程序员的个人网站 \ No newline at end of file diff --git a/script.js b/script.js new file mode 100644 index 0000000..3bde8cf --- /dev/null +++ b/script.js @@ -0,0 +1,56 @@ +document.addEventListener('DOMContentLoaded', () => { + // Theme toggling + const themeToggle = document.querySelector('.theme-toggle'); + const prefersDark = window.matchMedia('(prefers-color-scheme: dark)'); + + function setTheme(isDark) { + document.documentElement.setAttribute('data-theme', isDark ? 'dark' : 'light'); + themeToggle.textContent = isDark ? '🌞' : '🌓'; + } + + setTheme(prefersDark.matches); + + themeToggle.addEventListener('click', () => { + const isDark = document.documentElement.getAttribute('data-theme') === 'dark'; + setTheme(!isDark); + }); + + // Typewriter effect + const typewriter = document.querySelector('.typewriter'); + const text = typewriter.textContent; + typewriter.textContent = ''; + + let i = 0; + function type() { + if (i < text.length) { + typewriter.textContent += text.charAt(i); + i++; + setTimeout(type, 100); + } + } + + type(); + + // Smooth scrolling + document.querySelectorAll('a[href^="#"]').forEach(anchor => { + anchor.addEventListener('click', function (e) { + e.preventDefault(); + document.querySelector(this.getAttribute('href')).scrollIntoView({ + behavior: 'smooth' + }); + }); + }); + + // Intersection Observer for fade-in animations + const observer = new IntersectionObserver((entries) => { + entries.forEach(entry => { + if (entry.isIntersecting) { + entry.target.classList.add('fade-in'); + } + }); + }, { threshold: 0.1 }); + + document.querySelectorAll('section').forEach(section => { + observer.observe(section); + }); +}); diff --git a/style.css b/style.css new file mode 100644 index 0000000..b26ec7b --- /dev/null +++ b/style.css @@ -0,0 +1,199 @@ +:root { + --primary: #2563eb; + --secondary: #3b82f6; + --background: #ffffff; + --text: #1f2937; + --accent: #dbeafe; + --transition: all 0.3s ease; +} + +[data-theme="dark"] { + --primary: #3b82f6; + --secondary: #60a5fa; + --background: #0f172a; + --text: #f1f5f9; + --accent: #1e293b; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; + background: var(--background); + color: var(--text); + line-height: 1.6; + transition: var(--transition); +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 2rem; +} + +.header { + position: fixed; + width: 100%; + top: 0; + background: rgba(255, 255, 255, 0.8); + backdrop-filter: blur(10px); + z-index: 1000; +} + +.nav { + display: flex; + justify-content: space-between; + align-items: center; + padding: 1rem 2rem; +} + +.logo { + font-family: monospace; + font-size: 1.5rem; + font-weight: bold; + color: var(--primary); +} + +.nav-links a { + margin-left: 2rem; + text-decoration: none; + color: var(--text); + transition: var(--transition); +} + +.nav-links a:hover { + color: var(--primary); +} + +.hero { + height: 100vh; + display: flex; + align-items: center; + text-align: center; + padding-top: 4rem; +} + +.hero h1 { + font-size: 3.5rem; + margin-bottom: 1rem; +} + +.highlight { + color: var(--primary); +} + +.typewriter { + font-size: 1.5rem; + margin-bottom: 2rem; +} + +.btn { + display: inline-block; + padding: 1rem 2rem; + border-radius: 0.5rem; + text-decoration: none; + margin: 0.5rem; + transition: var(--transition); +} + +.primary { + background: var(--primary); + color: white; +} + +.secondary { + background: transparent; + border: 2px solid var(--primary); + color: var(--text); +} + +.about-content { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 2rem; + margin-top: 2rem; +} + +.skills-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1rem; +} + +.skill-card { + background: var(--accent); + padding: 1rem; + border-radius: 0.5rem; + text-align: center; + transition: var(--transition); +} + +.skill-card:hover { + transform: translateY(-5px); +} + +.project-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; + margin-top: 2rem; +} + +.project-card { + background: var(--accent); + padding: 2rem; + border-radius: 1rem; + transition: var(--transition); +} + +.project-card:hover { + transform: translateY(-5px); + box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); +} + +.tech-stack { + margin-top: 1rem; +} + +.tech-stack span { + background: var(--primary); + color: white; + padding: 0.25rem 0.75rem; + border-radius: 1rem; + font-size: 0.875rem; + margin-right: 0.5rem; +} + +.footer { + margin-top: 4rem; + padding: 2rem 0; + background: var(--accent); +} + +.footer-content { + text-align: center; +} + +.social-links a { + margin: 0 1rem; + color: var(--text); + text-decoration: none; +} + +@media (max-width: 768px) { + .nav-links { + display: none; + } + + .hero h1 { + font-size: 2.5rem; + } + + .about-content { + grid-template-columns: 1fr; + } +}