Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Fresher opportunities. One place.
FirstOffer is a job board built for one audience: students and freshers in India looking for internships and entry-level roles. No profile to fill in, no placement-cell queue — browse real openings, hand-checked and republished the same day they come in, and apply straight through the company's own link, Google Form, or HR contact.檢視完整 README ↗Fresher opportunities. One place.
FirstOffer is a job board built for one audience: students and freshers in India looking for internships and entry-level roles. No profile to fill in, no placement-cell queue — browse real openings, hand-checked and republished the same day they come in, and apply straight through the company's own link, Google Form, or HR contact.
🔗 Live: firstoffer.online
For job seekers
For the admin
---OPPORTUNITY--- ... ---END--- blocks) and publish them all in one go, or hand raw, unstructured text to an AI parser (Claude) that extracts the same fields.Monetization
| Layer | Choice |
|---|---|
| Framework | Next.js 16 (App Router, TypeScript) |
| Database & Auth | Supabase (Postgres, Row Level Security, Google OAuth) |
| Payments | Razorpay — UPI Autopay subscriptions + legacy one-time orders |
| Resend | |
| Push notifications | Web Push (VAPID) |
| AI parsing | Claude (@anthropic-ai/sdk), for the "Parse with AI" bulk-import path |
| Testing | Vitest |
| Hosting | Vercel |
| Mobile | Android app via Capacitor |
No Tailwind — styling is a hand-built design-token system in app/globals.css (CSS custom properties, light/dark mode, a shared component class set).
git clone https://github.com/nkbiradar/FirstOffer.git
cd FirstOffer
npm install
# create .env.local in the project root with the variables listed below
npm run dev
The app runs at http://localhost:3000.
| Variable | Used for |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Supabase project URL |
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY | Supabase anon/public key |
SUPABASE_SECRET_KEY | Supabase service-role key (server-only, admin writes) |
ADMIN_EMAILS | Comma-separated allowlist of admin sign-in emails |
RAZORPAY_KEY_ID / RAZORPAY_KEY_SECRET | Razorpay API credentials |
RAZORPAY_WEBHOOK_SECRET | Verifies incoming Razorpay webhook signatures |
RAZORPAY_MONTHLY_PLAN_ID / RAZORPAY_INTERNAL_PLAN_ID | Razorpay Plan IDs for the two subscription products |
RESEND_API_KEY / RESEND_FROM_EMAIL | Outbound "new opportunity" email alerts |
EMAIL_UNSUB_SECRET | Signs one-click email-unsubscribe links |
VAPID_PUBLIC_KEY / VAPID_PRIVATE_KEY / VAPID_SUBJECT | Web Push keys (server) |
NEXT_PUBLIC_VAPID_PUBLIC_KEY | Web Push public key (client) |
ANTHROPIC_API_KEY | Powers the "Parse with AI" bulk-import option |
NEXT_PUBLIC_SITE_URL | Base URL used in sitemaps, RSS, canonical/OG tags, and email links |
npm run dev # start the dev server
npm run build # production build
npm run start # run the production build
npm run lint # eslint
npm test # vitest
app/ # routes (App Router) — public site, /admin, /api
admin/ # admin dashboard, opportunity CRUD, bulk import
api/ # route handlers (admin mutations, payments, webhooks, email/push)
opportunities/ # public listing + detail pages
components/ # shared UI + admin form components
lib/
data/ # server-side reads/writes per table (opportunities, subscriptions, companies, ...)
payments/ # Razorpay client + subscription helpers
email/ # Resend client + templates
push/ # Web Push sending
notify/ # "new opportunity" push + email alert orchestration
ai/ # Claude-powered bulk-import extraction
supabase/
schema.sql # database schema, RLS policies (source of truth — run manually in the SQL Editor)
The main branch auto-deploys to Vercel on every push. Schema changes in supabase/schema.sql are not applied automatically — new/changed SQL blocks need to be run by hand in the Supabase SQL Editor after a deploy that depends on them.
Private, all rights reserved. This is a commercial product — not open for reuse or redistribution.