Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
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: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.