Skip to content

Repository files navigation

JobPulse Logo

CI License GitHub issues GitHub stars GitHub forks Vite 8 React 19 Tailwind CSS 4 Supabase

JobPulse is a personal job search intelligence platform and customizable tracking dashboard.

It turns fragmented job hunting into a structured engineering workflow: aggregating scraped feeds, calculating skill-match relevance scores, tracking opportunities via a keyboard-first master-detail view, and visualizing recruitment funnel analytics across customizable dashboard widgets.

Why JobPulse?

  • Customizable Analytics Dashboard: Reorderable bento analytics widgets with drag-and-drop layout persistence backed by @dnd-kit and local storage.
  • Keyboard-First Opportunity Pipeline: Two-pane master-detail list with keyboard cycling (j/k), quick apply (Enter), and rapid status shortcuts (a/i/t/n for Applied, Interview, Interested, and Not Interested) with real-time Supabase synchronization.
  • Match Relevance Scoring: Automatically scores incoming roles based on your skills, target domain, seniority, and minimum salary thresholds.
  • Employer Watchlist & Company Intelligence: Monitor hiring signals, interview ratings, and culture notes for target organizations.
  • Sourcing Telemetry: Real-time status and health telemetry across automated scrapers and job board ingestions.
  • Recruitment Funnel Analytics: Interactive Recharts breakdown of pipeline velocity, skill frequency demand, and salary distributions.
  • Command Palette (Cmd+K / Ctrl+K): Keyboard-first navigation to quickly jump between views, search jobs, and execute actions.
  • High-Density Dark UI: Linear-inspired hairline surfaces, crisp typography, and responsive drawer inspectors optimized for fast triage.

Stack

  • Framework: React 19 + TypeScript + Vite 8
  • Server State & Caching: TanStack Query (@tanstack/react-query)
  • Styling: Tailwind CSS 4 + Lucide React icons
  • Dashboard Layout & Reordering: @dnd-kit (core & sortable)
  • Data & Auth: Supabase (@supabase/supabase-js)
  • Virtualization: TanStack Virtual (@tanstack/react-virtual)
  • Visualizations: Recharts
  • Command Menu: cmdk
  • Linting & Type Safety: Oxlint + TypeScript (tsc)
  • Tooling & Git Hooks: Mise + Lefthook

Quick Start

Requires Node.js 20.19.0 or newer (Node 22.12.0 recommended via mise).

  1. Install pinned tooling:

    mise install
  2. Install dependencies:

    npm install
  3. Install Git hooks:

    npm run prepare
  4. Configure environment:

    Copy the example environment file:

    cp .env.example .env

    Populate your Supabase project credentials in .env:

    VITE_SUPABASE_URL=https://your-project.supabase.co
    VITE_SUPABASE_PUBLISHABLE_KEY=sb_publishable_...
    VITE_SUPABASE_ANON_KEY=sb_publishable_...
  5. Start local dev server:

    npm run dev

    Open your browser at http://localhost:5173.

  6. Run local quality checks:

    npm run check

Repository Structure

├── .github/
│   ├── dependabot.yml           # Weekly automated dependency updates
│   └── workflows/
│       └── ci.yml               # CI build and code quality verification
├── public/                      # Static assets and icons
├── src/
│   ├── assets/                  # Hero and bundled media assets
│   ├── components/
│   │   ├── auth/                # Supabase login and access control
│   │   ├── charts/              # Pipeline, relevance, and skill charts
│   │   ├── dashboard/           # Sidebar, navigation, and sortable widgets
│   │   ├── employers/           # Employer watchlist management
│   │   ├── jobs/                # Master-detail split, list view, and detail inspector
│   │   ├── profile/             # Candidate criteria and scoring weights
│   │   ├── sources/             # Job board scrapers and ingestion status
│   │   └── ui/                  # Reusable primitives (buttons, sheets, cmdk)
│   ├── hooks/                   # TanStack query and mutation hooks (useQueries.ts)
│   ├── lib/                     # Supabase client, query client, storage, and profile utils
│   ├── types/                   # Domain & database types (job.ts, database.types.ts)
│   ├── App.tsx                  # Root application shell and view router
│   └── main.tsx                 # Entrypoint
├── supabase/                    # Supabase configuration & versioned migrations
│   ├── config.toml              # Supabase CLI project config
│   └── migrations/              # SQL schema migrations
├── AGENTS.md                    # Operational guidelines for AI agents
├── CODEOWNERS                   # Repository code ownership
├── lefthook.yml                 # Pre-commit and pre-push Git hook triggers
├── mise.toml                    # Tool version specifications
├── package.json                 # Project dependencies and lifecycle scripts
└── vite.config.ts               # Vite bundler configuration

Quality Verification

Run checks in order, or use npm run check for the full pipeline:

# Fast linter
npm run lint

# TypeScript compilation check without emit
npm run typecheck

# Production build
npm run build

# Combined gate
npm run check

Contributing

See CONTRIBUTING.md.

Agent Notes

For coding assistants and autonomous agents, see AGENTS.md.

License

MIT License. See LICENSE.

Star History

Star History Chart

About

jobpulse website source.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages