מה המערכת עושה
בעסק קטן, מסעדה או חנות או מספרה, עוקבים אחרי שעות העובדים בדף נייר או בקבוצת וואטסאפ. בסוף החודש מישהו מנסה לשחזר מי עבד מתי. שעון נוכחות ייעודי עולה אלפי שקלים, ואפליקציה ייעודית דורשת שכל עובד יתקין אותה, ייצור חשבון ויזכור סיסמה.
כאן צריך שני דברים בלבד: מדבקת NFC בעלות של שקלים בודדים, והדפדפן שכבר נמצא בטלפון של העובד. העובד נוגע במדבקה ורואה מסך אחד, כפתור אחד וטיימר רץ. נגיעה שנייה בסוף המשמרת סוגרת אותה. זה כל מה שהוא צריך ללמוד.

למי זה מתאים
- עסקים שעובדים במשמרות. מסעדות, בתי קפה, חנויות, מספרות ומכוני טיפוח. אנשים נכנסים ויוצאים כל היום, ואף אחד לא רושם.
- עסקים שמעסיקים נוער או עובדים מתחלפים. כשמחזור העובדים גבוה, כל דקה של הדרכה על "איך מדווחים" היא דקה מבוזבזת.
- עסקים עם יותר מעמדה אחת. מדבקה בכל נקודה, דוח אחד מרוכז.
- עסקים שרוצים לסגור את הוויכוח על השעות. כשצריך שגם המנהל וגם העובד יראו את אותו מספר, ושיהיה ברור מי שינה מה ומתי.
מה מייחד אותה
העובד לא צריך לעשות כלום
הזהות שלו נקבעת פעם אחת: המנהל שולח קישור אישי בוואטסאפ, העובד פותח אותו מהטלפון ולוחץ פעם אחת. מאותו רגע הטלפון שלו מזוהה, והוא לעולם לא מקליד סיסמה. אין אפליקציה להתקין ואין חנות אפליקציות לעבור דרכה.

שקיפות במקום ויכוח
שום דבר במערכת לא נמחק. עובד שמסיים מושבת, מדבקה שאבדה מנוטרלת, רשומה שגויה מבוטלת. כולם שינויי סטטוס, והנתונים ההיסטוריים נשארים. כל תיקון שעות כותב שורת ביקורת עם הערך הקודם, הסיבה לתיקון (שדה חובה) ומי ביצע אותו. והעובד רואה בעצמו שהרשומה שלו תוקנה. זה לא תוצר לוואי של המבנה. זו הנקודה.

הזמן נמדד רק בשרת
השעון של הטלפון לא נכנס למשוואה, כך ששינוי השעה במכשיר לא משנה דבר. הטיימר הרץ מחושב מחדש בכל טיק מתוך הפרש מול שעון השרת ולא מקודם במונה, כדי שלשונית שהייתה ברקע חצי שעה לא תציג שעה שגויה כשחוזרים אליה. גם אזורי הזמן מתפרשים במסד: המנהל מקליד 08:00, והמסד מפרש את זה לפי אזור הזמן של העסק ולא לפי אזור הזמן של הדפדפן שממנו הוקלד.

מה כלול
- הקמת העסק במערכת וחשבון מנהל על שמכם
- הזנת העובדים, ושליחת קישור חיבור אישי לכל אחד בוואטסאפ
- הגדרת המדבקות, כמה שתרצו, לכל עמדה או סניף
- מסך "מי נוכח עכשיו" עם משמרות רצות בזמן אמת
- דוח חודשי לפי עובד, עם ייצוא לאקסל
- תיקון רשומות עם יומן ביקורת מלא
- סגירה אוטומטית של משמרת שנשכחה פתוחה, מסומנת לבירור
- העלאה לאוויר, והדרכה קצרה למנהל בלבד, כי לעובדים אין מה להדריך

איך זה עובד
- אתם מדביקים מדבקת NFC ליד הכניסה, וכותבים עליה את כתובת העמדה מתוך המערכת.
- אתם מזינים את העובדים ושולחים לכל אחד קישור חיבור בוואטסאפ.
- העובד פותח את הקישור פעם אחת מהטלפון שלו ולוחץ "חבר את הטלפון הזה".
- מכאן והלאה, נגיעה במדבקה פותחת משמרת ונגיעה נוספת סוגרת אותה.
- אתם רואים בכל רגע מי נוכח, ובסוף החודש מייצאים דוח מוכן.

הטכנולוגיה שמאחוריה
המערכת נבנתה כאפליקציית ווב מלאה, לא כאוטומציה מודבקת:
| שכבה | טכנולוגיה |
|---|---|
| צד לקוח | Next.js 16 (App Router, Turbopack), React 19, TypeScript |
| עיצוב | Tailwind v4, עברית RTL, גופני Assistant ו-Frank Ruhl Libre |
| צד שרת | Supabase, PostgreSQL 17, Row Level Security, פונקציות RPC |
| זהות | Supabase Auth. סשן אנונימי לעובדים, אימייל וסיסמה למנהלים |
| תשתית | Vercel, עם פונקציות שרצות בפרנקפורט ליד המסד |
| פריסה | דחיפה ל-GitHub מפעילה בנייה אוטומטית |
בהיקף: 9 טבלאות, 36 פונקציות מסד, 8 מדיניות RLS, 14 מסכים, 20 נתיבי API, 19 מיגרציות, וכ-5,150 שורות TypeScript לצד כ-2,470 שורות SQL. אין עלות תשתית חוזרת מעבר לאירוח.
שלוש החלטות שקובעות את ההתנהגות
- הבידוד בין עסקים נאכף במסד, לא באפליקציה. כל שאילתה עוברת דרך RLS ופונקציות שגוזרות את זהות העסק מהטוקן עצמו. גם אם שכבת האפליקציה הייתה נפרצת לחלוטין, מנהל של עסק אחד לא היה רואה נתונים של עסק אחר. זה נבדק בפועל: התחברות כמנהל של עסק שני וניסיון לגשת לכל רשומה החזירו תוצאה ריקה.
- דיווח הוא פעולה אטומית אחת. פונקציית Postgres יחידה, ואינדקס ייחודי שמבטיח ברמת המסד משמרת פתוחה אחת לכל עובד, ולא בדיקה בקוד שאפשר לעקוף בלחיצה כפולה.
- משמרת שנשכחה פתוחה לא נשארת תלויה. היא נסגרת אוטומטית ומסומנת לבירור, במקום להמציא שעות ובמקום לנעול את העובד מחוץ למערכת.
באגים שנמצאו רק במציאות
שלושה דברים לא התגלו בפיתוח אלא בשימוש, ותוקנו. לחיצה כפולה מהירה פתחה וסגרה משמרת בתוך פחות משתי שניות, כי הכפתור מתחלף במקומו. קישור ההצטרפות החד-פעמי נשרף לפני שהעובד בכלל לחץ עליו, כי תצוגה מקדימה של וואטסאפ צרכה אותו. ומשמרת שנשכחה פתוחה נעלה את העובד מחוץ למערכת. כל אחד מהם נפתר בשורש, לא בעקיפה.
מה צריך מכם כדי להתחיל
- רשימת העובדים: שם, טלפון ותפקיד
- החלטה איפה תשב כל מדבקה
- מדבקות NFC ריקות, ואפליקציית כתיבה חינמית בטלפון (כמה שקלים למדבקה)
- אזור הזמן ושעות הפעילות של העסק


