פיתוח אפליקציות מובייל למשלוחי מכולת
אנו בונים אפליקציות מובייל למשלוחי מכולת — אחד התחומים המאתגרים ביותר טכנית. תארו לעצמכם: לקוח פותח את האפליקציה, רואה 5,000 מוצרים, מוסיף חלב לעגלה, וכעבור דקה המוצר אזל מהמלאי. איך מונעים זאת? רק באמצעות סנכרון מלאי בזמן אמת עם אירועי WebSocket. קטלוג גדול (אלפי פריטים), ניהול מלאי בזמן אמת, החלפות מוצרים, איסוף הזמנות במחסן, לוגיסטיקת מייל אחרון — כל אחד מהבלוקים האלה הוא מערכת נפרדת. המשימה שלנו היא לחבר אותם למכלול אחד קוהרנטי, תוך הבטחת יציבות ומהירות.
כיצד להבטיח ביצועי קטלוג עם אלפי פריטים?
הבעיה הראשונה היא ביצועי הקטלוג. יותר מ-5,000 פריטי SKU, חיפוש, סינונים לפי קטגוריות, מבצעים, מותגים. יישום נאיבי — טעינת הכל וסינון מקומי — נכשל.
הגישה הנכונה: פגינציה וסינון בצד השרת. Flutter + Flutter infinite_scroll_pagination: בקשת 20 פריטים, בגלילה לסוף — 20 הבאים. החיפוש הוא בצד השרת, באמצעות חיפוש טקסט מלא של PostgreSQL (tsvector + tsquery) או Elasticsearch לשאילתות מורכבות עם שגיאות הקלדה (חיפוש fuzzy באמצעות מרחק לוונשטיין).
שמירת קטגוריות פופולריות במטמון Redis: העמוד הראשי עם מבצעים ופריטים נמכרים מתעדכן כל 5 דקות, לא בכל בקשה.
מלאי בזמן אמת. פריט שנגמר במחסן — חייב להיעלם מהקטלוג מיד, לא בסנכרון הבא. עדכוני מלאי דרך WebSocket או Server-Sent Events (SSE): הלקוח נרשם לערוץ קטגוריה, השרת דוחף שינויים.
דוגמה למימוש חיבור WebSocket
final wsUrl = Uri.parse('wss://example.com/socket');
final webSocket = await WebSocket.connect(wsUrl);
webSocket.listen((message) {
// Обработка события об остатках
}); מה לעשות כשפריט אזל מהמלאי?
לאחר ביצוע ההזמנה, היא נשלחת לאיסוף במחסן. אפליקציית האיסוף היא ממשק Flutter נפרד: רשימת פריטים, סריקת ברקוד לאישור, סימון "אזל מהמלאי" עם הצעת החלפה.
החלפות הן רגע רגיש. האוסף מציע מוצר חלופי → הלקוח מקבל הודעת push וחייב לאשר או לדחות. פסק זמן של 5 דקות: אם אין תגובה, מופעלת החלפה אוטומטית (מוצר דומה מאותה קטגוריה) או שהפריט מוסר מההזמנה עם חישוב מחדש של הסכום הכולל.
תהליך זה דורש: WebSocket בין אפליקציית האיסוף לאפליקציית הלקוח, חישוב מחדש בזמן אמת של סכום ההזמנה, push בעדיפות גבוהה (FCM High Priority, final wsUrl = Uri.parse('wss://example.com/socket'); final webSocket = await WebSocket.connect(wsUrl); webSocket.listen((message) { // Обработка события об остатках }); ב-payload).
משבצות משלוח ולוגיסטיקה
הלקוח בוחר משבצת: היום 18:00–20:00, מחר 10:00–12:00. משבצות זמינות הן לוגיקה בצד השרת: מספר שליחים פעילים × קיבולת משבצת − הזמנות שכבר הוזמנו. ללא קידוד קשיח — חישוב דינמי.
אזורי משלוח: מצולעים ב-PostGIS. בעת הזנת כתובת, אנו בודקים אם הנקודה נמצאת בתוך אזור המשלוח (ST_Contains), ואם כן, מציגים משבצות זמינות לאותו אזור.
מעקב אחר שליח — קואורדינטות דרך WebSocket, סמן עם אנימציה על flutter_map. זמן הגעה משוער באמצעות Yandex Routes API תוך התחשבות בעומסי תנועה.
תוכנית נאמנות והתאמה אישית
נקודות מצטברות הן סטנדרט למשלוחי מכולת. אבל התאמה אישית עובדת ביעילות רבה יותר: "אתה בדרך כלל מזמין חלב פעם בשבוע — כנראה שהוא עומד להיגמר בקרוב." זה לא קסם של ML, אלא אנליטיקה פשוטה המבוססת על היסטוריית הזמנות: תדירות רכישה × זמן ממוצע בין הזמנות = תאריך משוער של ההזמנה הבאה. שליחת push יום לפני התאריך הזה.
מילוי עגלה מחדש בלחיצה אחת: "חזור על ההזמנה האחרונה" — כל הפריטים בעגלה, פריטים לא זמינים מוחרגים, והשאר במחירים עדכניים.
טעויות פיתוח אופייניות
יישום העגלה רק בצד הלקוח (SharedPreferences). כשמתחברים ממכשיר חדש, העגלה אובדת. העגלה צריכה להתקיים על השרת, עם סנכרון ללקוח.
שכחת החזרות. הלקוח קיבל מוצר מקולקל — חייב להיות תהליך באפליקציה: תמונה + תיאור → בקשת החזרה → החלטה תוך 24 שעות → החזר כספי דרך YooKassa API.
| בעיה | פתרון |
|---|---|
| עגלה אובדת בעת החלפת מכשיר | עגלה בצד השרת עם סנכרון |
| פריט אזל מהמלאי, הקטלוג לא מעודכן | אירועי מלאי ב-WebSocket |
| החלפה ללא אישור הלקוח | Push עם פסק זמן והחלפה אוטומטית |
| משבצות משלוח עמוסות יתר על המידה | חישוב דינמי המבוסס על PostGIS |
עלות פיתוח אפליקציית הלקוח מתחילה מכמה מיליוני דולרים, תלוי באינטגרציות. עלות התמיכה לאחר ההשקה היא תשלום חודשי קבוע. חיסכון של עד 40% באמצעות שימוש ב-Flutter במקום בשתי צוותים נפרדים לפלטפורמות שונות.
איך אנחנו עושים זאת: תהליך וטכנולוגיות
- אנליטיקה ואב-טיפוס (User Flow, ארכיטקטורה)
- עיצוב — רספונסיבי ל-iOS ואנדרואיד
- פיתוח אפליקציית הלקוח (Flutter)
- פיתוח אפליקציית האיסוף ואפליקציית השליח
- פאנל ניהול ווב (Laravel)
- אינטגרציות: 1C, YooKassa, שערי SMS, APIs לוגיסטיים
- בדיקות: יחידה, widget, אינטגרציה, בדיקות עומס
- העלאה ל-App Store ו-Google Play, מעבר בדיקות האישור
- תיעוד טכני, הדרכת צוות, חודשיים של תמיכה
טכנולוגיות
Flutter 3.x + Bloc, Laravel 10 + WebSocket, PostgreSQL + PostGIS + Elasticsearch (לחיפוש), Redis, FCM, YooKassa עם תמיכה בהחזרות, Yandex MapKit + Yandex Routes API.
| רכיב | זמן פיתוח |
|---|---|
| אפליקציית לקוח (קטלוג, עגלה, הזמנה, מעקב) | 16–20 שבועות |
| אפליקציית איסוף | 6–8 שבועות |
| אפליקציית שליח | 8–12 שבועות |
| פאנל ניהול ווב | 8–12 שבועות |
| אינטגרציות (1C, קופות רושמות, SMS) | 3–6 שבועות |
מחזור הפיתוח המלא של אפליקציית משלוחי מכולת מאפס הוא 28 עד 40 שבועות, תלוי בהיקף האינטגרציות ובדרישות המדרגיות. יש לנו ניסיון של 7+ שנים בפיתוח מובייל והעברנו למעלה מ-15 פרויקטים בתחום המשלוחים. אנו מבטיחים יציבות ותמיכה לאחר ההשקה.
נעריך את הפרויקט שלכם — צרו קשר לייעוץ. הזמינו פיתוח ונכין הצעה מסחרית.







