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.
Translation pending
Repo for Lenix-Ezjob
Translation pending
BusinessTypeScript · HTMLGitHub @shinnsohaiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
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).Read the full 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.