Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JobDashboard

A real-time job listing dashboard that scrapes vacancies from hh.ru, provides interactive job search and filtering, and visualizes key job statistics using D3.js. Supports English and Russian languages.

Features

  • Automated Scraping: Pulls ~1000 job postings from hh.ru via API.
  • Interactive Job List: Search by job title or company with autocomplete, filter by location.
  • Dashboard Visualizations: Four charts (Skills, Companies, Locations, Timeline) organized in tabs with filters.
  • Internationalization: Supports English and Russian (switch via ?lng=en or ?lng=ru).
  • Responsive UI: Built with Bootstrap Cosmo theme.
  • Cron Scheduler: Updates vacancy data every hour automatically.

Prerequisites

  • Node.js v14 or higher
  • npm (comes with Node.js)

Installation

  1. Clone the repository

    git clone https://github.com/yourusername/job_dashboard.git
    cd job_dashboard
  2. Install dependencies

    npm install

Configuration

No external API keys are required. Ensure network access to hh.ru.

Usage

  1. Scrape job listings

    node scrape.js
    • Fetches up to 1000 vacancies from hh.ru and saves to data/jobs.json.
  2. Start the server

    npm start
    • Runs the Express server on http://localhost:3000.
  3. Open in browser

Project Structure

job_dashboard/
├── data/                 # Scraped job JSON data
│   └── jobs.json
├── locales/              # i18n translation files
│   ├── en/translation.json
│   └── ru/translation.json
├── public/
│   ├── css/style.css
│   └── js/dashboard.js
├── scrape.js             # Script to fetch jobs from hh.ru API
├── server.js             # Express app entrypoint
├── views/                # EJS templates
│   ├── layout.ejs
│   ├── index.ejs
│   ├── jobs.ejs
│   ├── job_detail.ejs
│   └── dashboard.ejs
├── package.json
└── README.md             # This file

Internationalization

Cron Scheduler

  • The server automatically runs scrapeJobs() every hour in the Europe/Amsterdam timezone.
  • To modify schedule, edit the cron expression in server.js.

Troubleshooting

  • Empty jobs list: Run node scrape.js to populate data/jobs.json.
  • Filtering errors: Ensure you have cleared browser cache and disabled conflicting extensions.
  • Port conflicts: Set PORT env var before starting: PORT=4000 npm start.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages