OB
אופיר ברנס
Builder · TLV
חזרה לכל הפרויקטים
PWA · 2026 · Personal Project

Level

PWA למפלס דיגיטלי — חיישני התנועה של הטלפון, בועה מרחפת, כיול וזיכרון

Level

על האפליקציה

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 smoothingstate.smoothPitch = state.smoothPitch * 0.82 + raw * 0.18 — מבטל רעש של החיישן.
  • Calibration offset persistent — נשמר ב-IndexedDB, נטען בכל פתיחה.
  • Vibration API — דפוס רטט קצר ברגע ה-level (debounced ב-1.5s).
  • Permissions-Policy headeraccelerometer=(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.

כל הנתונים נשארים רק במכשיר שלך.

· TECHNOLOGY ·
PWA Vanilla JS DeviceOrientation API Vibration API IndexedDB Service Worker Permissions-Policy iOS permission flow SVG

פרויקטים קשורים.

· YOUR PROJECT NEXT ·

הפרויקט הבא שלך?

בוא נדבר