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

Goal

מעקב מטרות עם תחזית סיום AI-free — Linear regression, circular progress, sparkline, ומילסטונים

Goal

Goal — אפליקציית PWA למעקב אחרי מטרות שנתיות / שבועיות. הגדר יעד, עדכן התקדמות, וקבל תחזית מדויקת מתי תגיע ליעד — מבוססת רגרסיה לינארית של 14 העדכונים האחרונים. ללא AI, ללא תלות חיצונית, מתמטיקה צרופה.

האלגוריתם — Linear Regression ETA

הזרימה הטכנית של תחזית הסיום:

  1. אסוף 14 עדכונים אחרונים מיומן המטרה (עם timestamps + values)
  2. המר לנקודות (x, y) כאשר x = ימים מהעדכון הראשון, y = הערך
  3. רגרסיה לינארית מקורית — פתור y = mx + b עם least-squares:
    • m = (n·ΣXY - ΣX·ΣY) / (n·ΣXX - ΣX²)
    • b = (ΣY - m·ΣX) / n
  4. חלץ את הקצב m (יחידות ליום) — מציג כיחידה/יום, יחידה/שבוע, או יחידה/חודש לפי הסדר גודל
  5. פתור עבור הזמן ליעד: x = (target - b) / m
  6. השווה לדדליין → קבע סטטוס: 🎯 בקצב | ⚠ פיגור | ✓ הושג

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

ויזואליזציה

Circular Progress (custom SVG)

לכל מטרה — circle עם stroke-dasharray מחושב pct/100 * 2πr. מתעדכן עם transition של 1s cubic-bezier overshoot. במצב detail — circle ענק 200×200 עם gradient לפי קטגוריה.

Sparkline (custom SVG)

30 עדכונים אחרונים כקו רציף עם:

  • Area fill בגרדיאנט שקוף
  • Line stroke בצבע הקטגוריה
  • Dots על כל נקודה (האחרון בולט יותר עם stroke כפול)
  • Target line דשור צהוב עם תווית "יעד"
  • אוטומטי-סקיילינג של ציר Y לפי min/max + יעד

Mini circle בכרטיסי ה-grid

אותה לוגיקה בקטן (64×64) עם % במרכז.

פיצ'רים

  • 4 קטגוריות מצוירות: בריאות (ירוק), למידה (ציאן), פיננסי (צהוב), יצירה (סגול)
  • 4 פילטרים: פעילות / 🎯 בקצב / ⚠ פיגור / ✓ הושגו
  • Quick add+1, +5, +10, או הזנת ערך מותאם
  • מילסטונים אוטומטיים ב-25%, 50%, 75%, 100% — עם splash celebration + ויברציה
  • ETA card עם תאריך משוער, קצב נוכחי, דדליין, וסטטוס מילולי בעברית
  • יומן עדכונים עם delta בכל שורה (+5 ירוק, −3 ורוד) ותאריך יחסי

טכנולוגיות

  • Linear regression מקורית ב-Vanilla JS (least-squares method)
  • Custom SVG — circular progress (stroke-dasharray) + sparkline (dynamic scaling) + target line
  • CSS color-mix() ל-glow אדפטיבי לפי קטגוריה
  • IndexedDB multi-store — goals + logs (compound index על goalId) + settings
  • Vibration API — feedback קצר על update, ארוך על milestone
  • Service Worker — cache-first עם revalidate, אופליין מלא
  • PWA installable עם 3 גדלי איקונים

עיצוב

פלטה sky-pastel + cream + status colors — אסתטיקה אופטימית של "שמיים פתוחים" וצמיחה. נבדלת מ-electric-blue (Tempo) ו-navy-aqua (Tide) ע"י גוון פסטל בהיר יותר. רקע כחול-אפור עמוק #0c1418 · sky #7dd3fc · cream #fef9c3 · ירוק להצלחה · ורוד לפיגור · צהוב לדדליין.

טיפוגרפיה — Heebo + Frank Ruhl Libre לכותרות + IBM Plex Mono לכל הערכים והמספרים (300 weight, tabular-nums, direction LTR לסכומים). Glassmorphic surfaces, ambient sky orbs נעות ברקע.

פתח את Goal ב-ofir.zbang.net/goal

· TECHNOLOGY ·
PWA Linear Regression Custom SVG IndexedDB Vibration API Service Worker Frank Ruhl Libre Heebo

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

· YOUR PROJECT NEXT ·

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

בוא נדבר