{"id":30905274,"url":"https://github.com/depapp/zk-job-board","last_synced_at":"2025-10-08T19:52:28.755Z","repository":{"id":313437919,"uuid":"1051098106","full_name":"depapp/zk-job-board","owner":"depapp","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-06T02:06:58.000Z","size":116,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-06T04:08:31.293Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/depapp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-05T12:46:11.000Z","updated_at":"2025-09-06T02:07:01.000Z","dependencies_parsed_at":"2025-09-06T04:08:35.266Z","dependency_job_id":"ff7e45ad-7bee-43ab-824d-94638b42e7cd","html_url":"https://github.com/depapp/zk-job-board","commit_stats":null,"previous_names":["depapp/zk-job-board"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/depapp/zk-job-board","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/depapp%2Fzk-job-board","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/depapp%2Fzk-job-board/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/depapp%2Fzk-job-board/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/depapp%2Fzk-job-board/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/depapp","download_url":"https://codeload.github.com/depapp/zk-job-board/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/depapp%2Fzk-job-board/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274278170,"owners_count":25255314,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-09T02:00:10.223Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-09T10:08:23.437Z","updated_at":"2025-10-08T19:52:23.715Z","avatar_url":"https://github.com/depapp.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ZK Job Board - Midnight Network Challenge Submission\n\nA privacy-preserving job board where applicants prove they meet job requirements without revealing their personal attributes, built using Midnight Network's Compact language and MidnightJS.\n\n## Full Explanation on DEV.to Article\n- https://dev.to/depapp/privacy-first-job-applications-with-midnight-network-ing \n\n## 🎯 Overview\n\nThe ZK Job Board enables:\n- **Employers** to post jobs with specific requirements (skills, experience, region)\n- **Applicants** to prove they meet requirements without revealing their actual credentials\n- **Privacy-first** interactions using zero-knowledge proofs\n- **Anti-spam** protection via nullifiers (prevents double applications)\n\n### Key Features\n\n- ✅ **Zero-Knowledge Proofs**: Applicants prove eligibility without exposing personal data\n- 🔒 **Privacy by Design**: Only proof validity is revealed, not underlying attributes\n- 🎨 **Accessible UI**: WCAG-compliant interface with clear privacy indicators\n- 🚀 **Midnight Integration**: Uses Compact circuits and MidnightJS for ZK functionality\n- 📝 **Apache 2.0 Licensed**: Fully open-source\n\n## 🚀 Quick Start\n\n### Prerequisites\n\n- Node.js 18+ and npm\n- Git\n- Modern web browser (Chrome, Firefox, Safari, Edge)\n\n### Installation\n\n```bash\n# Clone the repository\ngit clone https://github.com/depapp/zk-job-board.git\ncd zk-job-board\n\n# Install dependencies\nnpm install\n\n# Set up environment variables\ncp .env.example .env.local\n# Edit .env.local with your Midnight testnet configuration\n\n# Compile ZK circuits\nnpm run compile-circuits\n\n# Deploy verifier contract (testnet)\nnpm run deploy-verifier\n\n# Start development server\nnpm run dev\n```\n\nVisit `http://localhost:5173` to see the application.\n\n## 🏗️ Architecture\n\n```\n┌─────────────┐     ┌──────────────┐     ┌─────────────┐\n│   Employer  │────▶│  Job Policy  │────▶│  On-Chain   │\n│     UI      │     │   Creation   │     │   Storage   │\n└─────────────┘     └──────────────┘     └─────────────┘\n                                                 │\n                                                 ▼\n┌─────────────┐     ┌──────────────┐     ┌─────────────┐\n│  Applicant  │────▶│ ZK Proof Gen │────▶│  Verifier   │\n│     UI      │     │  (Midnight)  │     │  Contract   │\n└─────────────┘     └──────────────┘     └─────────────┘\n```\n\n### Components\n\n1. **Compact Circuits** (`circuits/`): Define the ZK logic for attribute verification\n2. **Smart Contracts** (`contracts/`): On-chain verifier for proof validation\n3. **React UI** (`app/`): User interface for employers and applicants\n4. **MidnightJS Integration** (`app/lib/midnight.ts`): Proof generation and verification\n\n## 📋 How It Works\n\n### For Employers\n1. Create a job posting with requirements:\n   - Required skills (e.g., TypeScript, React, ZK)\n   - Minimum experience level\n   - Allowed regions\n2. Job policy is hashed and stored on-chain\n3. Applicants can view requirements and apply\n\n### For Applicants\n1. Generate mock credentials (skills, experience, region)\n2. Create a ZK proof that you meet job requirements\n3. Submit proof without revealing actual attributes\n4. System verifies proof and prevents double applications\n\n### Privacy Guarantees\n- ✅ Skills are proven as a subset match without revealing all skills\n- ✅ Experience is proven as \u003e= minimum without revealing exact years\n- ✅ Region membership is proven without revealing specific location\n- ✅ Nullifiers prevent double applications while maintaining unlinkability across jobs\n\n## 🧪 Testing\n\n```bash\n# Run unit tests\nnpm test\n\n# Run e2e tests\nnpm run test:e2e\n\n# Test circuit constraints\nnpm run test:circuits\n```\n\n## 📁 Project Structure\n\n```\nzk-job-board/\n├── circuits/              # Compact ZK circuits\n│   ├── job_eligibility.cmp\n│   └── params.toml\n├── contracts/             # Smart contracts\n│   └── JobEligibilityVerifier.ts\n├── app/                   # React application\n│   ├── src/\n│   │   ├── routes/       # Page components\n│   │   ├── components/   # Reusable UI components\n│   │   ├── lib/          # Core logic \u0026 Midnight integration\n│   │   └── state/        # State management\n│   └── index.html\n├── scripts/              # Build and deployment scripts\n├── tests/                # Test suites\n├── docs/                 # Documentation\n└── config/               # Configuration files\n```\n\n## 🔐 Security \u0026 Privacy\n\n- All credentials are **mocked** - no real personal data is used\n- Proofs are generated client-side - sensitive data never leaves your device\n- Nullifiers prevent replay attacks while maintaining privacy\n- Open-source for full transparency\n\n## 📄 License\n\nThis project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdepapp%2Fzk-job-board","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdepapp%2Fzk-job-board","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdepapp%2Fzk-job-board/lists"}