commit 75ec95231a4a547bfbd19b859df4251b4084db2c
Author: root <root@hub.scroll.pub> Date: 2024-12-31 21:58:30 +0000 Subject: Initial commit diff --git a/body.html b/body.html new file mode 100644 index 0000000..260d137 --- /dev/null +++ b/body.html @@ -0,0 +1,55 @@ +<header> + <h1>CivilSmart</h1> + <p>Your AI-powered Civil Engineering Knowledge Hub</p> +</header> + +<main> + <section class="news-grid"> + <div class="column weekly-highlights"> + <h2>Weekly Highlights</h2> + <div class="news-card"> + <h3>Top Story 1</h3> + <p>Summary of most clicked news...</p> + </div> + <div class="news-card"> + <h3>Top Story 2</h3> + <p>Summary of most clicked news...</p> + </div> + </div> + + <div class="column real-time-news"> + <h2>Real-Time News</h2> + <div class="news-card"> + <h3>Breaking News 1</h3> + <p>Latest update...</p> + </div> + <div class="news-card"> + <h3>Breaking News 2</h3> + <p>Latest update...</p> + </div> + </div> + </section> + + <section class="ai-chat"> + <h2>AI Knowledge Assistant</h2> + <div class="chat-window"> + <div class="chat-history"></div> + <div class="chat-input"> + <input type="text" placeholder="Ask about civil engineering news..."> + <button>Send</button> + </div> + </div> + </section> +</main> + +<footer> + <div class="adsense"> + <!-- Google Adsense placeholder --> + <div class="ad-unit">Ad Space</div> + </div> + <nav> + <a href="/about">About</a> + <a href="/contact">Contact</a> + <a href="/privacy">Privacy</a> + </nav> +</footer> \ No newline at end of file diff --git a/index.scroll b/index.scroll new file mode 100644 index 0000000..8a79118 --- /dev/null +++ b/index.scroll @@ -0,0 +1,8 @@ +buildHtml +baseUrl https://civilsmart.scroll.pub +metaTags +editButton /edit.html +title CivilSmart - GenAI Civil Engineering Knowledge Hub +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..ebcf3c9 --- /dev/null +++ b/prompt.json @@ -0,0 +1,25 @@ +{ + "id": "039489c3-eefb-4df2-b42e-af3acc5df7ba", + "object": "chat.completion", + "created": 1735682292, + "model": "deepseek-chat", + "choices": [ + { + "index": 0, + "message": { + "role": "assistant", + "content": "---domain---\ncivilsmart.scroll.pub\n---index.scroll---\nbuildHtml\nbaseUrl https://civilsmart.scroll.pub\nmetaTags\neditButton /edit.html\ntitle CivilSmart - GenAI Civil Engineering Knowledge Hub\nstyle.css\nbody.html\nscript.js\n---body.html---\n<header>\n <h1>CivilSmart</h1>\n <p>Your AI-powered Civil Engineering Knowledge Hub</p>\n</header>\n\n<main>\n <section class=\"news-grid\">\n <div class=\"column weekly-highlights\">\n <h2>Weekly Highlights</h2>\n <div class=\"news-card\">\n <h3>Top Story 1</h3>\n <p>Summary of most clicked news...</p>\n </div>\n <div class=\"news-card\">\n <h3>Top Story 2</h3>\n <p>Summary of most clicked news...</p>\n </div>\n </div>\n\n <div class=\"column real-time-news\">\n <h2>Real-Time News</h2>\n <div class=\"news-card\">\n <h3>Breaking News 1</h3>\n <p>Latest update...</p>\n </div>\n <div class=\"news-card\">\n <h3>Breaking News 2</h3>\n <p>Latest update...</p>\n </div>\n </div>\n </section>\n\n <section class=\"ai-chat\">\n <h2>AI Knowledge Assistant</h2>\n <div class=\"chat-window\">\n <div class=\"chat-history\"></div>\n <div class=\"chat-input\">\n <input type=\"text\" placeholder=\"Ask about civil engineering news...\">\n <button>Send</button>\n </div>\n </div>\n </section>\n</main>\n\n<footer>\n <div class=\"adsense\">\n <!-- Google Adsense placeholder -->\n <div class=\"ad-unit\">Ad Space</div>\n </div>\n <nav>\n <a href=\"/about\">About</a>\n <a href=\"/contact\">Contact</a>\n <a href=\"/privacy\">Privacy</a>\n </nav>\n</footer>\n---style.css---\n:root {\n --primary-color: #1a73e8;\n --secondary-color: #202124;\n --background-color: #f8f9fa;\n --text-color: #202124;\n --card-shadow: 0 2px 8px rgba(0,0,0,0.1);\n}\n\nbody {\n font-family: 'Segoe UI', sans-serif;\n margin: 0;\n padding: 0;\n background-color: var(--background-color);\n color: var(--text-color);\n line-height: 1.6;\n}\n\nheader {\n background: var(--primary-color);\n color: white;\n padding: 2rem;\n text-align: center;\n}\n\n.news-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\n gap: 2rem;\n padding: 2rem;\n}\n\n.column {\n background: white;\n border-radius: 8px;\n padding: 1.5rem;\n box-shadow: var(--card-shadow);\n}\n\n.news-card {\n margin-bottom: 1.5rem;\n padding-bottom: 1.5rem;\n border-bottom: 1px solid #eee;\n}\n\n.news-card:last-child {\n border-bottom: none;\n margin-bottom: 0;\n padding-bottom: 0;\n}\n\n.ai-chat {\n padding: 2rem;\n background: white;\n margin: 2rem;\n border-radius: 8px;\n box-shadow: var(--card-shadow);\n}\n\n.chat-window {\n border: 1px solid #ddd;\n border-radius: 8px;\n padding: 1rem;\n height: 300px;\n display: flex;\n flex-direction: column;\n}\n\n.chat-history {\n flex: 1;\n overflow-y: auto;\n margin-bottom: 1rem;\n}\n\n.chat-input {\n display: flex;\n gap: 0.5rem;\n}\n\n.chat-input input {\n flex: 1;\n padding: 0.5rem;\n border: 1px solid #ddd;\n border-radius: 4px;\n}\n\n.chat-input button {\n background: var(--primary-color);\n color: white;\n border: none;\n padding: 0.5rem 1rem;\n border-radius: 4px;\n cursor: pointer;\n}\n\nfooter {\n background: var(--secondary-color);\n color: white;\n padding: 1rem;\n text-align: center;\n}\n\n.adsense {\n margin: 1rem auto;\n max-width: 728px;\n}\n\n.ad-unit {\n background: #eee;\n height: 90px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #666;\n}\n\n@media (max-width: 768px) {\n .news-grid {\n grid-template-columns: 1fr;\n padding: 1rem;\n }\n \n .ai-chat {\n margin: 1rem;\n }\n}\n---script.js---\ndocument.addEventListener('DOMContentLoaded', function() {\n const chatInput = document.querySelector('.chat-input input');\n const chatButton = document.querySelector('.chat-input button');\n const chatHistory = document.querySelector('.chat-history');\n\n chatButton.addEventListener('click', sendMessage);\n chatInput.addEventListener('keypress', function(e) {\n if (e.key === 'Enter') {\n sendMessage();\n }\n });\n\n function sendMessage() {\n const message = chatInput.value.trim();\n if (message) {\n addMessageToChat('user', message);\n chatInput.value = '';\n // Simulate AI response\n setTimeout(() => {\n addMessageToChat('ai', 'This is a simulated AI response.');\n }, 1000);\n }\n }\n\n function addMessageToChat(sender, message) {\n const messageDiv = document.createElement('div');\n messageDiv.classList.add('chat-message', sender);\n messageDiv.textContent = message;\n chatHistory.appendChild(messageDiv);\n chatHistory.scrollTop = chatHistory.scrollHeight;\n }\n});\n---end---" + }, + "logprobs": null, + "finish_reason": "stop" + } + ], + "usage": { + "prompt_tokens": 407, + "completion_tokens": 1368, + "total_tokens": 1775, + "prompt_cache_hit_tokens": 0, + "prompt_cache_miss_tokens": 407 + }, + "system_fingerprint": "fp_f1afce2943" +} \ No newline at end of file diff --git a/readme.scroll b/readme.scroll new file mode 100644 index 0000000..df4c5c8 --- /dev/null +++ b/readme.scroll @@ -0,0 +1,2 @@ +# civilsmart.scroll.pub +Website generated by DeepSeek from prompt: I aim to create a A GenAI-enabled portal for Civil Structural Engineering Knowledge Sharing, Curation, and Communication. In this web portal, it will scrub/craw professional websites (with citations sources) around world around the world about civil engineering, climate changes, hazards, disasters, automation in construction and civil engineering. Second, I will need to create accumulate all scrubbed news into a knowledge graph for curation that further provides a chat window for my readers. It will have a simple chat window where users provide news clue and sharing like a chatgpt session. It will have a simple google adsense section (at the bottom of the page to minimize interference with reading experience). The news page will have two columns: the left column summarize the most clicked news in a weekly basis; and the right column has real-time news. can you do this for me? \ No newline at end of file diff --git a/script.js b/script.js new file mode 100644 index 0000000..47b02c6 --- /dev/null +++ b/script.js @@ -0,0 +1,32 @@ +document.addEventListener('DOMContentLoaded', function() { + const chatInput = document.querySelector('.chat-input input'); + const chatButton = document.querySelector('.chat-input button'); + const chatHistory = document.querySelector('.chat-history'); + + chatButton.addEventListener('click', sendMessage); + chatInput.addEventListener('keypress', function(e) { + if (e.key === 'Enter') { + sendMessage(); + } + }); + + function sendMessage() { + const message = chatInput.value.trim(); + if (message) { + addMessageToChat('user', message); + chatInput.value = ''; + // Simulate AI response + setTimeout(() => { + addMessageToChat('ai', 'This is a simulated AI response.'); + }, 1000); + } + } + + function addMessageToChat(sender, message) { + const messageDiv = document.createElement('div'); + messageDiv.classList.add('chat-message', sender); + messageDiv.textContent = message; + chatHistory.appendChild(messageDiv); + chatHistory.scrollTop = chatHistory.scrollHeight; + } +}); \ No newline at end of file diff --git a/style.css b/style.css new file mode 100644 index 0000000..bb35fc4 --- /dev/null +++ b/style.css @@ -0,0 +1,125 @@ +:root { + --primary-color: #1a73e8; + --secondary-color: #202124; + --background-color: #f8f9fa; + --text-color: #202124; + --card-shadow: 0 2px 8px rgba(0,0,0,0.1); +} + +body { + font-family: 'Segoe UI', sans-serif; + margin: 0; + padding: 0; + background-color: var(--background-color); + color: var(--text-color); + line-height: 1.6; +} + +header { + background: var(--primary-color); + color: white; + padding: 2rem; + text-align: center; +} + +.news-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; + padding: 2rem; +} + +.column { + background: white; + border-radius: 8px; + padding: 1.5rem; + box-shadow: var(--card-shadow); +} + +.news-card { + margin-bottom: 1.5rem; + padding-bottom: 1.5rem; + border-bottom: 1px solid #eee; +} + +.news-card:last-child { + border-bottom: none; + margin-bottom: 0; + padding-bottom: 0; +} + +.ai-chat { + padding: 2rem; + background: white; + margin: 2rem; + border-radius: 8px; + box-shadow: var(--card-shadow); +} + +.chat-window { + border: 1px solid #ddd; + border-radius: 8px; + padding: 1rem; + height: 300px; + display: flex; + flex-direction: column; +} + +.chat-history { + flex: 1; + overflow-y: auto; + margin-bottom: 1rem; +} + +.chat-input { + display: flex; + gap: 0.5rem; +} + +.chat-input input { + flex: 1; + padding: 0.5rem; + border: 1px solid #ddd; + border-radius: 4px; +} + +.chat-input button { + background: var(--primary-color); + color: white; + border: none; + padding: 0.5rem 1rem; + border-radius: 4px; + cursor: pointer; +} + +footer { + background: var(--secondary-color); + color: white; + padding: 1rem; + text-align: center; +} + +.adsense { + margin: 1rem auto; + max-width: 728px; +} + +.ad-unit { + background: #eee; + height: 90px; + display: flex; + align-items: center; + justify-content: center; + color: #666; +} + +@media (max-width: 768px) { + .news-grid { + grid-template-columns: 1fr; + padding: 1rem; + } + + .ai-chat { + margin: 1rem; + } +} \ No newline at end of file