פיתוח פורטלים ארגוניים ומערכות פנים-ארגוניות
אנו מתמחים בפיתוח פורטלים ארגוניים — CRM, ERP, LMS ו-Intranet. כל פרויקט מתחיל לא בעיצוב דף נחיתה, אלא באופן שבו כללי העסק מוטמעים בארכיטקטורה: מי רואה איזה נתונים, כיצד 1C ומערכות הנהלת חשבונות מסונכרנות, וכיצד 500 אנשי קשר הופכים ל-500,000 ללא פגיעה בביצועים. במשך 7 שנים סיפקנו למעלה מ-40 פורטלים לחברות עם 50 עד 5000 עובדים. נבחן את הפרויקט שלך תוך יומיים עסקיים — פשוט צור קשר.
אתר ציבורי ניתן להשיק ללא עיצוב מפורט — ולשפר אותו באופן איטרטיבי על בסיס משוב. עם פורטל ארגוני, גישה זו לא עובדת: עלות תיקון החלטות ארכיטקטוניות לאחר השקה עבור 200 משתמשים גבוהה לאין שיעור. לכן, אנו מקדישים 70% מהזמן לניתוח ואב-טיפוס, וכותבים קוד רק לאחר אישור מטריצת התפקידים ותוכנית האינטגרציה.
שלושה תחומים שבהם מתקבלות לעיתים קרובות החלטות שגויות: מודל הרשאות גישה, ביצועים על נתונים גדולים, ועדכונים בזמן אמת.
כיצד לבנות מודל תפקידים ל-30 מחלקות?
מודל הרשאות גישה. "מנהל רואה רק את הלקוחות שלו, ראש מחלקה רואה את כל המחלקה, מנכ"ל רואה את כל החברה, אך נתונים פיננסיים גלויים רק ל-CFO ומעלה." זה לא שלושה תפקידים — זו מטריצה של תפקידים, הרשאות, יחידות ארגוניות ובעלות על רשומות. יישום זה עם if ($user->role === 'manager') בקונטרולרים יהפוך את הקוד לבלתי ניתן לתחזוקה לאחר שישה חודשים.
הגישה הנכונה: Spatie Laravel Permission למודל תפקידים בסיסי + מחלקות Policy להרשאות ברמת אובייקט (can('view', $deal) בודק לא רק את התפקיד אלא גם את הבעלות). למבנים היררכיים מורכבים — ABAC (בקרת גישה מבוססת תכונות) במקום RBAC.
ביצועים על נתונים גדולים. CRM עם 500,000 אנשי קשר, סינון לפי 10 שדות, מיון לפי פעילות — יישום נאיבי מניב שאילתות של 15 שניות. אינדקסים מורכבים, דנורמליזציה של אגרגטים (last_activity_at על הרשומה עצמה במקום MAX על טבלה מקושרת), Elasticsearch לחיפוש טקסט מלא באנשי קשר.
עדכונים בזמן אמת. מספר עובדים עובדים על אותו מסמך או משימה. ללא WebSocket — setInterval קבוע עם פולינג כל 5 שניות, עומס נוסף על השרת, עיכובים בעדכונים. Laravel Broadcasting + Pusher/Soketi או שרת WebSocket מותאם אישית על Node.js — להתראות ושינויים בזמן אמת.
מערכות CRM
סט טיפוסי: אנשי קשר, חברות, עסקאות, פעילויות, משפך מכירות, דוחות. טכנית פשוט. המורכבות טמונה בפרטים.
משפך עם שלבים מותאמים אישית. כל חברה רוצה משפך משלה. השלבים חייבים להיות ניתנים להגדרה ללא פריסה. טבלה pipeline_stages עם position, color, is_final, probability — וגרירה ושחרור לסידור מחדש בממשק המשתמש (React DnD או dnd-kit).
היסטוריית שינויים. מי ומתי שינה סטטוס עסקה, הקצה מחדש אחראי, הוסיף הערה. יומן ביקורת באמצעות Observer או spatie/laravel-activitylog. בממשק המשתמש — ציר זמן עם סינון לפי סוג פעילות.
אינטגרציית דוא"ל. IMAP/SMTP לחיבור תיבת דואר ארגונית, קישור אוטומטי של הודעות נכנסות לאנשי קשר לפי כתובת דוא"ל. זה עובד באופן אמין רק עם טיפול נכון בהודעות חוזרות, ספאם ותשובות אוטומטיות — נדרש סינון.
מדוע ERP הוא לא על קוד אלא על נתונים?
ERP הוא כאשר CRM, מחסן, ייצור, הנהלת חשבונות ומשאבי אנוש מאוחדים למערכת אחת. ERP מלא מאפס הוא נדיר (בדרך כלל אינטגרציה עם מערכות קיימות), אך מערכות מודולריות לעסקים ספציפיים נפוצות.
עיקרון מפתח: פעולות פיננסיות חייבות להיות בלתי ניתנות לשינוי. לא UPDATE orders SET status = 'cancelled' — אלא יצירת רשומה חדשה order_cancellations עם הפניה להזמנה המקורית. זהו עיקרון פנקס בלתי ניתן לשינוי, המפשט ביקורת והתאמות.
אינטגרציה עם 1C היא כמעט תמיד חלק מפרויקט ERP. סנכרון דו-כיווני: מ-1C לפורטל (ספריות, יתרות, מחירים) ומהפורטל ל-1C (הזמנות, מסמכים). RabbitMQ כ-bus אירועים בין מערכות אמין יותר מאינטראקציית HTTP ישירה — אם 1C לא זמין, הודעות ממתינות בתור.
כיצד בנויים LMS: פלטפורמות למידה?
מערכת ניהול למידה — קורסים, מודולים, שיעורים, מבחנים, תעודות, התקדמות משתמשים.
תוכן וידאו הוא החלק התובעני ביותר ב-LMS. אחסון וידאו על שרת משלך והגשה דרך Nginx הוא רעיון רע: יקר, איטי, ללא קצב סיביות אדפטיבי. גישה נכונה: העלאה ל-S3/Cloudflare R2, טרנסקודינג דרך AWS Elemental MediaConvert או Mux, רשימת HLS לסטרימינג אדפטיבי דרך Video.js או Plyr.
התקדמות צפייה — שליחה תקופתית של watch_position מהפרונטאנד (כל 10–30 שניות), אחסון ב-Redis עם סנכרון תקופתי ל-PostgreSQL. אל תשמור כל שנייה למסד הנתונים — זה יהרוג את הביצועים.
תאימות SCORM — אם נדרשת אינטגרציה עם חומרי הדרכה ארגוניים. מודול נפרד, קיימות ספריות מוכנות (scorm-again).
Intranet ופורטלי משאבי אנוש
אינטראנט ארגוני: חדשות, מסמכים, מבנה ארגוני, תהליכי משאבי אנוש (חופשות, בקשות, KPIs).
מבנה ארגוני במסד הנתונים הוא מבנה היררכי. רשימת שכנים (parent_id על כל רשומה) פשוטה ליישום אך איטית לשאילתות רקורסיביות. Nested Sets או Closure Table מהירים יותר לקריאת היררכיות, מורכבים יותר לשינויים. ב-PostgreSQL — CTEs רקורסיביים (WITH RECURSIVE) עם רשימת שכנים — איזון בין פשטות לביצועים.
אישור מסמכים ובקשות — מנוע זרימת עבודה. אישורים ליניאריים פשוטים (עובד → מנהל → משאבי אנוש → רואה חשבון) יכולים להתבצע ללא מנוע מיוחד. לא-ליניאריים (ענפים מקבילים, מעברים מותנים, האצלה) — שקול פתרונות מוכנים: Temporal.io לתיאום זרימות עבודה או מכונת מצבים מותאמת אישית המבוססת על תבנית state-machine.
מה כלול בעבודה
בהזמנת פיתוח פורטל ארגוני, אתה מקבל:
- תיעוד ארכיטקטוני (דיאגרמות ER, תוכנית אינטגרציה, מטריצת תפקידים)
- קוד מלא במאגר Git עם CI/CD
- גישה לתשתית (אחסון, מסדי נתונים, אחסון קבצים)
- הדרכה למנהלים ומשתמשי מפתח (2–3 מפגשים)
- תמיכת אחריות למשך 3 חודשים לאחר ההשקה
עקרונות העיצוב שלנו מסתמכים על תיעוד Laravel הרשמי בנושא הרשאות (Policies) והמלצות לעבודה עם תורים.
מחסנית טכנית לפורטלים
| שכבה | כלים |
|---|---|
| בקאנד | Laravel + PostgreSQL |
| פרונטאנד | React + TypeScript (Inertia.js או SPA נפרד) |
| זמן אמת | Laravel Echo + Soketi / Pusher |
| חיפוש | Meilisearch (התחלה מהירה) או Elasticsearch (נפח) |
| תורים | Laravel Queue + Redis |
| קבצים | תואם S3 (MinIO באירוח עצמי או AWS S3) |
| ניטור | Sentry + Telescope (פיתוח) |
הערכות לוחות זמנים
| סוג פורטל | לוח זמנים |
|---|---|
| CRM (בסיסי) | 10–16 שבועות |
| LMS (קורסים + וידאו + מבחנים) | 14–22 שבועות |
| פורטל משאבי אנוש (חופשות, KPIs, מבנה ארגוני) | 12–20 שבועות |
| ERP ארגוני (מודולרי) | 24–52 שבועות |
העלות מחושבת באופן אישי לאחר ניתוח מפורט של הדרישות ומודל התפקידים. לקבלת הערכה ראשונית, צור קשר — ננתח את המשימה שלך ונציע פתרון אופטימלי כולל.







