Javis OS
Javis OS is an Agentic AI that assists entrepreneurs in business tasks, helping them grow their work.
AI translation
Einfalt og öruggt tímaskráningarkerfi. Starfsfólk klukkar inn og út, þú sérð allt.
Translation pending
BusinessTypeScript · JavaScriptGitHub @BlingicelandOnlineOwner 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.
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.Read the full 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. |