#!/usr/bin/env python3 """ Generate a simple text-based HTML dashboard of all tracked jobs. """ from datetime import datetime from pathlib import Path from db import Database def generate_dashboard(output_path: str = "data/dashboard.html"): """Generate a static HTML dashboard.""" db = Database() jobs = db.get_all_active_jobs() # Group by company companies = {} for company_name, job in jobs: if company_name not in companies: companies[company_name] = [] companies[company_name].append(job) # Sort companies by name sorted_companies = sorted(companies.items()) html = f""" Job Board

$ job-board

Last updated: {datetime.now().strftime("%Y-%m-%d %H:%M:%S")} | {len(jobs)} jobs across {len(companies)} companies
{len(jobs)} jobs shown
Jump to company:
""" # Job listings for company_name, company_jobs in sorted_companies: anchor = company_name.lower().replace(" ", "-") html += f"""
{company_name} {len(company_jobs)} positions
""" for job in sorted(company_jobs, key=lambda j: j.title): location = job.location or "" location_lower = location.lower() # Tags tags = "" if job.remote_type == "remote" or "remote" in location_lower: tags += 'remote' if "canada" in location_lower or "toronto" in location_lower or "vancouver" in location_lower: tags += 'canada' if "berlin" in location_lower or "germany" in location_lower: tags += 'berlin' html += f"""
{job.title}{tags} {location}
""" html += """
""" html += """
""" # Write the file output = Path(output_path) output.parent.mkdir(parents=True, exist_ok=True) output.write_text(html) print(f"Dashboard generated: {output_path}") return output_path if __name__ == "__main__": generate_dashboard()