Skip to content

Repository files navigation

Arkiv Jobs

A web3-native job board where job postings, company profiles, and applications are owned by users and stored on Arkiv.

Live: https://arkiv-job-board.vercel.app

  • Companies (wallet required): Create a company profile, post jobs, edit listings, mark as filled, and see flag counts.
  • Job seekers (no wallet needed): Browse and search jobs, filter by status/location/employment/discipline, view company profiles, apply via external links.

All company and job data is stored on Arkiv (Kaolin testnet); listings are verifiable on-chain.


Tech stack

  • Frontend: React, TypeScript, Vite, Tailwind CSS, shadcn/ui, Framer Motion
  • Wallet: RainbowKit + wagmi
  • Data: Arkiv SDK (Kaolin testnet)

Quick start

Use the live app: https://arkiv-job-board.vercel.app

Run locally (Node.js 18+ and npm):

# Install dependencies
npm install

# Run the dev server (frontend only)
npm run dev

Open http://localhost:8080.


Wallet & network

  • Connect: Use the header Connect Wallet (e.g. MetaMask).
  • Network: Switch to Kaolin (Arkiv testnet, chain ID 60138453025).
  • Test ETH: Kaolin faucet if needed.

Only companies need a wallet (to create a profile and post/edit jobs). Job seekers can browse and apply without connecting.


Backend proxy (optional)

If the browser gets rpc method is not whitelisted or 403 when creating/updating entities, use the local proxy so writes go through your server:

  1. Copy .env.example to .env.
  2. Set ARKIV_PRIVATE_KEY to a testnet wallet private key (fund it from the faucet).
  3. Set VITE_ARKIV_API_URL=http://localhost:3001.
  4. Run frontend and proxy together:
npm run dev:full

The proxy runs at http://localhost:3001 and performs Arkiv writes; the owner of each entity is still the connected user’s wallet.


Features

Role Features
Companies Create company profile · Post job (title, description, apply link, location/employment type, expiry 30/60/90 days, optional salary & discipline) · Edit job · Edit company · Mark job as filled · View flag count per job
Job seekers Browse jobs · Search by keyword (title, description, company name) · Filter by status (active/filled/expired), location, employment type, seniority, discipline · View job detail & company profile · Apply via external link
All Flag suspicious listings (wallet required); flag count visible to job poster

Scripts

Command Description
npm run dev Start Vite dev server (port 8080)
npm run dev:full Start dev server + backend proxy (port 3001)
npm run build Production build
npm run preview Preview production build
npm test Run tests

Project structure

  • src/pages/ — Route pages (Jobs, JobDetail, Dashboard, CompanyForm, JobForm, etc.)
  • src/components/ — UI (JobCard, JobFilters, StatusBadge, Layout, shadcn components)
  • src/lib/api.ts — Arkiv API (companies, jobs, flags)
  • src/lib/arkivClient.ts — Arkiv public + wallet client
  • src/lib/types.ts — Shared types
  • server/index.mjs — Optional proxy for Arkiv writes

License

MIT.

About

Job board built on Arkiv with full ownership.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages