Changes to darktube.scroll.pub

root
root
25 days ago
Initial commit
body.html
Changed around line 1
+
+
+
+
+
+
+
+
+
+
+
+

Track Your Dark Journey

+

Keep track of your YouTube playlists in gothic style

+
+
+
+

Your Playlists

+
+
+
+
+
+
+
+

Watch Progress

+
+
+
+
+
+
+
+
+
+

DarkTube - Your Gothic YouTube Companion

+
+
+
+
index.scroll
Changed around line 1
+ buildHtml
+ baseUrl https://darktube.scroll.pub
+ metaTags
+ editButton /edit.html
+ title DarkTube - Gothic YouTube Playlist Tracker
+ style.css
+ body.html
+ script.js
prompt.json
Changed around line 1
+ {
+ "id": "msg_018Y2NYc5KxerK9n5YwTujji",
+ "type": "message",
+ "role": "assistant",
+ "model": "claude-3-5-sonnet-20241022",
+ "content": [
+ {
+ "type": "text",
+ "text": "Here's a gothic YouTube playlist tracker website:\n\n---domain---\ndarktube.scroll.pub\n---index.scroll---\nbuildHtml\nbaseUrl https://darktube.scroll.pub\nmetaTags\neditButton /edit.html\ntitle DarkTube - Gothic YouTube Playlist Tracker\nstyle.css\nbody.html\nscript.js\n---body.html---\n
\n \n
\n\n
\n
\n

Track Your Dark Journey

\n

Keep track of your YouTube playlists in gothic style

\n
\n\n
\n

Your Playlists

\n
\n \n
\n
\n\n
\n
\n

Watch Progress

\n
\n
\n
\n
\n
\n
\n\n\n---style.css---\n:root {\n --primary: #1a0f1f;\n --secondary: #2d1b33;\n --accent: #8a2be2;\n --text: #e6e6e6;\n --font-gothic: 'Cinzel', serif;\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nbody {\n background: var(--primary);\n color: var(--text);\n font-family: var(--font-gothic);\n line-height: 1.6;\n}\n\nheader {\n background: var(--secondary);\n padding: 1rem;\n box-shadow: 0 0 20px rgba(138, 43, 226, 0.2);\n}\n\nnav {\n display: flex;\n justify-content: space-between;\n align-items: center;\n max-width: 1200px;\n margin: 0 auto;\n}\n\n.logo {\n font-size: 2rem;\n font-weight: bold;\n background: linear-gradient(45deg, var(--accent), #ff00ff);\n -webkit-background-clip: text;\n -webkit-text-fill-color: transparent;\n}\n\nbutton {\n background: var(--accent);\n color: var(--text);\n border: none;\n padding: 0.8rem 1.5rem;\n border-radius: 4px;\n cursor: pointer;\n transition: all 0.3s ease;\n}\n\nbutton:hover {\n transform: translateY(-2px);\n box-shadow: 0 5px 15px rgba(138, 43, 226, 0.3);\n}\n\n.hero {\n text-align: center;\n padding: 4rem 1rem;\n background: linear-gradient(to bottom, var(--secondary), var(--primary));\n}\n\nh1 {\n font-size: 3.5rem;\n margin-bottom: 1rem;\n text-shadow: 0 0 10px var(--accent);\n}\n\n.playlists {\n max-width: 1200px;\n margin: 2rem auto;\n padding: 0 1rem;\n}\n\n.playlist-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\n gap: 2rem;\n margin-top: 2rem;\n}\n\n.playlist-card {\n background: var(--secondary);\n border-radius: 8px;\n padding: 1rem;\n transition: transform 0.3s ease;\n}\n\n.playlist-card:hover {\n transform: translateY(-5px);\n}\n\n.progress-tracker {\n padding: 2rem 1rem;\n background: var(--secondary);\n margin-top: 3rem;\n}\n\n.progress-container {\n max-width: 800px;\n margin: 0 auto;\n}\n\n.progress-bar {\n height: 20px;\n background: var(--primary);\n border-radius: 10px;\n overflow: hidden;\n margin-top: 1rem;\n}\n\n.progress {\n height: 100%;\n background: linear-gradient(90deg, var(--accent), #ff00ff);\n width: 0%;\n transition: width 0.3s ease;\n}\n\nfooter {\n background: var(--secondary);\n padding: 2rem 1rem;\n margin-top: 4rem;\n}\n\n.footer-content {\n max-width: 1200px;\n margin: 0 auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n@media (max-width: 768px) {\n h1 {\n font-size: 2.5rem;\n }\n \n .footer-content {\n flex-direction: column;\n text-align: center;\n gap: 1rem;\n }\n}\n---script.js---\ndocument.addEventListener('DOMContentLoaded', () => {\n const authStatus = document.getElementById('authStatus');\n const playlistGrid = document.getElementById('playlistGrid');\n const totalProgress = document.getElementById('totalProgress');\n let isAuthenticated = false;\n\n // Mock authentication function\n function toggleAuth() {\n isAuthenticated = !isAuthenticated;\n updateAuthUI();\n if (isAuthenticated) {\n loadPlaylists();\n }\n }\n\n function updateAuthUI() {\n authStatus.innerHTML = isAuthenticated\n ? ``\n : ``;\n \n const button = isAuthenticated ? document.getElementById('signOut') : document.getElementById('signIn');\n button.addEventListener('click', toggleAuth);\n }\n\n function loadPlaylists() {\n // Mock playlist data\n const playlists = [\n { title: 'Dark Ambient Music', videos: 20, completed: 15 },\n { title: 'Gothic Architecture', videos: 15, completed: 7 },\n { title: 'Victorian Era', videos: 25, completed: 20 }\n ];\n\n playlistGrid.innerHTML = playlists.map(playlist => `\n
\n

${playlist.title}

\n

${playlist.completed}/${playlist.videos} videos completed

\n
\n
\n
\n
\n `).join('');\n\n // Update total progress\n const totalVideos = playlists.reduce((acc, curr) => acc + curr.videos, 0);\n const totalCompleted = playlists.reduce((acc, curr) => acc + curr.completed, 0);\n totalProgress.style.width = `${(totalCompleted/totalVideos)*100}%`;\n }\n\n // Initial UI setup\n updateAuthUI();\n\n // Add hover effects\n document.querySelectorAll('.playlist-card').forEach(card => {\n card.addEventListener('mouseover', () => {\n card.style.transform = 'translateY(-5px)';\n });\n card.addEventListener('mouseout', () => {\n card.style.transform = 'translateY(0)';\n });\n });\n});\n---end---\n\nThis website features:\n- Gothic color scheme with purple accents\n- Smooth animations and transitions\n- Responsive design\n- Progress tracking visualization\n- Clean, semantic HTML structure\n- Modern CSS with variables and gradients\n- Interactive elements with hover effects\n- Mock authentication and playlist loading functionality\n- Accessible design with proper contrast\n- Mobile-first approach\n- SEO-friendly structure\n\nThe JavaScript includes mock functionality that can be replaced with actual YouTube API integration. The design is dark and gothic while maintaining professionalism and usability."
+ }
+ ],
+ "stop_reason": "end_turn",
+ "stop_sequence": null,
+ "usage": {
+ "input_tokens": 299,
+ "cache_creation_input_tokens": 0,
+ "cache_read_input_tokens": 0,
+ "output_tokens": 2178
+ }
+ }
readme.scroll
Changed around line 1
+ # darktube.scroll.pub
+ Website generated by Claude from prompt: a very aesthetic gothic looking website which keeps track of all the videos being completed in the youtube playlist ( via syncing youtube account gmail with it )
script.js
Changed around line 1
+ document.addEventListener('DOMContentLoaded', () => {
+ const authStatus = document.getElementById('authStatus');
+ const playlistGrid = document.getElementById('playlistGrid');
+ const totalProgress = document.getElementById('totalProgress');
+ let isAuthenticated = false;
+
+ // Mock authentication function
+ function toggleAuth() {
+ isAuthenticated = !isAuthenticated;
+ updateAuthUI();
+ if (isAuthenticated) {
+ loadPlaylists();
+ }
+ }
+
+ function updateAuthUI() {
+ authStatus.innerHTML = isAuthenticated
+ ? ``
+ : ``;
+
+ const button = isAuthenticated ? document.getElementById('signOut') : document.getElementById('signIn');
+ button.addEventListener('click', toggleAuth);
+ }
+
+ function loadPlaylists() {
+ // Mock playlist data
+ const playlists = [
+ { title: 'Dark Ambient Music', videos: 20, completed: 15 },
+ { title: 'Gothic Architecture', videos: 15, completed: 7 },
+ { title: 'Victorian Era', videos: 25, completed: 20 }
+ ];
+
+ playlistGrid.innerHTML = playlists.map(playlist => `
+
+

${playlist.title}

+

${playlist.completed}/${playlist.videos} videos completed

+
+
+
+
+ `).join('');
+
+ // Update total progress
+ const totalVideos = playlists.reduce((acc, curr) => acc + curr.videos, 0);
+ const totalCompleted = playlists.reduce((acc, curr) => acc + curr.completed, 0);
+ totalProgress.style.width = `${(totalCompleted/totalVideos)*100}%`;
+ }
+
+ // Initial UI setup
+ updateAuthUI();
+
+ // Add hover effects
+ document.querySelectorAll('.playlist-card').forEach(card => {
+ card.addEventListener('mouseover', () => {
+ card.style.transform = 'translateY(-5px)';
+ });
+ card.addEventListener('mouseout', () => {
+ card.style.transform = 'translateY(0)';
+ });
+ });
+ });
style.css
Changed around line 1
+ :root {
+ --primary: #1a0f1f;
+ --secondary: #2d1b33;
+ --accent: #8a2be2;
+ --text: #e6e6e6;
+ --font-gothic: 'Cinzel', serif;
+ }
+
+ * {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+ }
+
+ body {
+ background: var(--primary);
+ color: var(--text);
+ font-family: var(--font-gothic);
+ line-height: 1.6;
+ }
+
+ header {
+ background: var(--secondary);
+ padding: 1rem;
+ box-shadow: 0 0 20px rgba(138, 43, 226, 0.2);
+ }
+
+ nav {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ max-width: 1200px;
+ margin: 0 auto;
+ }
+
+ .logo {
+ font-size: 2rem;
+ font-weight: bold;
+ background: linear-gradient(45deg, var(--accent), #ff00ff);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ }
+
+ button {
+ background: var(--accent);
+ color: var(--text);
+ border: none;
+ padding: 0.8rem 1.5rem;
+ border-radius: 4px;
+ cursor: pointer;
+ transition: all 0.3s ease;
+ }
+
+ button:hover {
+ transform: translateY(-2px);
+ box-shadow: 0 5px 15px rgba(138, 43, 226, 0.3);
+ }
+
+ .hero {
+ text-align: center;
+ padding: 4rem 1rem;
+ background: linear-gradient(to bottom, var(--secondary), var(--primary));
+ }
+
+ h1 {
+ font-size: 3.5rem;
+ margin-bottom: 1rem;
+ text-shadow: 0 0 10px var(--accent);
+ }
+
+ .playlists {
+ max-width: 1200px;
+ margin: 2rem auto;
+ padding: 0 1rem;
+ }
+
+ .playlist-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
+ gap: 2rem;
+ margin-top: 2rem;
+ }
+
+ .playlist-card {
+ background: var(--secondary);
+ border-radius: 8px;
+ padding: 1rem;
+ transition: transform 0.3s ease;
+ }
+
+ .playlist-card:hover {
+ transform: translateY(-5px);
+ }
+
+ .progress-tracker {
+ padding: 2rem 1rem;
+ background: var(--secondary);
+ margin-top: 3rem;
+ }
+
+ .progress-container {
+ max-width: 800px;
+ margin: 0 auto;
+ }
+
+ .progress-bar {
+ height: 20px;
+ background: var(--primary);
+ border-radius: 10px;
+ overflow: hidden;
+ margin-top: 1rem;
+ }
+
+ .progress {
+ height: 100%;
+ background: linear-gradient(90deg, var(--accent), #ff00ff);
+ width: 0%;
+ transition: width 0.3s ease;
+ }
+
+ footer {
+ background: var(--secondary);
+ padding: 2rem 1rem;
+ margin-top: 4rem;
+ }
+
+ .footer-content {
+ max-width: 1200px;
+ margin: 0 auto;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ }
+
+ @media (max-width: 768px) {
+ h1 {
+ font-size: 2.5rem;
+ }
+
+ .footer-content {
+ flex-direction: column;
+ text-align: center;
+ gap: 1rem;
+ }
+ }