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/.