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。 以下為已儲存的摘錄。
QR-basert utleie av anleggsmaskiner. Kunden skanner, leier uten innlogging, og leverer ved å ta bilde. Admin har oversikt i liste og kalender. Begrunnelsen bak designvalgene ligger i docs/TEKNISK-PLAN.md. Gå til supabase.com, lag et gratis prosjekt, og velg region Frankfurt (eu-central-1) – nærmest Norge, og holder persondata innenfor EØS. Åpne SQL Editor i Supabase-dashbordet, lim inn hele innholdet i supabase/migrations/0001_init.sql og kjør det. Under Storage, lag en bøtte med navn bilder. Sett den til privat – bildene hentes gjennom signerte URL-er, ikke åpne lenker.檢視完整 README ↗
QR-basert utleie av anleggsmaskiner. Kunden skanner, leier uten innlogging, og leverer ved å ta bilde. Admin har oversikt i liste og kalender.
Begrunnelsen bak designvalgene ligger i docs/TEKNISK-PLAN.md.
Gå til supabase.com, lag et gratis prosjekt, og velg region Frankfurt (eu-central-1) – nærmest Norge, og holder persondata innenfor EØS.
Åpne SQL Editor i Supabase-dashbordet, lim inn hele innholdet i
supabase/migrations/0001_init.sql og kjør det.
Under Storage, lag en bøtte med navn bilder. Sett den til privat –
bildene hentes gjennom signerte URL-er, ikke åpne lenker.
cp .env.local.example .env.local
Fyll inn verdiene fra Project Settings → API i Supabase.
npm run dev
Under Authentication → Users i Supabase, legg til en bruker med e-post og passord. Kjør så i SQL Editor:
insert into admin_brukere (id, navn, epost)
select id, 'Ditt Navn', email from auth.users where email = '[email protected]';
Videre brukere opprettes fra /admin/brukere inne i appen.
src/app/m/[qr]/ Kundeside per maskin (QR-kode på maskinen)
src/app/retur/ Felles retur-side (QR-kode på arbeidsstedet)
src/app/leie/[ref]/ Kvittering og retur for én enkelt leie
src/app/ansatt/ Uttak til prosjekter for egne folk, krever innlogging
src/app/admin/ Adminpanel, krever innlogging
src/lib/supabase/ Databaseklienter
src/proxy.ts Sesjonsoppfriskning (het middleware.ts før Next 16)
supabase/migrations/ Databaseskjema
docs/ Teknisk plan
| Rolle | Kommer inn på | Kan ta ut utstyr til prosjekter |
|---|---|---|
| Admin | alt | ja |
| Servicearbeider | verkstedet | ja |
| Ansatt | /ansatt | ja |
Brukere lages under /admin/brukere med et midlertidig passord, som må
byttes ved første innlogging. Prosjektene de ansatte velger mellom, legges
inn under /admin/prosjekter. Internleie regnes ut når utstyret leveres,
og summeres per prosjekt – den faktureres ikke.
Varslingskoden ligger klar, men er ikke konfigurert. Uten oppsettet under laster alt som normalt; varsler hoppes stille over, og varslingsskjemaet i innstillingene gir feilmelding ved lagring.
supabase/migrations/0003_varsling.sql i
Supabase SQL Editor. (0002 må være kjørt først – den er kjørt.)send.techauge.no – subdomene, så SPF-en til vanlig e-post ikke
berøres. Lag en API-nøkkel. Gratisplanen har 1 domene og
3 000 e-poster/mnd, som holder lenge her.RESEND_API_KEY=re_...
[email protected]
CRON_SECRET=<tilfeldig streng, f.eks. openssl rand -hex 32>
/admin/innstillinger.
Test med «Send forfallsvarsel nå» – utfallet vises i loggen på
samme side.Merk: uten verifisert domene (kun [email protected]) kan Resend
bare sende til kontoens egen adresse. Kunder får ingenting, og
feilene vises kun i e-postloggen.
SUPABASE_SERVICE_ROLE_KEY omgår all radsikkerhet og må aldri havne i
nettleseren. Den brukes kun i server-ruter for kundeflyten, siden kunden ikke
er innlogget og derfor ikke har en sesjon databasen kan vurdere. Hver slik rute
verifiserer selv at enhets-ID eller leiereferanse hører til raden som hentes.
src/proxy.ts frisker kun opp sesjonen. Selve tilgangskontrollen ligger i
adminlayouten og i hver enkelt server action – server actions kjører som POST
mot siden de brukes fra, og kan derfor ikke sikres av proxy alene.
Radsikkerheten i databasen slipper bare rollen admin til (er_admin(), fra
migrasjon 0011). Service og ansatte kan lese sin egen brukerrad og ingenting
annet – alt de gjør, går gjennom server actions som sjekker tilgangen selv.
Prosjektet kjører Next.js 16, som har flere brytende endringer mot 14/15:
middleware.ts heter nå proxy.tscookies(), params og searchParams er asynkrone og må ventes pårevalidateTag() krever nå to argumenter--turbopack-flagget skal ikke brukesSe AGENTS.md. Dokumentasjonen ligger lokalt i node_modules/next/dist/docs/.