Swipe-based freelance gig matching. Freelancers swipe on gigs, clients pick from interested freelancers. Payment flows through Lancerin via Mayar.
Built for the Mayar Vibecoding Competition 2026.
Live: lancerin.rxmxdhxni.workers.dev
- Client posts a gig with budget range, skills, and deadline
- Freelancer sees AI-ranked gigs and swipes right to apply
- Client picks a freelancer and sets an agreed amount
- Payment — Mayar generates an invoice, client pays through the link
- Freelancer delivers, client confirms — gig complete
| Layer | Tech |
|---|---|
| Framework | Vinext (Next.js App Router on Vite) |
| Auth | NextAuth v4, Google OAuth |
| UI | Tailwind CSS v4, Framer Motion, Iconify Solar |
| AI | OpenRouter (MiniMax M2.5) for gig ranking |
| Payments | Mayar REST API |
| Storage | JSON files (dev), Cloudflare KV (prod) |
| Deploy | Cloudflare Workers |
npm install
cp .env.example .env.local # fill in keys
npm run seed # reset demo data
npm run dev # http://localhost:3000See .env.example. Required: NEXTAUTH_SECRET, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET. Optional: MAYAR_API_KEY, OPENROUTER_API_KEY (app works without these using fallbacks).
| Command | Description |
|---|---|
npm run dev |
Vinext dev server |
npm run build |
Production build |
npm run seed |
Reset local data/*.json |
npm run seed:kv |
Reset local + remote Cloudflare KV |
npm run deploy |
Deploy to Cloudflare Workers |
npm run typecheck |
TypeScript strict check |
npm run lint |
ESLint |
npm run build
npx wrangler deploySecrets (set via npx wrangler secret put <NAME>): NEXTAUTH_SECRET, GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, MAYAR_API_KEY, OPENROUTER_API_KEY.