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。 以下為已儲存的摘錄。
AI-assisted job board connecting skilled-trades workers with employers: a
worker "Skill Passport" (verified profile, projects, certifications,
references), employer job postings + applicant management, and an admin CMS.
Stack: React 19 + TypeScript + Vite, Supabase
(Postgres + Auth + Storage, Row Level Security throughout), Vercel
(static hosting + serverless functions for anything that must stay
server-side, e.g. the Gemini API key), deployed on Vercel.
2. Create a Supabase project at supabase.com (free tier is fine).檢視完整 README ↗AI-assisted job board connecting skilled-trades workers with employers: a worker "Skill Passport" (verified profile, projects, certifications, references), employer job postings + applicant management, and an admin CMS.
Stack: React 19 + TypeScript + Vite, Supabase (Postgres + Auth + Storage, Row Level Security throughout), Vercel (static hosting + serverless functions for anything that must stay server-side, e.g. the Gemini API key), deployed on Vercel.
Install dependencies
npm install
Create a Supabase project at supabase.com (free tier is fine).
Apply the database schema. Either:
supabase link --project-ref <your-project-ref> then supabase db push (applies supabase/migrations/*.sql in order), orsupabase/apply_all.sql (a one-shot concatenation of the same migrations, for convenience).Copy env vars
cp .env.local.example .env.local
Fill in from your Supabase project's Settings → API:
VITE_SUPABASE_URL, VITE_SUPABASE_ANON_KEY — safe to expose client-side; Postgres RLS is the actual access-control boundary.SUPABASE_SERVICE_ROLE_KEY — server-only, used by api/admin/delete-user.ts. Never prefix a secret with VITE_ — Vite ships anything with that prefix straight into the client bundle.GEMINI_API_KEY — from aistudio.google.com, server-only, used by api/ai/generate-job-details.ts.Run it
npm run dev # Vite dev server (frontend only)
npm run typecheck # tsc --noEmit
npm run build # production build
To exercise the /api/* serverless functions locally too, use the Vercel CLI instead of plain vite: vercel dev (reads the same .env.local).
npm install -g vercel # if you don't have it
vercel link # first time: creates/links a Vercel project
vercel env add VITE_SUPABASE_URL
vercel env add VITE_SUPABASE_ANON_KEY
vercel env add SUPABASE_SERVICE_ROLE_KEY
vercel env add GEMINI_API_KEY
vercel --prod
vercel.json sets the Vite framework preset and a SPA rewrite (all
non-/api routes serve index.html, since this is a client-side-routed
React Router app).
pages/, components/, contexts/ — the React app.services/db.ts — the entire Postgres/Supabase data-access layer (auth stays in contexts/AuthContext.tsx).services/geminiService.ts — thin client for the AI endpoints below; no API key here.api/ — Vercel serverless functions: ai/generate-job-details.ts (Gemini proxy), admin/delete-user.ts (privileged, service-role-key account deletion, re-verifies the caller is an admin server-side).supabase/migrations/ — the database schema, RLS policies, storage buckets, and seed data, in apply order.instructions/ — the original product/architecture notes this app was scaffolded from (Firebase-era; superseded by the above where they conflict).Every table has Row Level Security enabled — there is no client code path
that can read or write data it isn't entitled to; the database enforces it,
not the frontend. Admin status lives in profiles.role, checked via a
SECURITY DEFINER is_admin() helper, never via a client-settable flag.