尚未收集儲存庫資訊。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗מערכת GIS ליחידת סע״ר (סיוע עצמי ראשוני) שדרות. מפה מבצעית שעובדת גם בלי רשת, לקליטה ולהנגשה של נתונים בשגרה ובזמן אירוע אמת: רעידת אדמה, פגיעת טיל ואירועי חירום אחרים.
| תפקיד | role | הרשאות |
|---|---|---|
| כל אחד, ללא כניסה | – | צפייה במפה, בנתונים ובתמונות, חיפוש וייצוא |
| אחראי GIS | gis | הזנה ועריכה, מחיקת כל נתון, עדכון שכבות בסיס |
| מפקד היחידה | commander | הזנה ועריכה, מחיקת כל נתון |
| סגן מפקד היחידה | deputy | הזנה ועריכה, מחיקת כל נתון |
| מפקדי צוותים 1–4 | team | הזנה ועריכה, מחיקת נתונים שהם יצרו |
הסיסמאות אינן נשמרות בקוד. הן נשמרות כגיבוב (scrypt) במשתנה הסביבה USERS_JSON ב-Vercel.
users.local.json. הקובץ מוחרג מ-git, ואין להעלות אותו:
[
{ "username": "GIS_Admin", "password": "סיסמה-חדשה", "role": "gis" },
{ "username": "GROUP1_Admin", "password": "…", "role": "team", "team": 1 }
]
node scripts/hash-users.mjs users.local.json.USERS_JSON בהגדרות הפרויקט ב-Vercel ומבצעים Redeploy.public/ אפליקציית הרשת (PWA): HTML, CSS ו-JS ללא שלב build
js/layers.js קטלוג השכבות והמסווג האוטומטי (משותף לשרת ולדפדפן)
js/sync.js סנכרון, תור שינויים במצב לא מקוון (IndexedDB)
js/citymap.js ציור „מפת העיר” בסגנון המפה המודפסת
js/osm.js המרת נתוני OpenStreetMap לשכבות הבסיס
sw.js Service Worker: קבצי האפליקציה, אריחי מפה ותמונות במצב לא מקוון
api/ פונקציות Vercel (Node.js)
login, logout, me התחברות (cookie חתום)
features קריאה וכתיבה של הנתונים (כתיבה אטומית עם ETag)
photo העלאה והצגה של תמונות
base שכבות בסיס
city מפת העיר: טעינה מ-OpenStreetMap (בשרת) והגשה
govmap רשימת השכבות הפתוחות של GovMap
האחסון הוא Vercel Blob פרטי. כל הנתונים נשמרים במסמך JSON אחד. כל כתיבה מתבצעת כ-compare-and-swap (ifMatch), כך ששני משתמשים ששומרים באותו רגע לא דורסים זה את זה. בפיתוח מקומי, כשאין טוקן, הנתונים נשמרים בתיקייה .data/.
USERS_JSON ו-AUTH_SECRET (הערכים נוצרים כמתואר למעלה) לסביבת Production.BLOB_READ_WRITE_TOKEN נוסף אוטומטית.| משתנה | תיאור |
|---|---|
USERS_JSON | המשתמשים המגובבים (ראו למעלה) |
AUTH_SECRET | מחרוזת אקראית של 32 תווים לפחות, לחתימת ה-session |
BLOB_READ_WRITE_TOKEN | נוסף אוטומטית כשמחברים Blob Store לפרויקט |
npm test # בדיקות יחידה (מסווג, שכבות, יומן ודו״ח אירוע)
npm run qa # בדיקות מלאות: שרת מקומי עם משתמשי בדיקה ונתונים סינתטיים, ~90 בדיקות API ובדיקות דפדפן בטלפון/טאבלט/מחשב
משתמשי הבדיקה (tests/fixtures/test-users.json) הם לבדיקות בלבד; הסיסמאות האמיתיות לעולם אינן בקוד.
מדיניות CSP (אין קוד מוטמע; האתר אינו ניתן להטמעה באתר זר), עוגיית התחברות HttpOnly + SameSite, האטה וחסימה זמנית אחרי 8 ניסיונות כניסה שגויים, הסתרת פרטים אישיים מצופים, ובדיקת קלט בשרת לכל כתיבה.
npm install
npm run vendor # מעתיק את Leaflet ואת Geoman ל-public/vendor
npm test # בדיקות המסווג האוטומטי
AUTH_SECRET=$(openssl rand -hex 32) USERS_JSON="$(node scripts/hash-users.mjs users.local.json)" npm run dev
# http://localhost:3000