LovnishVerma's picture
Upload 51 files
50dca14 verified
<!DOCTYPE html>
<html lang="en" data-theme="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="WebScraper Platform — Professional web scraping with visual configuration, exports, and scheduling.">
<title>{% block title %}WebScraper Platform{% endblock %}</title>
<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@300;400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
{% block extra_head %}{% endblock %}
</head>
<body>
<!-- Navigation -->
<nav class="navbar" id="main-nav">
<div class="nav-container">
<a href="{{ url_for('main.index') }}" class="nav-brand">
<span class="brand-icon">🕷️</span>
<span class="brand-text">WebScraper<span class="brand-accent">.pro</span></span>
</a>
<div class="nav-links" id="nav-links">
<a href="{{ url_for('main.index') }}" class="nav-link {% if request.endpoint == 'main.index' %}active{% endif %}">
<svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/><polyline points="9 22 9 12 15 12 15 22"/></svg>
Dashboard
</a>
<a href="{{ url_for('jobs.list_view') }}" class="nav-link {% if request.endpoint and request.endpoint.startswith('jobs.') and request.endpoint != 'jobs.new_job' %}active{% endif %}">
<svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="2" y="7" width="20" height="14" rx="2" ry="2"/><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"/></svg>
Jobs
</a>
<a href="{{ url_for('jobs.new_job') }}" class="nav-link btn-nav-primary {% if request.endpoint == 'jobs.new_job' %}active{% endif %}">
<svg class="nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="16"/><line x1="8" y1="12" x2="16" y2="12"/></svg>
New Scrape
</a>
</div>
<button class="nav-toggle" id="nav-toggle" aria-label="Toggle navigation">
<span></span><span></span><span></span>
</button>
</div>
</nav>
<!-- Flash Messages -->
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
<div class="toast-container" id="toast-container">
{% for category, message in messages %}
<div class="toast toast-{{ category }}" data-auto-dismiss="5000">
<div class="toast-icon">
{% if category == 'success' %}✓{% elif category == 'danger' or category == 'error' %}✕{% elif category == 'warning' %}⚠{% else %}ℹ{% endif %}
</div>
<div class="toast-body">{{ message }}</div>
<button class="toast-close" onclick="this.parentElement.remove()">×</button>
</div>
{% endfor %}
</div>
{% endif %}
{% endwith %}
<!-- Main Content -->
<main class="main-content">
<div class="container">
{% block content %}{% endblock %}
</div>
</main>
<!-- Footer -->
<footer class="footer">
<div class="container footer-inner">
<p class="footer-text">© 2026 WebScraper<span class="brand-accent">.pro</span> — Built with Flask & BeautifulSoup</p>
<div class="footer-links">
<a href="{{ url_for('main.health') }}" class="footer-link">Health</a>
<a href="{{ url_for('main.metrics') }}" class="footer-link">Metrics</a>
</div>
</div>
</footer>
<script src="{{ url_for('static', filename='js/app.js') }}"></script>
{% block extra_scripts %}{% endblock %}
</body>
</html>