-
Notifications
You must be signed in to change notification settings - Fork 0
#58 made the landing page for dora #61
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
1a91948
#58 made the landing page for dora
Asifdotexe 607f8b9
#58 remove redundant FontAwesome loading.
Asifdotexe b42dc8e
#58 refactored fragile tab detection and deprecated window.event usage.
Asifdotexe 2131eec
#58 implement mobile navigation toggle
Asifdotexe 64ad375
#58 added favicon
Asifdotexe 84d6f0c
#58 amend refinement based on review
Asifdotexe 6e66e87
#58 replaced emoji with icons
Asifdotexe File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,160 @@ | ||
| <!DOCTYPE html> | ||
| <html lang="en"> | ||
|
|
||
| <head> | ||
| <meta charset="UTF-8"> | ||
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
| <title>DORA - Data Oriented Report Automator</title> | ||
| <link rel="icon" type="image/png" href="assets/favicon.png"> | ||
| <link rel="stylesheet" href="style.css"> | ||
| <link rel="preconnect" href="https://fonts.googleapis.com"> | ||
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> | ||
| <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Fira+Code&display=swap" | ||
| rel="stylesheet"> | ||
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" | ||
| integrity="sha512-9usAa10IRO0HhonpyAIVpjrylPvoDwiPUiKdWk5t3PyolY1cOd4DSE0Ga+ri4AuTroPR5aQvXU9xC6qOPnzFeg==" | ||
| crossorigin="anonymous" referrerpolicy="no-referrer" /> | ||
| </head> | ||
|
|
||
| <body> | ||
| <div class="container"> | ||
| <nav> | ||
| <a href="#" class="logo"> | ||
| <img src="assets/logo.png" alt="DORA Logo" style="height: 50px;"> | ||
| </a> | ||
| <div class="nav-toggle" id="navToggle"> | ||
| <i class="fas fa-bars"></i> | ||
| </div> | ||
| <div class="nav-links" id="navLinks"> | ||
| <a href="#features">Features</a> | ||
| <a href="#how-it-works">How it Works</a> | ||
| <a href="#install">Install</a> | ||
| <a href="https://github.com/Asifdotexe/DORA" target="_blank" rel="noopener noreferrer"><i | ||
| class="fab fa-github"></i> GitHub</a> | ||
| <a href="https://pypi.org/project/dora-eda/" target="_blank" rel="noopener noreferrer"><i | ||
| class="fas fa-box"></i> PyPI</a> | ||
| </div> | ||
| <a href="#install" class="btn btn-primary">Get Started</a> | ||
| </nav> | ||
|
|
||
| <section class="hero"> | ||
| <h1>Automate Data Analysis<br>in Seconds</h1> | ||
| <p>From raw data to beautiful, actionable HTML reports instantly. The most powerful open-source EDA tool for | ||
| data scientists.</p> | ||
|
|
||
| <div class="cta-buttons"> | ||
| <a href="https://dora-eda.streamlit.app/" target="_blank" class="btn btn-primary">Launch Web App</a> | ||
| <a href="#install" class="btn btn-secondary">Install via pip</a> | ||
| </div> | ||
|
|
||
| <div class="hero-gallery"> | ||
| <div class="gallery-tabs"> | ||
| <button class="gallery-tab" data-tab="report" onclick="switchGallery('report', event)">HTML | ||
| Report</button> | ||
| <button class="gallery-tab" data-tab="web" onclick="switchGallery('web', event)">Web | ||
| Interface</button> | ||
| <button class="gallery-tab active" data-tab="cli" onclick="switchGallery('cli', event)">CLI | ||
| Tool</button> | ||
| </div> | ||
|
|
||
| <div class="gallery-content active" id="gallery-cli"> | ||
| <img src="assets/cli-demo.png" alt="DORA CLI Demo" class="gallery-image"> | ||
| </div> | ||
|
|
||
| <div class="gallery-content" id="gallery-web"> | ||
| <img src="assets/web-ui-demo.png" alt="DORA Web Interface" class="gallery-image"> | ||
| </div> | ||
|
|
||
| <div class="gallery-content" id="gallery-report"> | ||
| <img src="assets/report-demo-snippet.png" alt="DORA HTML Report" class="gallery-image"> | ||
| </div> | ||
| </div> | ||
| </section> | ||
|
|
||
| <section id="features" class="features"> | ||
| <div class="container"> | ||
| <h2>Why DORA?</h2> | ||
| <div class="feature-grid"> | ||
| <div class="feature-card"> | ||
| <i class="fas fa-rocket icon"></i> | ||
| <h3>Instant Reports</h3> | ||
| <p>Generate comprehensive EDA reports with a single command. No more writing boilerplate code | ||
| for basic analysis.</p> | ||
| </div> | ||
| <div class="feature-card"> | ||
| <i class="fas fa-chart-pie icon"></i> | ||
| <h3>Interactive Visuals</h3> | ||
| <p>Get rich, interactive charts powered by modern web technologies. Dive deep into your data | ||
| with zoom, pan, and hover details.</p> | ||
| </div> | ||
| <div class="feature-card"> | ||
| <i class="fab fa-kaggle icon"></i> | ||
| <h3>Kaggle Integration</h3> | ||
| <p>Directly download and analyze datasets from Kaggle. DORA handles authentication and file | ||
| selection for you.</p> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| </section> | ||
|
|
||
| <section id="how-it-works" class="how-it-works"> | ||
| <div class="container"> | ||
| <h2>How It Works</h2> | ||
| <div class="steps"> | ||
| <div class="step"> | ||
| <div class="step-number">1</div> | ||
| <h3>Input Data</h3> | ||
| <p>Provide a CSV, key in a Kaggle URL, or upload your file.</p> | ||
| </div> | ||
| <div class="step"> | ||
| <div class="step-number">2</div> | ||
| <h3>Process</h3> | ||
| <p>DORA analyzes distributions, correlations, and missing values automatically.</p> | ||
| </div> | ||
| <div class="step"> | ||
| <div class="step-number">3</div> | ||
| <h3>Report</h3> | ||
| <p>Receive a shareable HTML report with all insights ready to present.</p> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| </section> | ||
|
|
||
| <section id="install" class="get-started"> | ||
| <div class="container"> | ||
| <h2>Ready to Dive In?</h2> | ||
| <p style="color: rgba(255,255,255,0.9); margin-bottom: 2rem;">Get up and running in less than a minute. | ||
| </p> | ||
|
|
||
| <h3>Option 1: CLI Tool</h3> | ||
| <div class="code-block"> | ||
| <button class="copy-btn" onclick="copyCode('pip-install')">Copy</button> | ||
| <code id="pip-install">$ pip install dora-eda</code> | ||
| </div> | ||
|
|
||
| <h3 style="margin-top: 2rem;">Option 2: Web Interface (No Install)</h3> | ||
| <p style="margin-bottom: 1rem; color: white;">Use DORA directly in your browser without installing | ||
| anything.</p> | ||
| <a href="https://dora-eda.streamlit.app/" target="_blank" class="btn btn-primary" | ||
| style="background: white; color: var(--secondary-color);">Launch App</a> | ||
| </div> | ||
| </section> | ||
|
|
||
| <footer> | ||
| <div class="container"> | ||
| <div class="footer-links"> | ||
| <a href="#">Home</a> | ||
| <a href="https://github.com/Asifdotexe/DORA">GitHub</a> | ||
| <a href="https://pypi.org/project/dora-eda/">PyPI</a> | ||
| </div> | ||
| <p>© 2026 DORA Project. Licensed under MIT.</p> | ||
| <p style="font-size: 0.85rem; margin-top: 0.5rem; opacity: 0.6;">Designed & Built by <a | ||
| href="https://github.com/Asifdotexe" target="_blank" | ||
| style="color: inherit; text-decoration: none;">Asif Sayyed</a></p> | ||
| </div> | ||
| </footer> | ||
| </div> | ||
| <script src="script.js"></script> | ||
| </body> | ||
|
|
||
| </html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,146 @@ | ||
| // Smooth scrolling for navigation links | ||
| document.querySelectorAll('a[href^="#"]').forEach(anchor => { | ||
| anchor.addEventListener('click', function (e) { | ||
| e.preventDefault(); | ||
|
|
||
| const href = this.getAttribute('href'); | ||
| if (!href || href === '#') return; | ||
|
|
||
| const target = document.querySelector(href); | ||
| if (target) { | ||
| target.scrollIntoView({ | ||
| behavior: 'smooth' | ||
| }); | ||
| } | ||
| }); | ||
| }); | ||
|
|
||
| // Copy code to clipboard | ||
| function copyCode(elementId) { | ||
| const codeElement = document.getElementById(elementId); | ||
| let codeText = codeElement.innerText; | ||
|
|
||
| // Remove the '$ ' prompt if present for copying | ||
| if (codeText.startsWith('$ ')) { | ||
| codeText = codeText.substring(2); | ||
| } | ||
|
|
||
| navigator.clipboard.writeText(codeText).then(() => { | ||
| // Visual feedback | ||
| const btn = codeElement.parentElement.querySelector('.copy-btn'); | ||
| const originalText = btn.innerText; | ||
| btn.innerText = 'Copied!'; | ||
| btn.style.background = '#2b9388'; | ||
|
|
||
| setTimeout(() => { | ||
| btn.innerText = originalText; | ||
| btn.style.background = ''; | ||
| }, 2000); | ||
| }).catch(err => { | ||
| console.error('Failed to copy: ', err); | ||
| }); | ||
| } | ||
|
|
||
| // Simple fade-in animation on scroll | ||
| const observerOptions = { | ||
| threshold: 0.1 | ||
| }; | ||
|
|
||
| const observer = new IntersectionObserver((entries) => { | ||
| entries.forEach(entry => { | ||
| if (entry.isIntersecting) { | ||
| entry.target.classList.add('visible'); | ||
| observer.unobserve(entry.target); | ||
| } | ||
| }); | ||
| }, observerOptions); | ||
|
|
||
| document.querySelectorAll('.feature-card, .step').forEach(el => { | ||
| el.style.opacity = '0'; | ||
| el.style.transform = 'translateY(20px)'; | ||
| el.style.transition = 'opacity 0.6s ease, transform 0.6s ease'; | ||
| observer.observe(el); | ||
| }); | ||
|
|
||
| // Add visible class styling | ||
| const style = document.createElement('style'); | ||
| style.textContent = ` | ||
| .visible { | ||
| opacity: 1 !important; | ||
| transform: translateY(0) !important; | ||
| } | ||
| `; | ||
| document.head.appendChild(style); | ||
|
|
||
| // Gallery switching | ||
| const tabs = ['cli', 'web', 'report']; | ||
| let currentTabIndex = 0; | ||
| let autoRotateInterval; | ||
|
|
||
| function switchGallery(tabId, event) { | ||
| // Update active state | ||
| // Buttons | ||
| document.querySelectorAll('.gallery-tab').forEach(tab => { | ||
| tab.classList.remove('active'); | ||
| // Check data attribute | ||
| if (tab.dataset.tab === tabId) { | ||
| tab.classList.add('active'); | ||
| } | ||
| }); | ||
|
|
||
| // Content | ||
| document.querySelectorAll('.gallery-content').forEach(content => { | ||
| content.classList.remove('active'); | ||
| }); | ||
| document.getElementById('gallery-' + tabId).classList.add('active'); | ||
|
|
||
| // Update current index for auto-rotation | ||
| currentTabIndex = tabs.indexOf(tabId); | ||
|
|
||
| // Reset timer on manual interaction (if event exists and is trusted) | ||
| if (event && event.isTrusted) { | ||
| resetAutoRotate(); | ||
| } | ||
| } | ||
|
|
||
| function autoRotate() { | ||
| currentTabIndex = (currentTabIndex + 1) % tabs.length; | ||
| switchGallery(tabs[currentTabIndex]); // No event passed for auto-rotation | ||
| } | ||
|
|
||
| function resetAutoRotate() { | ||
| clearInterval(autoRotateInterval); | ||
| autoRotateInterval = setInterval(autoRotate, 5000); | ||
| } | ||
|
|
||
| // Start auto-rotation | ||
| autoRotateInterval = setInterval(autoRotate, 5000); | ||
|
|
||
| // Mobile Nav Toggle | ||
| const navToggle = document.getElementById('navToggle'); | ||
| const navLinks = document.getElementById('navLinks'); | ||
|
|
||
| if (navToggle) { | ||
| navToggle.addEventListener('click', () => { | ||
| navLinks.classList.toggle('active'); | ||
|
|
||
| // Change icon | ||
| const icon = navToggle.querySelector('i'); | ||
| if (navLinks.classList.contains('active')) { | ||
| icon.classList.remove('fa-bars'); | ||
| icon.classList.add('fa-times'); | ||
| } else { | ||
| icon.classList.remove('fa-times'); | ||
| icon.classList.add('fa-bars'); | ||
| } | ||
| }); | ||
|
|
||
| // Close menu when clicking a link | ||
| navLinks.querySelectorAll('a').forEach(link => { | ||
| link.addEventListener('click', () => { | ||
| navLinks.classList.remove('active'); | ||
| navToggle.querySelector('i').classList.add('fa-bars'); | ||
| navToggle.querySelector('i').classList.remove('fa-times'); | ||
| }); | ||
| }); | ||
| } | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.