TypeScript

x-hiring

๐Ÿค— ๆฏๆ—ฅๆœ€ๆ–ฐๆ‹›่˜ไฟกๆฏ๏ผŒไฝฟ็”จ Google AI ๆๅ–ๆ‘˜่ฆ

H

hehehai

Derniรจre activitรฉ 20 aoรปt 2026
hehehai/x-hiring

458

รฉtoiles

34

forks

3

issues ouvertes

hiringjobsnextjsshadcn-ui

Ce README est souvent en anglais.

X-Hiring

X-Hiring ่šๅˆ V2EXใ€็”ต้ธญ็คพๅŒบไธŽ่ฐๅœจๆ‹›ไบบ็š„ไบ’่”็ฝ‘ๆ‹›่˜ไฟกๆฏ๏ผŒๅนถไฝฟ็”จ Cloudflare Workers AI ็”Ÿๆˆ่Œไฝๆ‘˜่ฆใ€‚

GitHub stars GitHub forks Website License

Features

  • ๅคšๆบ่šๅˆ - ๆŠ“ๅ– V2EXใ€็”ต้ธญ็คพๅŒบไธŽ่ฐๅœจๆ‹›ไบบ็š„ๅ…ฌๅผ€ๆ‹›่˜ไฟกๆฏ
  • AI ๆ‘˜่ฆ - ไฝฟ็”จ Workers AI ๆๅ–่Œไฝๆ ‡้ข˜ใ€ๆ‘˜่ฆๅŠๅฏ้€‰็š„ๅœฐ็‚นใ€ๅฒ—ไฝใ€่–ช่ต„ใ€ๅนด่–ชใ€ๆ€งๅˆซๅ’Œๅญฆๅކๅญ—ๆฎต
  • ๆ‹›่˜็ญ›้€‰ - ๆ”ฏๆŒๅ…ณ้”ฎ่ฏใ€ๆ—ฅๆœŸใ€็ป“ๆž„ๅŒ–่Œไฝๅญ—ๆฎตๅ’Œ่ถ‹ๅŠฟ็ญ›้€‰
  • ็›ธๅ…ณ่Œไฝ - ๆ นๆฎ่ง„่ŒƒๅŒ–ๆ ‡็ญพๆŽจ่็›ธไผผ่Œไฝ
  • RSS - ๆไพ› /feed.xml ่ฎข้˜…๏ผŒๅนถไฝฟ็”จ Cloudflare KV ็ผ“ๅญ˜
  • Cloudflare Runtime - D1ใ€KVใ€Queuesใ€Cronใ€Workers AI ๅ’Œ AI Gateway ๅ…จ้ƒจ่ฟ่กŒๅœจ Worker ๆžถๆž„

Tech Stack

Category Technology
Frontend React 19, TanStack Start (SSR), TanStack Router
Styling Tailwind CSS v4, shadcn/ui (base-nova)
API Layer oRPC (end-to-end type-safe RPC)
Database Cloudflare D1 + Drizzle ORM
Authentication Better Auth (ๅฏ้€‰้‚ฎ็ฎฑ/OAuth่ƒฝๅŠ›)
Caching Cloudflare KV
Scheduling Cron Triggers + Cloudflare Queues
AI Workers AI (@cf/openai/gpt-oss-120b) + AI Gateway + Vercel AI SDK structured output
Deployment Cloudflare Workers + Wrangler
Code Quality Biome + Ultracite
Package Manager pnpm (monorepo workspaces)

Project Structure

x-hiring/
โ”œโ”€โ”€ apps/
โ”‚   โ””โ”€โ”€ web/                      # Full-stack application (port 3002)
โ”‚       โ””โ”€โ”€ src/
โ”‚           โ”œโ”€โ”€ routes/           # File-based routing
โ”‚           โ”‚   โ”œโ”€โ”€ (app)/        # Recruitment pages
โ”‚           โ”‚   โ””โ”€โ”€ api/          # Health, ingestion, auth and RPC handlers
โ”‚           โ”œโ”€โ”€ components/
โ”‚           โ”‚   โ”œโ”€โ”€ ui/           # shadcn/ui components
โ”‚           โ”‚   โ”œโ”€โ”€ shared/       # Shared components
โ”‚           โ”‚   โ””โ”€โ”€ features/     # Feature-specific components
โ”‚           โ”œโ”€โ”€ lib/              # Utilities (auth-client, utils)
โ”‚           โ”œโ”€โ”€ hooks/            # Custom React hooks
โ”‚           โ””โ”€โ”€ stores/           # State management
โ”‚
โ”œโ”€โ”€ packages/
โ”‚   โ”œโ”€โ”€ api/                      # oRPC entrypoints + routers/services
โ”‚   โ”‚   โ””โ”€โ”€ src/
โ”‚   โ”‚       โ”œโ”€โ”€ routers/          # Thin route handlers for app and auth APIs
โ”‚   โ”‚       โ”œโ”€โ”€ services/         # Recruitment domain business logic
โ”‚   โ”‚       โ””โ”€โ”€ lib/              # Shared server utilities
โ”‚   โ”œโ”€โ”€ auth/                     # Better Auth configuration
โ”‚   โ”œโ”€โ”€ db/                       # Drizzle database schema
โ”‚   โ”œโ”€โ”€ email/                    # React Email templates
โ”‚   โ””โ”€โ”€ common/                   # Shared types and validations

Installation

Prerequisites

  • Node.js 24+
  • pnpm 10+
  • Cloudflare account (for remote D1 / Workers deploy)

Setup

  1. Clone the repository and install dependencies:
git clone <repository-url> x-hiring
cd x-hiring
pnpm install
  1. Configure local Worker secrets:
cp apps/web/.dev.vars.example apps/web/.dev.vars

Edit apps/web/.dev.vars with your values (see Environment Variables below). For local TanStack Start + Cloudflare development, this is the preferred config source. apps/web/.env is now only a legacy fallback for plain Node-based tooling.

  1. Configure D1 in apps/web/wrangler.toml:
  • Local development uses the checked-in env.development D1 binding together with .wrangler/state.
  • Before running against a real Cloudflare database, replace database_id with your actual D1 database ID.
  • Keep the binding name as DB, because the app and auth layer resolve D1 from that binding.
  1. Initialize the local D1 schema:
pnpm run db:generate
pnpm run db:migrate

Optional seed data:

pnpm run db:seed

db:seed will reset the local D1 sample tables before inserting fresh demo data.

Development

Start the development server:

pnpm run dev

Visit http://localhost:3002

Commands

# Development
pnpm run dev          # Start all apps (runs local D1 migrations, then vite dev with CLOUDFLARE_ENV=development)
pnpm run dev:web      # Start web app only

# Type Checking
pnpm run check-types  # Check TypeScript types across all packages

# Code Quality
pnpm run check        # Vite+ / Oxlint checks
vp fmt                # Format with Oxfmt
vp lint --fix         # Auto-fix lint issues

# Database
pnpm run db:generate            # Generate migration files
pnpm run db:migrate             # Alias of local D1 migration
pnpm run db:migrate:local       # Apply migrations to local D1 (development env)
pnpm run db:migrate:remote      # Apply migrations to remote D1 (development env)
pnpm run db:migrate:production  # Apply migrations to production D1
pnpm run db:seed                # Reset and seed local D1 with sample data
pnpm run cf-typegen             # Generate Wrangler/Cloudflare runtime types from development env

Environment Variables

Files and loading

  • Use apps/web/.dev.vars for local Worker development with vite dev / Wrangler bindings.
  • Keep non-secret runtime defaults in apps/web/wrangler.toml.
  • apps/web/.env is only a fallback for plain Node-based tooling.
  • In the Cloudflare runtime, server-side code reads Worker bindings/env first.
  • Only variables prefixed with VITE_ are exposed to the browser. Never put secrets in VITE_ variables.

Variable Reference

Core Configuration

Variable Required Description Notes
CORS_ORIGIN Yes Allowed origin for auth and API requests Set to your app URL in production (e.g. https://your-domain.com).
BETTER_AUTH_URL Yes Base URL used by Better Auth for redirects and emails Should match the public URL of the app.

Database (D1)

  • D1 is configured through the DB binding in apps/web/wrangler.toml, not through DATABASE_URL.
  • Local D1 state is persisted in apps/web/.wrangler/state after running migrations.
  • Local development uses the development environment in Wrangler config.
  • Replace the placeholder database_id values in Wrangler config before applying remote migrations or deploying.

Authentication

Variable Required Description Notes
BETTER_AUTH_SECRET Yes Token signing secret Generate with pnpm dlx @better-auth/cli@latest secret and keep it private.
GITHUB_CLIENT_ID Optional GitHub OAuth client ID Needed for GitHub login.
GITHUB_CLIENT_SECRET Optional GitHub OAuth client secret Needed for GitHub login; keep secret.
GOOGLE_CLIENT_ID Optional Google OAuth client ID Needed for Google login.
GOOGLE_CLIENT_SECRET Optional Google OAuth client secret Needed for Google login; keep secret.

API Namespaces

  • app.job.*: job listing, detail, related-job and RSS data services
  • auth.*: authentication-related endpoints retained by the Worker API

Ingestion

Variable Required Description Notes
INGESTION_TRIGGER_SECRET Optional Secret for the protected manual ingestion trigger Send as Authorization: Bearer ...; Cron and Queue execution do not use this HTTP secret.
AI_JOB_MODEL Yes Workers AI model used for job analysis Current default is @cf/openai/gpt-oss-120b; override for a lower-latency model when needed.
AI_GATEWAY_ID Yes AI Gateway identifier Used for caching and observability of AI requests.

Build

pnpm run build

Build output is located at apps/web/dist/ (client/ for static assets, server/ for the server bundle).

Deployment

This project is configured for Cloudflare Workers + D1 through the checked-in apps/web/wrangler.toml.

Production Build

pnpm run build

Cloudflare Deploy Checklist

  1. Create real D1 databases in Cloudflare and set the database_id values in apps/web/wrangler.toml.
  2. Apply the schema to the remote D1 database:
pnpm run db:migrate:production
  1. Set production secrets with Wrangler, for example:
cd apps/web
wrangler secret put BETTER_AUTH_SECRET
wrangler secret put INGESTION_TRIGGER_SECRET
  1. Deploy the app:
pnpm run deploy

Wrangler will deploy the Worker plus the built client assets from apps/web/dist/.

License

Apache License 2.0

Projets similaires

ๅšๆŒๅˆ†ไบซ GitHub ไธŠ้ซ˜่ดจ้‡ใ€ๆœ‰่ถฃๅฎž็”จ็š„ๅผ€ๆบๆŠ€ๆœฏๆ•™็จ‹ใ€ๅผ€ๅ‘่€…ๅทฅๅ…ทใ€็ผ–็จ‹็ฝ‘็ซ™ใ€ๆŠ€ๆœฏ่ต„่ฎฏใ€‚A list cool, interesting projects of GitHub.

aialgorithms-and-data-structuresbackend
GGitHubDaily
48ย k รฉtoiles4,7ย k

ๆฑ‡่šๅ…จ็ฝ‘็ƒญ็‚น่ต„่ฎฏ๏ผŒๅฎžๆ—ถๆŽŒๆก็ƒญ้—จ่ถ‹ๅŠฟ

TypeScriptherouinextjs16react
Bbaiwumm
277 รฉtoiles96

Open-source AI job search agent: scan job portals, evaluate listings into a structured A-H report with a global 1-5 score, tailor your CV, track applications โ€” runs locally in your AI coding CLI (Claude Code, Codex, OpenCode, Antigravityโ€ฆ)

JavaScriptai-agentai-job-searchats
Ccareer-ops-hq
73ย k รฉtoiles13,7ย k