על האפליקציה
Level הוא מפלס דיגיטלי שעובד עם חיישני התנועה של הטלפון — גירוסקופ ומדי תאוצה — ומציג בזמן אמת את זווית הנטייה במדויק.
לחץ פתח, הנח את הטלפון על המשטח שאתה רוצה לבדוק — הבועה מתגלגלת לכיוון הנטייה, צבעה הופך לירוק כשאתה מאוזן, רטט עדין מסמן רגע ה-0°.
כי כשאתה תולה תמונה ב-3 בלילה, אתה לא רוצה לחפש את המפלס בארגז הכלים.
לחצו לנסות בעצמכם → ofir.zbang.net/level
האפליקציה רצה כאן בייצור — אפשר להתקין על המסך הבית. חייב להיפתח בטלפון או טאבלט (אין חיישני orientation במחשב).
יכולות מרכזיות
- בועה מרחפת חיה — מדמה בועה אמיתית בתוך נוזל. גלילה אמיתית עם transform 3D + spring transition (cubic-bezier 1.56), לא רק שינוי position רגיל.
- שלושה קריאי זווית — Pitch (קדימה-אחורה), Roll (שמאל-ימין), Tilt (עוצמה כוללת = √(p²+r²)).
- מצב "מאוזן" — מתחת ל-1° נטייה, הבועה הופכת לירוק זוהר, הסטטוס משתנה ל"✓ מאוזן", ויש רטט עדין
[20,30,40]. - התאמת זוויות מובנות — chips לערכי 0/30/45/60/90 שמסומנים בירוק כשאתה מתקרב אליהם.
- כיול אפס — הנח על משטח שאתה יודע שהוא ישר, לחץ "כייל", והאפליקציה מאפסת את ההיסט הטבעי של החיישן.
- הקפאה (Lock) — קופא קריאה מסוימת על המסך כדי שתוכל לרשום או לצלם.
- שמירת מדידות — תן שם ("מסגרת תמונה בסלון") → IndexedDB עם pitch/roll/tilt/timestamp.
- היסטוריה מלאה — bottom sheet עם כל המדידות, ניתן למחוק.
ארכיטקטורת ה-PWA
- DeviceOrientationEvent API — beta (front-back) + gamma (left-right). תמיכה אוטומטית ב-iOS עם
DeviceOrientationEvent.requestPermission(). - Low-pass smoothing —
state.smoothPitch = state.smoothPitch * 0.82 + raw * 0.18— מבטל רעש של החיישן. - Calibration offset persistent — נשמר ב-IndexedDB, נטען בכל פתיחה.
- Vibration API — דפוס רטט קצר ברגע ה-level (debounced ב-1.5s).
- Permissions-Policy header —
accelerometer=(self), gyroscope=(self), magnetometer=(self). - Desktop fallback — מסך מותאם שאומר "פתח במכשיר נייד" אם לא מתקבלים אירועי orientation תוך 1.5s.
- iOS permission flow — מסך הסבר + כפתור שמפעיל את
requestPermission().
עיצוב
- פלטה חמה — אמבר/זהב על רקע shoyu deep brown — מבדיל מ-Drop (קוראל), Decibel (ציאן), Tide (נייבי).
- בועה מרובדת — radial gradient עם specular highlight, inset shadow כפול, halo glow כתום שהופך לירוק במצב מאוזן.
- טבעות גריד SVG — 4 טבעות concentric עם crosshair, יוצרות תחושה של מכשיר אמיתי.
- רקע ambient amber — שתי שכבות radial gradient עם blur 40px ואנימציה איטית.
הפילוסופיה
אפליקציות מפלס בחנות יש בשפע — רובן עמוסות בפרסומות, מבקשות הרשמה, או דורשות 50MB. Level הוא 27KB, נטען בשנייה, עובד אוף-ליין, אפס פרסומות, אפס tracking.
כל הנתונים נשארים רק במכשיר שלך.