מערכת אינטראקטיבית למילוי, שמירה וייצוא תכנית אישית לקידום מטרות, מבוססת על קובץ ה-PDF המקורי של "צעד קדימה" מטעם שירות לשיקום האסיר.
- טופס מלא למילוי כל שדות התכנית, כולל:
- שאלות רפלקציה (הצלחות, למידה, משאבים)
- הגדרת מטרות לטווח ארוך וקצר
- יעדים ותאריכי סיום
- שמירה אוטומטית וידנית בענן (Firestore)
- רישום והתחברות עם Google, Email+Password, או שם משתמש+סיסמה בלבד (חשבון אנונימי ללא מייל, שאינו ניתן לשחזור אם נשכחת הסיסמה) — עם בחירת סוג משתמש בהרשמה (מקבל/ת שירות או נותן/ת שירות) ובחירת שם משתמש ייחודי; ניתן להמיר חשבון בין רגיל לאנונימי ובחזרה דרך עמוד הפרופיל
- שיתוף תוכניות (כולן או נבחרות) עם נותני שירות שמורים לפי כתובת מייל מדויקת או שם משתמש מדויק, עם קביעת הרשאת צפייה או צפייה+עריכה שניתן לבטל בכל רגע
- מעבר מהיר של נותן שירות בין מקבלי השירות ששיתפו איתו, וצפייה/עריכה בתוכניות שלהם לפי ההרשאה שהוגדרה
- יומן הערות ועדכוני התקדמות מתועד ומיוחס לכותב, על התוכנית כולה או על מטרה קצרת-טווח ספציפית
- יצוא ל-PDF מעוצב, כולל תמיכה מלאה ב-RTL ובעברית
- פרופיל משתמש לצפייה, מחיקה ועריכה של תכניות קודמות
- דף נחיתה שיווקי בעמוד הבית, המסביר את התועלת של הכלי
- תמיכה מלאה במסכי מובייל וטאבלט (רספונסיבי)
- אפליקציית PWA (ניתנת להתקנה, עובדת גם במצב לא מקוון חלקי)
| תחום | כלים |
|---|---|
| Front-End | React + Vite |
| עיצוב | Tailwind CSS v4 — מקור עיצוב יחיד, ראו בלוק @theme ב-src/index.css |
| אייקונים | lucide-react — ללא אמוג'ים בממשק |
| State & Forms | react-hook-form |
| Routing | react-router-dom |
| Authentication | Firebase Auth |
| Database | Firestore |
| PDF Export | html2pdf.js |
| Notifications | react-toastify |
| PWA | vite-plugin-pwa — manifest + service worker; אייקוני האתר (favicon/PWA/maskable/apple-touch-icon) נוצרים מ-public/favicon.svg ע"י @vite-pwa/assets-generator |
- Node.js v22.12+ (מומלץ Node 24 LTS)
- חשבון Firebase עם פרויקט פעיל (חינם)
# 1. שכפול הפרויקט והתקנת ספריות
git clone <repo-url>
cd step-forward
npm install
# 2. הגדרת משתני סביבה
# יש להעתיק את .env.example ל-.env ולמלא את הערכים מהגדרות
# הפרויקט ב-Firebase Console (Project settings > General > Your apps)
cp .env.example .env
# 3. הפעלת סביבה מקומית
npm run dev| פקודה | תיאור |
|---|---|
npm run dev |
הרצת סביבת פיתוח מקומית |
npm run build |
בנייה לפרודקשן (לתיקיית dist) |
npm run preview |
הרצת גרסת ה-build לצורך בדיקה מקומית |
npm run lint |
הרצת בדיקת lint על כל הקוד |
npm run pwa:assets |
יצירה מחדש של כל אייקוני ה-PWA (favicon/PWA/maskable/apple-touch-icon) מתוך public/favicon.svg — יש להריץ אחרי כל שינוי בקובץ ה-SVG |
npm run deploy |
בנייה ופריסה ל-Firebase Hosting (production) |
npm run deploy:preview |
בנייה ופריסה לערוץ preview זמני בשם preview ב-Firebase Hosting (להריץ עם שם ערוץ אחר: npm run deploy:preview -- <שם-ערוץ>) |
npm run emulators |
הרצת אמולטורים מקומיים ל-Auth+Firestore (ראו סעיף הבא) |
npm run dev:emulator |
הרצת סביבת הפיתוח מול האמולטורים המקומיים במקום פרויקט Firebase האמיתי |
npm run verify:rules |
הרצת בדיקה אוטומטית של firestore.rules מול האמולטורים (דורש שהאמולטורים כבר רצים) |
npm run emulators:recover |
שחזור נתוני אמולטור שנתקעו בתיקייה זמנית firebase-export-* בגלל כשל EPERM בסגירה (ראו סעיף הבא) |
כדי לבדוק שיתוף/הרשאות/הערות מקצה לקצה בלי לגעת בנתוני האמת ובלי לפרוס firestore.rules לפרויקט האמיתי, ניתן להריץ הכל מול ה-Firebase Local Emulator Suite:
# טרמינל 1 — אמולטורי Auth+Firestore, על סמך firestore.rules/firestore.indexes.json המקומיים
npm run emulators
# טרמינל 2 — סביבת הפיתוח, מוגדרת לדבר עם האמולטורים דרך .env.emulator
npm run dev:emulator- ממשק האמולטורים (יצירת/עריכת משתמשי בדיקה, צפייה בנתוני Firestore, אימות מייל ידני) זמין ב-
http://127.0.0.1:4000. - נתוני האמולטור (Firestore+Auth) נשמרים בין הרצות בתיקייה
./.firebase-emulator-data(לא ב-git, ראו.gitignore) —npm run emulatorsמייבא/מייצא ממנה. - תקלה ידועה בווינדוס: ל-
firebase-toolsיש באג פתוח וידוע (#3092) שגורם לפעמים לכשלEPERM: operation not permitted, rename ...בסגירת האמולטור, לפני שהוא מספיק להחליף את./.firebase-emulator-dataבייצוא העדכני — תקלה סביב וינדוס בלבד ב-firebase-toolsעצמו, לא בהגדרות הפרויקט. במקרה כזה הנתונים לא אבודים: הם נשארים שלמים בתיקייה זמנית בשםfirebase-export-<מזהה>בשורש הפרויקט. הרצתnpm run emulators:recover(scripts/recover-emulator-export.mjs) מאתרת אותה ומעבירה את הנתונים בחזרה ל-./.firebase-emulator-dataאוטומטית. - ההרשמה דורשת מייל מאומת לפני שניתן לשתף (ראו CLAUDE.md) — באמולטור אפשר לאשר מייל ידנית דרך לשונית Authentication ב-
http://127.0.0.1:4000, בלי לשלוח מייל אמיתי. npm run verify:rules(scripts/verify-firestore-rules.mjs) מריץ סוללת בדיקות אוטומטית מול האמולטורים: הרשמה (כולל תפיסת שם משתמש ייחודי ב-usernameIndex), שיתוף לפי מייל או לפי שם משתמש, הרשאת צפייה/עריכה, הערות, וביטול שיתוף מיידי — כולל השאילתה שה-ProviderSwitcherתלוי בה. יש להריץ אותו אחרי כל שינוי ב-firestore.rules.- אין להריץ סקריפט זה או
dev:emulatorמול פרויקט Firebase אמיתי — הוא יוצר ומוחק משתמשי בדיקה בחופשיות.
- כל גישה לנתונים ב-Firestore מוגבלת למשתמש המאומת שהנתונים שייכים לו, ולנותני שירות עם שיתוף פעיל בהרשאה המתאימה — ראו
firestore.rules. - שיתוף בין משתמשים נעשה רק לפי כתובת מייל מדויקת (מאומתת), בלי אפשרות חיפוש/דירקטורי משתמשים.
- הגדרות Firebase נטענות ממשתני סביבה (
.env, לא נשמר ב-git) — ראו.env.example. - מדיניות אבטחה מלאה לפרויקט, כולל מודל השיתוף וההרשאות, מתועדת ב-
CLAUDE.md.
חוקי העבודה על קוד הפרויקט (שימוש חוזר ברכיבים, עיצוב אחיד, אבטחה, נגישות ועוד) מתועדים במלואם בקובץ CLAUDE.md בשורש הפרויקט. יש לעדכן קובץ זה בהתאם לכל שינוי משמעותי במבנה או בטכנולוגיות הפרויקט.
הקוד מופץ תחת GNU General Public License v3.0 — קוד פתוח, כולל שימוש מסחרי, בכפוף לחובת שמירת רישיון ה-GPL בכל נגזרת.