פיתוח טבלאות אינטראקטיביות ב-TanStack Table במפתח

טבלאות גדולות מתחילות להאט בדיוק כשהנתונים נעשים רבים: מסננים מתעכבים, מיון נתקע, ומשתמשים מאבדים סבלנות. אנו מפתחים טבלאות אינטראקטיביות ב-TanStack Table במפתח — מתכנון הלוגיקה ועד מסירת פתרון מוכן לצוות שלך. אתה מקבל עבודה צפויה עם כל נפח שורות והאצה ניכרת בפעולות יומיומיות.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

אלה רק חלק מהסוגים הטכניים של אתרים שאנו עובדים איתם, ולכל אחד מהם יכולים להיות מאפיינים ופונקציונליות ספציפיים משלו, וכן ניתן להתאים אותם לצרכים ולמטרות הספציפיים של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
פיתוח טבלאות אינטראקטיביות ב-TanStack Table במפתח
בינוני
~3-5 ימים
שאלות נפוצות

טבלאות אינטראקטיביות ב-TanStack Table: היכן הלוגיקה נשברת

טבלה שנכתבת באופן עצמאי נשברת באופן צפוי: מיון, סינון, עימוד ובחירת שורות חיים במקומות שונים — במצב הקומפוננטה, ב-ref, וב�closures של מטפלים.

ברגע שמוסיפים וירטואליזציה או טעינה מהשרת, החלקים האלה מתחילים להתווכח זה עם זה: הסינון מתאפס בעת רינדור מחדש, הבחירה "נודדת" לשורות אחרות לאחר מיון, והמונה מציג דבר אחד בעוד שעל המסך מוצג אחר. כל פגם כזה מתגלה רק לאחר חיפוש ארוך, כי מקור האמת מפוזר על פני עשרה מקומות.

נקודת הכשל השנייה — ביצועי הרינדור. כל עוד יש מאה שורות, הכול בלתי מורגש. על מדגם של כמה אלפים, הדפדפן מתחיל לרנדר מחדש את כל הסט בכל הקלדה בשדה החיפוש, והממשק קופא לשניות.

זה לא מתוקן ב"אופטימיזציה אחר כך", אלא בארכיטקטורה: מודל מצב הטבלה, ממויזציה של שורות, וירטואליזציה של החלון והפרדה בין עיבוד נתונים בצד הלקוח לעיבוד בצד השרת.

TanStack Table בדיוק עוסק בזה: הוא לא מצייר את התגיות בשבילכם, אלא מחזיק את מצב הטבלה — מיון, סינון, קיבוץ, בחירת שורות, עימוד — במקום אחד וצפוי. אתם מקבלים שליטה על הרינדור ונקודות מפורשות לחיבור בקשות לשרת, בלי לאבד סינון בעת רענון נתונים. נבחן כיצד זה נסגר בפועל: ממודל הנתונים ועד חזרה לאחור של מהדורה כושלת.

מה נותנת טבלה מנוהלת: מהירות, יציבות, צפיות

מודל מנוהל הוא כאשר מצב הטבלה (מיון, מסננים, עימוד, בחירת שורות) חי במקום אחד, ולא מפוזר על פני עשרות מטפלים בתוך הרכיב. אנחנו מחזיקים אותו במאגר מבוקר ומעבירים אותו לטבלה כקלט — הממשק מפסיק "לנחש" את המצב הנוכחי ותמיד מצייר בדיוק את מה שנמצא במודל.

האפקט המעשי ניכר בהיקף הנתונים: על מדגמים של עשרות אלפי שורות, מיון לפי עמודה מסתיים בשברירי שנייה, מכיוון שהחישוב מתבצע לפי אינדקסים ולא בסריקה מלאה בכל רינדור. הקיפאון בעת החלפת מסננים וגלילה נעלם: חישובים כבדים הוצאו ממחזור הציור, והשורות מופיעות לפי הצורך ולא כולן בבת אחת.

הקוד מצטמצם באופן ניכר. לוגיקת השליפה, המיון והעימוד מתוארת באופן דקלרטיבי — מערכת חוקים אחת במקום פיזור של תנאים, ולכן הרחבה כמו "להוסיף עמודה עם שדה מחושב" אורכת שעות ולא ימים. מהנדס חדש נכנס לטבלה דרך תיאור המודל, ולא דרך קריאת כל הרכיב.

העומס על הדפדפן מפסיק לגדול יחד עם מספר השורות: הזיכרון נשמר ברמה יציבה, והממשק מגיב באותה מידה גם במאה רשומות וגם במדגם גדול. בנפרד אנחנו מטפלים במקרי קצה — תוצאה ריקה, שגיאת טעינה, תגובת שרת ממושכת: המשתמש רואה מצב מובן, ולא מסך קפוא.

תחזוקתיות נשענת על צפיות: ניתן לכסות את חוקי הסינון והמיון בבדיקות בנפרד מהציור, והתנהגות הטבלה משוחזרת בבדיקות ללא לחיצה ידנית על הממשק.

מצבי עבודה של טבלה: צד לקוח, צד שרת, היברידי

המצב נקבע לא לפי גודל הטבלה, אלא לפי היכן הנתונים נמצאים ומי מנהל אותם. מצב צד לקוח מחזיק את כל המערך בזיכרון הדפדפן: מיון, סינון ועימוד מחושבים במקום, והתגובה לפעולה מיידית.

התקרה היא נפח השליפה: עד כמה אלפי שורות זה נוח, ומעבר לכך הזיכרון והרינדור הראשוני מתחילים להאט באופן מורגש.

עימוד בצד שרת מעביר את החיתוך, המיון והסינון לבקאנד: הדפדפן מקבל רק את העמוד הנוכחי. כך עובדים מדריכים עם מאות אלפי רשומות, אך כל פעולה היא בקשת רשת, ובקישור איטי הממשק "נתקע" בין קליקים. מקלים על כך על ידי טעינה מוקדמת של עמודים סמוכים ומטמון של חיתוכים שכבר נצפו.

מצב היברידי לוקח את הטוב משניהם: סינון ומיון מבוצעים על ידי השרת, ועימוד ווירטואליזציה של שורות — על ידי הלקוח. בזיכרון נשמר מערך מוגבל, רשימות ארוכות מרונדרות בחלון, והגלילה נשארת חלקה גם בעשרות אלפי שורות.

מצב מתי מתאים מגבלות
צד לקוח עד כמה אלפי שורות, נתונים משתנים לעיתים רחוקות גידול בזיכרון, ירידה בביצועי הרינדור הראשוני
צד שרת מדריכים גדולים, עדכונים תכופים השהיה בכל בקשה, נדרש קישור יציב
היברידי אלפי שורות עם סינון ומיון סנכרון מורכב יותר בין מצב הלקוח לשרת

את הבחירה קובעים בשלב התכנון: החלפת מצב מאוחר יותר משפיעה גם על הלוגיקה בצד הלקוח וגם על חוזי ה-API.

שלבי יישום: מביקורת הטבלה הנוכחית ועד למסירה

העבודה על טבלה אינטראקטיבית מתחילה לא בקוד, אלא בניתוח של מה שכבר קיים: כיצד בנויה הטבלה הנוכחית, היכן היא מאטה על מדגמים גדולים, אילו תרחישי סינון ומיון אנשים באמת משתמשים בהם, ואילו נשארו "ליתר ביטחון". ביקורת טבלה כזו מראה מה יש לכתוב מחדש ומה מספיק להגדיר מחדש — ומיד מגדירה את גבולות המשימה.

בהמשך אנו מתכננים מודל מצב: מה חי בפרמטרים הניתנים לכתובת (סינונים, מיון, עמוד), מה — באופן מקומי, כיצד הנתונים נטענים לפי עמודים ונשמרים במטמון. מתרשים זה תלוי אם הטבלה תשרוד רענון עמוד והאם המשתמש יחזור לאותו מראה.

  1. ביקורת הטבלה. בוחנים את הקוד הנוכחי, מודדים התנהגות על נפחים אמיתיים, מתעדים צווארי בקבוק ורשימה של מה שנשמר ללא שינויים.
  2. תכנון מודל המצב. מגדירים אילו פרמטרים מסונכרנים עם הכתובת, כיצד בנויים בחירת שורות, קיבוץ ופתיחת שורות, היכן נשמר המצב.
  3. הגדרת עמודות. מתארים עמודות באופן דקלרטיבי: רוחבים, הצמדה, סדר, נראות, עיצוב תאים, רנדורים מותאמים אישית לסוגי נתונים מורכבים.
  4. הרכבת אינטראקציות. מחברים מיון, סינונים, חיפוש, עימוד ווירטואליזציה של רשימות ארוכות כך שמדגמים כבדים לא יחסמו את הממשק.
  5. בדיקה על נתונים. מריצים את הטבלה על תפוקות אמיתיות: ערכי גבול, תשובות ריקות, שאילתות איטיות, התנהגות בעת כשל טעינה.
  6. תיעוד ומסירת קוד. מעצבים את מבנה הרכיבים, מתארים את הגדרת העמודות ואת מודל המצב, כדי שצוות הלקוח יוכל להוסיף עמודות וכללים בלעדינו.
  7. תמיכה לאחר ההשקה. עוקבים אחר ההתנהגות בתעבורה אמיתית, מכווננים ביצועים ומטפלים במשוב מהמשתמשים.

כל שלב מסתיים בתוצאה ניתנת לבדיקה, ולא בדוח על העבודה שנעשתה. מסירת הקוד כוללת לא רק מאגר, אלא גם תרשים מובן שלפיו ניתן לפתח את הטבלה הלאה.

הגדרת עמודות, מסננים ומיון בהתאמה לתרחיש שלך

ההגדרה מתחילה בתיאור העמודות: עבור כל עמודה מוגדרים סוג הנתונים, אופן התצוגה וכללי החישוב. עמודות מספריות מקבלות יישור ופורמט ספרות, תאריכים — פורמט אחיד ואזור זמן, ועמודות טקסט — קיצור עם הרחבה בלחיצה.

עמודות מחושבות (למשל מרווח או סטייה מהתוכנית) מחושבות בצד הלקוח ללא בקשה חוזרת לשרת, ולכן החישוב מחדש בעת סינון מתבצע באופן מיידי.

הסינון בנוי כשכבתי: מספר תנאים מאוחדים בלוגיקת "וגם/או", כל אחד מהם משויך לעמודה משלו ולסוג השוואה — טווח, השתייכות לרשימה, תת-מחרוזת. מצב המסננים והמיון נשמר בשורת הכתובת, ולכן ניתן להעביר קישור לבחירה מסוימת לעמית או לשמור אותו כתצוגה.

המיון תומך במספר רמות: תחילה לפי יחידה, בתוכה — לפי תאריך, ואז לפי סכום; את סדר הרמות המשתמש משנה בגרירה.

  • סוגי עמודות — טקסט, מספר, תאריך, סטטוס, ערך מחושב; מסוג העמודה תלויים עורך התא וכללי ההשוואה.
  • מסננים שכבתיים — סט תנאים עם לוגיקת "וגם/או", שמירת סטים כתצוגות בעלות שם.
  • מיון רב-רמתי — עד מספר מפתחות בו-זמנית עם סדר עדיפויות ברור.
  • קיבוץ שורות — כיווץ לפי קטגוריה עם אגרגטים (סכום, ממוצע, כמות) ברמת הקבוצה.
  • הצמדת עמודות — עמודות מפתח נשארות על המסך בעת גלילה אופקית של טבלה רחבה.
  • עיצוב מותנה — הדגשת תאים ושורות לפי ספים: איחורים, סטיות שליליות, חריגה ממגבלה.
  • עריכה וולידציה — עריכת תאים ישירות בטבלה עם בדיקת ערכים לפני שליחה לשרת.

החלק החזותי מוגדר בנפרד מהלוגיקה: צפיפות שורות, נראות עמודות, סדר ורוחב — המשתמש שומר בפרופיל שלו. בבסיס — TanStack Table, ספרייה ללא עיצוב כפוי: את הסימון והעיצוב אנו כותבים עבור הממשק שלך, ולא מתאימים את הממשק לרכיב מוכן. הדבר מאפשר לשמור על מראה אחיד עם שאר מסכי המוצר.

מה הלקוח מקבל לידיו לאחר ההטמעה

ההטמעה אינה מסתיימת בהדגמה של טבלה עובדת, אלא בסט של ארטיפקטים שלפיהם הצוות שלכם יוכל לפתח אותה בלעדינו. להלן — מה בדיוק אנו מוסרים.

  • תצורת הטבלה — תיאור העמודות, סוגי הנתונים, המיון, המסננים והקיבוצים בצורה דקלרטיבית. עמודה חדשה מתווספת על ידי עריכת תיאור אחד, ולא על ידי כתיבה מחדש של לוגיקת הרינדור.
  • סכמת מודל המצב — מפה של היכן נמצאים המיון, העימוד, סימון השורות והקבוצות הפרושות: מה נמצא בכתובת העמוד, מה במצב המקומי, ומה נשלח לשרת. לפיה ניתן לראות מדוע המסנן אינו מתאפס במעבר, וכיצד לשחזר את מצב הטבלה באמצעות קישור.
  • נהל הרחבת עמודות — סדר פעולות שלב אחר שלב: היכן להצהיר על עמודה, כיצד לחבר מיון צד-שרת לפיה, ואילו בדיקות להריץ. מיועד למפתח שרואה את הפרויקט בפעם הראשונה.
  • תיעוד האינטגרציה — חוזי החלפה עם ה-API שלכם: פורמט הבקשה בעת החלפת עמוד ומסננים, מבנה התגובה, ההתנהגות במקרה של תוצאה ריקה ושגיאה, עימוד באמצעות סמן או עמודים.
  • הוראות לצוות — כיצד להרים את הפרויקט באופן מקומי, היכן נמצאים נתוני הבדיקה, אילו פקודות מריצות את הבדיקות והבנייה, ומה לבדוק כאשר יש אי-התאמה בין המספרים בטבלה לבין אלו שבייצוא.
  • סט בדיקות — בדיקות למיון, סינון, עימוד וייצוא, כולל מקרי קצה: תגובה ריקה, עמוד אחרון חלקי, איפוס מסננים.
  • רשימת מגבלות ידועות — רשימה כנה של מה שלא נכלל במכוון בהיקף, ואילו מקומות כדאי לשקול מחדש עם גידול הנתונים.

כל ארטיפקט קשור לקוד העובד, ואינו קיים בנפרד ממנו. אם כעבור חצי שנה מספר העמודות יוכפל, ההרחבה מתבצעת לפי הנהל — בלי לפנות למחברים של הגרסה הראשונית.

במה דף שרת נבדל מדף לקוח בפועל

דף לקוח מחזיק את כל מערך השורות בזיכרון הדפדפן: הטבלה שולפת את הנתונים פעם אחת וממשיכה לחתוך אותם בעצמה, ומחליפה עמודים באופן מיידי ללא פניות לשרת. כל עוד מדובר במאות עד אלפי שורות, זהו הנתיב הפשוט והמהיר ביותר — גם המיון והסינון מוטלים על הלקוח.

הבעיה מתחילה עם גידול הנתונים: כל רשומה חדשה מגדילה גם את נפח השליפה וגם את הזמן עד לרינדור הראשון, והעומס מוטל על מכשיר המשתמש ולא על השרת.

דף שרת הופך את המודל: הדפדפן מבקש רק את העמוד הנוכחי, בעוד שהסינון, המיון וספירת מספר השורות הכולל מבוצעים במסד הנתונים. העומס על השרת הופך לצפוי — כל מעבר דורש שאילתה קומפקטית אחת במקום שליפת כל המערך.

בדיוק משום כך, עם גידול הנתונים, המודל של השרת נשאר מגיב במקומות שבהם מודל הלקוח כבר נתקל במגבלות זיכרון וזמן רינדור.

בחירת המודל היא שאלה של היכן הנתונים חיים וכיצד הם גדלים. דף לקוח מתאים למדריכים, טבלאות ניהול של כמה אלפי שורות ודוחות שמשתנים לעיתים רחוקות. דף שרת — ליומני אירועים, הזמנות, לוגים וכל מערך שמתעדכן באופן קבוע ונמדד בעשרות אלפי שורות ויותר.

בפועל, לרוב משלבים בין המודלים: השרת מספק עמוד, בעוד שהמיון בתוכו והחיפוש המהיר בחלק הטבלה שנטען מבוצעים בצד הלקוח. כך נשמרת תגובה מיידית לפעולות המשתמש ולא גדל העומס על השרת.

אנו מנתחים מערך נתונים מסוים ואת הדינמיקה שלו, ולאחר מכן קובעים את המודל — אחרת הטבלה או מאטה כבר בהתחלה, או נתקלת בתקרה כבר בגידול הראשון.

מקרה בוחן: טבלה בת 80 אלף שורות הפסיקה לקפוא בעת סינון

הלקוח הגיע עם טבלת עבודה של ניהול מלאי: 80 אלף שורות, 14 עמודות, מסננים לפי סטטוס, תאריכים וצד נגדי. בכל הקלדת תו בשדה החיפוש הממשק קפא ל-4-6 שניות — React צייר מחדש את כל השורות בבת אחת, והסינון עבד על המערך המלא בזיכרון.

המשתמשים התרגלו ל"ללחוץ ולהמתין", חלק מהפעולות ביצעו ב-Excel, כי שם התגובה הייתה מהירה יותר. התמיכה קיבלה 15-20 פניות בשבוע בניסוח "הטבלה לא מגיבה".

כתבנו מחדש את שכבת הנתונים והרינדור על TanStack Table. את לוגיקת הסינון והמיון העברנו לפעילות בצד השרת, בדפדפן השארנו רק רשימה וירטואלית — ב-DOM חיים 30-40 שורות במקום 80 אלף. מצב המסננים נשמר ב-URL, כך שניתן לשלוח קישור לבחירה ספציפית לעמית.

נפח הקוד של הטבלה עצמה הצטמצם מ-~2400 ל-~900 שורות: נעלמה הסנכרון הידני של מיון, בחירת שורות ודפדוף, שהיו מתוחזקים ידנית קודם לכן.

מדד לפני אחרי
תגובה להקלדת מסנן 4-6 ש' 120-200 מ"ש
קפיאות ממשק באופן קבוע בעת סינון לא משוחזרות
שורות ב-DOM 80 000 30-40
קוד הטבלה ~2400 שורות ~900 שורות
פניות לתמיכה 15-20 בשבוע 1-2 בחודש

חודש לאחר ההשקה צוות הלקוח הוסיף עוד שתי עמודות ומסנן חדש — ללא שינויים בליבת הטבלה, רק בתיאור התצורה. זו הייתה התוצאה העיקרית: הרחבת הטבלה הפכה לזולה יותר מאשר תחזוקת הישנה.

ספקות טכניים נפוצים לפני תחילת העבודה

לפני שמתחילים, כמעט כל צוות שואל את אותה קבוצת שאלות — הן נוגעות לא לספרייה עצמה, אלא לאופן שבו היא תשתלב במוצר שכבר עובד. להלן תשובות לחמישה ספקות שצפים לרוב בשיחות טכניות.

תאימות: האם זה יעבוד עם הסטאק הנוכחי שלנו?

TanStack Table הוא ליבה headless: הוא אחראי על מיון, סינון, קיבוץ, עימוד ווירטואליזציה של שורות, אך אינו כופה מבנה או עיצוב. לכן הטבלה משתלבת בכל ממשק קיים — React, Vue, Svelte, Solid — ואינה מתנגשת עם מערכת העיצוב שלכם. אנו מחברים אותה למקורות הנתונים הקיימים דרך שכבת התעבורה שלכם, בלי לכתוב מחדש את הבקאנד.

מיגרציה: מה יקרה לטבלה הישנה ולנתונים שלה?

מעבירים בהדרגה: תחילה מרימים את הטבלה החדשה לצד הישנה על אותו סט נתונים, ומשווים שליפות, מיון ואגרגטים שורה אחר שורה. רק לאחר שהפערים שווים לאפס, מעבירים את התעבורה. מצב הסינון והעמודות יכול להישמר ב-URL או באחסון מקומי — המשתמש לא מאבד את ההקשר במעברים.

תמיכה בקוד: מי יתחזק לאחר המסירה?

מוסרים מאגר עם מבנה קריא: הגדרת עמודות, תאים וה-hooks מופרדים למודולים נפרדים, והלוגיקה אינה מרוחה על פני קומפוננטות. כותבים תיעוד להרחבה — כיצד להוסיף עמודה, מסנן או מקור נתונים בלי לגעת בליבה. בהמשך או שאנחנו מתחזקים, או שהצוות שלכם מנהל באופן עצמאי.

בדיקות: כיצד לוודא שהטבלה לא תישבר על נתונים אמיתיים?

מכסים בבדיקות את המסלולים הקריטיים: מיון, סינון, עימוד, בחירת שורות ומקרי קצה — סטים ריקים, נפחים גדולים, ערכים פגומים. מריצים על התפוקות האמיתיות שלכם, ולא על נתונים סינתטיים, כדי לתפוס אנומליות לפני השחרור.

לוחות זמנים להטמעה: כמה זה ייקח?

גרסה עובדת ראשונה עם פעולות בסיסיות מוצגת מוקדם — בהמשך, באיטרציות, מוסיפים מסננים, קיבוץ ווירטואליזציה. לוח הזמנים המדויק תלוי במספר העמודות, המקורות וכללי הגישה, ולכן קובעים את השלבים לאחר ניתוח המשימה שלכם.

תארו את הטבלה הנוכחית ואת הדרישות — נחזור עם הערכה, תוכנית מיגרציה ומתווה הבדיקות.

נדון במשימה שלכם ונחזור עם הערכה ותוכנית

השיחה הראשונה נמשכת 30-40 דקות ואינה דורשת מכם אפיון טכני. די לתאר איזו משימה הטבלאות פותרות היום: כמה שורות ועמודות יש בנתונים האמיתיים, מי ובאיזו תדירות מסנן אותן, ומה קורה בעת הייצוא.

זה מספיק כדי להבין את סוג הפתרון — וירטואליזציה של שורות, עימוד בצד השרת, אגרגטים בצד מסד הנתונים — ולא לתכנן מעבר לנדרש.

בנפרד נדון בהכנת הנתונים: מהיכן מגיעים הרשומות, באיזה אופן הן מאוחסנות כעת, האם קיימים ספרי עזר והרשאות גישה לפי תפקידים. לעתים קרובות צוואר הבקבוק אינו בטבלה עצמה, אלא באופן שבו בנויה השליפה בצד ה-Backend — זה מתברר כבר בניתוח הראשון.

לאחר השיחה אנו שולחים הערכת עבודה ותוכנית הטמעה. הם כוללים:

  • סכימת נתונים ומקורות אשר איתם נעבוד;
  • רשימת תרחישים: מיון, סינון, קיבוץ, עריכה, ייצוא;
  • דרישות לצד השרת — עימוד, אגרגטים, מטמון לשליפות כבדות;
  • שלבי העבודה עם סדר האספקה ונקודות שבהן תראו תוצאה ביניים;
  • הרכב הצוות והתפקידים בפרויקט;
  • סיכונים: נפח הנתונים, מקורות לא יציבים, מגבלות הסטאק הנוכחי;
  • פורמט הקבלה — על אילו נתונים ותרחישים נבדוק את התוצאה.

ההערכה מבוססת על הנפחים האמיתיים שלכם, ולא על הנחות ממוצעות, ולכן לאחריה תוכנית ההטמעה אינה נכתבת מחדש באמצע. אם חלק מהנתונים טרם עברו דיגיטציה או שהמקורות אינם מוכנים, גם זאת נתעד — או שנקצה את ההכנה כשלב נפרד, או שנציע פתרון שעובד על הייצואים הנוכחיים.

תארו את המשימה בצורה הנוחה לכם — קישור לאב-טיפוס, רשימת תרחישים או דוגמה של טבלה שאיתה אתם עובדים כעת. נחזור עם הערכה ותוכנית הטמעה, שלפיה ניתן לקבל החלטה.

הכישורים שלנו:

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1393
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1368
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1139
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1152
  • פיתוח אתר עבור SBH Partners
    פיתוח אתר עבור SBH Partners
    1231
  • פיתוח אתר עבור Red Pear
    פיתוח אתר עבור Red Pear
    641