Javis OS
Javis OS is an Agentic AI that assists entrepreneurs in business tasks, helping them grow their work.
AI translation
Schema, byten, anslagstavla och placeringschecklista för personliga assistenter
Translation pending
BusinessTypeScript · PLpgSQLGitHub @efterglodsamOnlineOwner 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.
Cue – schema- & samarbetsapp för personliga assistenter Cue är en enkel, mobilanpassad PWA för små team (2–15 personer) av personliga assistenter inom hemtjänst/hemvård som jobbar 24-timmarspass och avlöser varandra. Appen samlar:Read the full README ↗
Cue är en enkel, mobilanpassad PWA för små team (2–15 personer) av personliga assistenter inom hemtjänst/hemvård som jobbar 24-timmarspass och avlöser varandra. Appen samlar:
Allt gränssnitt är på svenska.
supabase/schema.sql och kör det. Detta skapar
alla tabeller, policys (Row Level Security), en SQL-funktion för att
bekräfta byten atomiskt, samt en storage-bucket för foton.http://localhost:3000/auth/callbackhttps://ditt-projekt.vercel.app/auth/callbackFörsta användaren blir automatiskt admin. Så snart du loggar in en gång skapas en profilrad, och den allra första personen i systemet blir admin (kan bjuda in/ta bort kollegor och byta admin-status på andra).
cp .env.example .env.local
Fyll i .env.local med värdena från Supabase:
NEXT_PUBLIC_SUPABASE_URL=https://ditt-projekt.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=din-anon-key
SUPABASE_SERVICE_ROLE_KEY=din-service-role-key
SUPABASE_SERVICE_ROLE_KEY används endast server-side (i Server Actions) för
att skicka inbjudningar och ta bort kollegor. Den får aldrig committas eller
skickas till klienten.
npm install
npm run dev
Öppna http://localhost:3000. Logga in med din e-post – du får ett mejl med en inloggningslänk (magic link).
npm run test # enhets- och Server Action-tester (Vitest, inga beroenden)
npm run test:db # tester mot en riktig Postgres-instans (RLS + confirm_swap)
npm run test:all # båda
npm run test täcker valideringen av pass (start/sluttid), hela
bytes-tillståndsmaskinen (src/lib/validation/), Server Actions
(src/lib/actions/, med en mockad Supabase-klient), date-utils.ts och
realtime-reducern.
npm run test:db kräver en Postgres-instans (DATABASE_URL, default
postgres://postgres:[email protected]:5432/postgres – i CI startas den
som en service-container, se .github/workflows/ci.yml). Den kör
supabase/schema.sql mot en engångsdatabas (se db-tests/fixtures/ för de
minimala auth/storage-stubbar som gör det möjligt utan Docker eller ett
riktigt Supabase-projekt) och testar den faktiska
atomiciteten i confirm_swap – inklusive ett race-test som verifierar att
radlåset (for update) faktiskt blockerar en samtidig bekräftelse – samt
RLS-policyerna på profiles och notes. Det är detta lager, inte
applikationslagrets validering, som faktiskt garanterar att ett pass aldrig
kan hamna i ett inkonsekvent tillstånd (t.ex. två personer tilldelade samma
pass).
.env.local (NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY,
SUPABASE_SERVICE_ROLE_KEY).https://ditt-projekt.vercel.app/auth/callback) i redirect-listan.Både Vercel och Supabase har generösa gratisnivåer som räcker gott för ett team på 2–15 personer.
Som admin, gå till Inställningar i appen och skicka en inbjudan via e-post. Personen får ett mejl med en inloggningslänk och blir automatiskt medlem i teamet (skapar sin profilrad vid första inloggningen).
src/
├── app/
│ ├── (app)/ # Skyddade sidor (kräver inloggning)
│ │ ├── schema/ # Gemensamt schema
│ │ ├── byten/ # Passbyten
│ │ ├── anslagstavla/ # Anslagstavla
│ │ ├── brukare/ # Brukare + placeringschecklista
│ │ └── installningar/# Admin: bjud in/ta bort kollegor
│ ├── login/ # Inloggning (magic link)
│ ├── auth/callback/ # OAuth/OTP-callback
│ └── offline/ # Offline-fallback för service worker
├── components/ # UI-komponenter per feature
├── lib/
│ ├── actions/ # Server Actions (skapa/uppdatera/ta bort)
│ ├── validation/ # Ren, testbar valideringslogik
│ ├── hooks/ # useRealtimeList m.fl.
│ └── supabase/ # Supabase-klienter + handskrivna databastyper
supabase/
└── schema.sql # Hela databasschemat, RLS-policys och funktioner
Se supabase/schema.sql för fullständig
definition. I korthet:
profiles – en rad per användare, kopplad till Supabase Authclients – brukare/hemshifts – pass (start, slut, tilldelad person, ev. brukare, status)swap_requests – bytesförfrågningar med tillstånden oppen →
vantar_bekraftelse → bekraftad/avbojd/avbrutennotes – anslagstavlans inläggplacement_items + placement_confirmations + placement_item_history –
"samma sak, samma plats"-checklistan med bekräftelser och ändringshistorikAlla tabeller har Row Level Security aktiverat. Eftersom alla i teamet ska se
samma schema/anslagstavla finns ingen multi-tenant-uppdelning – policyerna
säkerställer bara att man måste vara inloggad, samt att vissa åtgärder (t.ex.
redigera/ta bort en anteckning) endast får göras av den som skapade den.
Ett undantag: profiles.is_admin är särskilt skyddad – en användare får
uppdatera sin egen profil men aldrig sin egen admin-status, och endast en
admin får ändra någon annans (se public.is_admin() och policyn på
profiles i supabase/schema.sql, samt db-tests/rls-profiles.test.ts).
Bekräftelse av ett pass-byte görs via SQL-funktionen confirm_swap, som
uppdaterar bytesförfrågan och flyttar pass-ägarskapet i en och samma
transaktion – detta garanterar att ett pass aldrig kan hamna i ett
inkonsekvent tillstånd (t.ex. två personer tilldelade samma pass, eller ett
"bekräftat" byte som inte faktiskt genomfördes).
Schema, byten, anslagstavla och checklistan uppdateras direkt för alla i teamet via Supabase Realtime (Postgres-ändringar strömmas till klienterna) – ingen omladdning krävs.