Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Fjöltenant vaktaplönunar- og stimpilklukkukerfi fyrir veitinga-/skemmtistaði. Byggt á Next.js 16 (App Router) + React 19 + Firebase (Auth + Firestore). Reiknar laun eftir þjónustusamningi SA og Eflingar (hótel og veitingahús): útgáfustýrðir, staðfestir taxtar, dagsett ráðningarkjör, álag, helgi- og stórhátíðardagar, vikuleg yfirvinna, læst uppgjör og CSV-útflutningur. Reglur og heimildir: docs/RATE_SOURCES.md. Útgáfuáætlun: docs/RELEASE_PLAN.md.README 전문 보기 ↗
Fjöltenant vaktaplönunar- og stimpilklukkukerfi fyrir veitinga-/skemmtistaði.
Byggt á Next.js 16 (App Router) + React 19 + Firebase (Auth + Firestore).
Reiknar laun eftir þjónustusamningi SA og Eflingar (hótel og veitingahús):
útgáfustýrðir, staðfestir taxtar, dagsett ráðningarkjör, álag, helgi- og
stórhátíðardagar, vikuleg yfirvinna, læst uppgjör og CSV-útflutningur. Reglur og
heimildir: docs/RATE_SOURCES.md. Útgáfuáætlun: docs/RELEASE_PLAN.md.
Hvert fyrirtæki (t.d. dillon, pablo) hefur sína slóð /[slug] og einangruð
gögn undir tv_companies/{id} í Firestore. Stjórnendur skrá sig inn með Google,
starfsfólk með notendanafni og 4 stafa PIN.
Fyrirtæki með ólíkar kennitölur geta verið í sama rekstrarhópi (groupId).
Þá gildir eftirfarandi um starfsfólk sem vinnur á fleiri en einum stað:
tv_groups/{groupId}).Kjör, yfirvinna, uppgjör og útflutningur haldast aðskilin eftir fyrirtæki.
Superadmin tengir fyrirtæki í hóp á /superadmin, en aðeins meðan nýja
fyrirtækið hefur ekkert starfsfólk.
Heimili vörunnar er timavordur.bling.is. Þar er forsíða með „Byrja frítt“, og hvert fyrirtæki er á /{slug}.
/byrja: eigandi skráir sig inn með Google (staðfest netfang) og fyllir út eitt form:
status: active, plan: free, source: self), og eigandinn verður owner.SUPERADMIN_NOTIFY_EMAIL, með upplýsingum um nýja staðinn;Slóð og kennitala eru einstök (vísar tv_slugs, tv_kennitolur í sömu færslu). Hver notandi getur stofnað 3 fyrirtæki á sólarhring og hver IP-tala 10. Superadmin getur lokað fyrirtæki (status: suspended); þá er öllum innskráningum hafnað en gögnin haldast. Opnun er jafn einföld.
Skilmálar, vinnslusamningur og persónuverndarupplýsingar (/skilmalar, /vinnslusamningur, /personuvernd) eru drög með útgáfunúmeri (src/lib/legal.ts). Lögfræðingur þarf að yfirfara þau áður en opnað er fyrir ókunnuga.
| Hlutverk | Aðgangur |
|---|---|
superadmin | Stofnar/sýslar með öll fyrirtæki (/superadmin). |
owner | Fullur aðgangur að einu fyrirtæki: stillingar, starfsfólk, vaktir. |
admin | Starfsmannaumsýsla (ekki owner/admin), ráðningarkjör, launavinnsla. |
manager | Sér stöðu liðs, stýrir vaktaplani, samþykkir leiðréttingar/vaktaskipti. Sér ekki laun annarra. |
staff | Eigin stimpilklukka, vaktir, eigin tímaskýrsla og kjör. |
Aðgangur ræðst eingöngu af staff.role og status === "approved" innan
fyrirtækisins. adminEmails er boðslisti: staðfest Google-netfang á listanum
verður owner við fyrstu innskráningu; superadmin sem fjarlægir netfang lækkar
hlutverkið. PIN-aðgangar (4 tölustafir) geta mest verið manager, eru bundnir
fyrirtæki og ógildast við PIN-endurstillingu.
.env.example í .env.local og fylltu út
Firebase-gildin (sjá Firebase Console → Project settings).service-account-key.json í verkefnisrótinni. Hvorug skráin fer í git.npm install
npm run dev
Opnaðu http://localhost:3000.Superadmin-hlutverkið er chicken-and-egg: notandi þarf fyrst að vera til í Firebase Auth.
/superadmin/login (býr til Auth-notanda).service-account-key.json):
node seed-superadmin.js
Það setur tv_users/{uid}.role = "superadmin". (Netfangið er stillt efst í
scriptinu.)POST /api/superadmin/seed með { secret, email } þar sem
secret jafngildir SETUP_SECRET úr .env.local./superadmin.dillon), kennitala, admin-netfang./[slug], skráir sig inn með Google — fær sjálfkrafa owner
(netfangið er í adminEmails)./[slug]; owner/admin samþykkir í starfsmannaflipanum.firestore.rules hafnar öllum beinum client-aðgangi (admin SDK fer framhjá
reglunum). Birtu reglur með firebase deploy --only firestore:rules.service-account-key.json, .env* og *service-account*.json eru git-hunsuð.| Skipun | Hvað |
|---|---|
npm test | Einingapróf: taxtareitir gegn birtum töflum, launavél, frídagar 2026/2027, öryggi, CSV, migration |
npm run test:integration | API-próf á Firebase-emulator (demo-timavordur, engin lykilorð): tenant-einangrun, hlutverk, PIN-takmörkun, samhliða stimplanir, læsing, útflutningur, migration. Krefst Java 21 |
npm run check:rates | Leitar að nýjum opinberum töflum hjá Eflingu (flaggar, breytir engu) |
npm run audit:deps | npm audit á framleiðsluháðum pökkum (bilar á high/critical) |
Handvirk prófun í vafra með gervigögnum: ræstu emulator, keyrðu
FIRESTORE_EMULATOR_HOST=127.0.0.1:8080 GCLOUD_PROJECT=demo-timavordur node scripts/emulator-seed.mjs
og síðan next dev með FIRESTORE_EMULATOR_HOST, FIREBASE_AUTH_EMULATOR_HOST,
GCLOUD_PROJECT=demo-timavordur, NEXT_PUBLIC_AUTH_EMULATOR=127.0.0.1:9099 og
NEXT_PUBLIC_FIREBASE_PROJECT_ID=demo-timavordur. Í emulator-ham les
firebase-admin aldrei lykla og neitar öðru en demo--projecti.
Óvæntar villur í API-leiðum fara gegnum reportApiError()
(src/lib/report-error.ts): þær eru skrifaðar í console (Vercel-logga, sem
eyðast fljótt) og vistaðar í tv_errors-safnið í Firestore með leið,
skilaboðum, stack og tímastimpli. Skoða: Firebase Console → Firestore →
tv_errors, raðað eftir createdAt.
Hvert skjal ber expiresAt (30 dagar) svo hægt sé að setja TTL-reglu á
safnið (Google Cloud Console → Firestore → TTL, svæði expiresAt) — án
hennar safnast skjölin bara upp, sem er meinlaust í þessu umfangi.
Athugið: þessi lýsing er ekki staðfesting á nýlegu, endurheimtanlegu afriti. Fyrir útgáfu þarf að endurheimta nýlegt afrit í einangraðan gagnagrunn og skrá dagsetninguna (sjá
docs/RELEASE_PLAN.md).
Sjálfvirk Firestore-afrit eru virk á verkefninu (sett upp 3. júlí 2026 með firebase CLI, innskráður eigandi — service-account lykillinn hefur ekki réttindi í þetta):
firebase firestore:backups:schedules:list --project timavordur # áætlanir
firebase firestore:backups:list --project timavordur # tekin afrit
Endurheimt fer í nýjan gagnagrunn (skrifar ekki yfir þann sem er í notkun):
firebase firestore:databases:restore --project timavordur \
--backup <backup-nafn úr listanum> --database endurheimt-YYYYMMDD
Skoða má afritin líka í Google Cloud Console → Firestore → Disaster Recovery.
| Skipun | Lýsing |
|---|---|
npm run dev | Þróunarþjónn (Turbopack). |
npm run build | Framleiðslubygging. |
npm run start | Keyra byggingu. |
npm run lint | ESLint. |
npm run test | Vitest einingapróf. |
npm run test:integration | API-próf á Firebase-emulator. |
npm run typecheck | TypeScript. |