🧭 המצפן הפיננסי
יישום אינטרנטי (Web App) מתקדם לניהול תקציב אישי ועובר ושב, המאפשר מעקב חודשי אחר הכנסות והוצאות, ניהול הלוואות, וקבלת תחזית פיננסית חכמה למניעת חריגות בחשבון הבנק.
✨ תכונות מרכזיות
- ניהול תנועות: הוספה, עריכה ומחיקה דינמית של הכנסות והוצאות.
- סוגי תנועות: הבחנה ברורה בין תנועות כלליות, חיובים בכרטיס אשראי, והלוואות.
- תנועות קבועות: הגדרת תנועות כקבועות (למשל: משכורת, שכר דירה) וטעינה מהירה שלהן לחודשים חדשים.
- ניהול הלוואות: מערכת ייעודית למעקב אחר הלוואות, כולל סכום מקורי, מספר תשלומים, והתקדמות ההחזר.
- תחזית חודשית: כרטיס בראש המסך מציג את העו"ש עכשיו, את העו"ש הצפוי בסוף החודש ואת המרווח עד מסגרת האשראי, עם שורת סטטוס (ירוק / כתום / אדום). בחודשים עתידיים העו"ש בתחילת החודש מחושב אוטומטית מהחודש הקודם.
- ממשק לטלפון: לשוניות הוצאות/הכנסות, לחיצה על תנועה לעריכה, ותפריט ⋯ אחד לכל ההגדרות והכלים.
- מיון וסינון מתקדמים: יכולת לסנן תנועות לפי סוג (פעילות, קבועות וכו') ולמיין אותן לפי שם, סכום, או תאריך, עם אפשרות ל"סידור אישי" שנשמר לכל חודש.
- נתונים במכשיר + גיבוי לענן: המידע נשמר במכשיר, מוצפן (AES-GCM + PBKDF2) בסיסמה אישית, ולכן האפליקציה נפתחת מיד וגם בלי אינטרנט. גיבוי לענן וטעינה ממנו נעשים בלחיצת כפתור, עם הגנה מפני דריסה בין מכשירים.
- אפליקציה למסך הבית (PWA): אפשר להוסיף את האתר למסך הבית בטלפון ולפתוח אותו כמו אפליקציה.
- הצגה גרפית: הצגת התפלגות ההכנסות וההוצאות בגרף עוגה אינטראקטיבי.
- ייבוא וייצוא: גיבוי ושחזור של כל המידע באמצעות קובץ
json.
- עיצוב מודרני: ממשק נקי ורספונסיבי עם תמיכה במצב בהיר וכהה (Light/Dark Mode).
🚀 טכנולוגיות
המערכת נבנתה כולה מהיסוד תוך שימוש בטכנולוגיות צד-לקוח בלבד, ללא תלות בספריות צד-שלישי מורכבות (Frameworks).
- Vanilla JavaScript (ES6+)
- HTML5
- CSS3
- Chart.js - להצגת הגרפים.
- Web Crypto API - להצפנת המידע לפני שליחתו לענן (CryptoJS נשאר רק לקריאת נתונים בפורמט הישן).
- Vercel Functions - שרת ביניים (
api/data.js) שמחזיק את מפתח ה-API בסוד.
- jsonbin.io - כשירות צד-שלישי לאחסון הנתונים בענן.
🔧 התקנה והרצה
האפליקציה רצה על Vercel (לא על GitHub Pages, כי צריך את פונקציית השרת שבתיקייה api).
-
פתח חשבון חינמי ב-jsonbin.io, צור Bin וקבל את ה-Bin ID ואת ה-Master Key.
-
ב-Vercel, תחת Settings → Environment Variables, הגדר:
JSONBIN_BIN_ID
JSONBIN_MASTER_KEY
(לסביבות Production וגם Preview.)
-
חבר את הריפו ל-Vercel ופרוס.
איך הנתונים נשמרים
- במכשיר: כל שינוי נשמר מיד במכשיר, מוצפן. בלי הסיסמה אי אפשר לקרוא אותו.
- בענן: רק כשלוחצים "גבה לענן". הכפתור צהוב כשיש שינויים שעוד לא גובו, וירוק כשהכול מגובה.
- מכשיר נוסף: בכניסה הראשונה הנתונים נטענים מהגיבוי. אחר כך, כדי לקבל שינויים ממכשיר אחר, לוחצים "טען מהענן".
- באייפון: מומלץ להוסיף את האתר למסך הבית (שיתוף ← הוסף למסך הבית). Safari עלול למחוק נתונים של אתרים רגילים שלא נכנסו אליהם 7 ימים, אבל לא של אפליקציות במסך הבית.
איך האבטחה עובדת
- בכניסה מזינים סיסמת סנכרון. ממנה נגזרים בדפדפן שני דברים נפרדים: מפתח הצפנה (שלא יוצא מהדפדפן) וטוקן גישה לשרת.
- השרת שומר רק hash של הטוקן. השמירה הראשונה נועלת את המאגר לסיסמה הזו, ומאז כל בקשה בלי הטוקן הנכון נדחית.
- אין דרך לשחזר את הנתונים בלי הסיסמה. מומלץ לייצא גיבוי JSON מדי פעם.
- החלפת סיסמה עדיין לא נתמכת: כדי להחליף, ייצא גיבוי, רוקן את ה-Bin ב-jsonbin.io, היכנס עם הסיסמה החדשה וייבא.
📜 רישיון
הפרויקט מופץ תחת רישיון MIT.