פיתוח CMS: פתרון צווארי בקבוק אמיתיים בעריכה, לא התקנת תוספים
למו"ל חדשות היה אתר WordPress עם 5 עורכים. כל מאמר דרש 15 דקות של עיצוב ידני כי העורך החזותי (WYSIWYG) הרס טקסט מודבק. אחרי 6 חודשים, במסד הנתונים היו 12 גדלי גופנים שונים ו-7 צבעים מותאמים אישית. העיצוב מחדש היה עולה 30 אלף דולר רק כדי לנקות את הבלגן — ואף אחד לא היה מוכן להודות בכך.
אנחנו מפתחים מערכות ניהול תוכן (CMS) שמונעות את זה מהיום הראשון. במקום גיהנום של <textarea> חופשי, אנחנו מתכננים מודלי תוכן מובנים, עורכים חזותיים מותאמים אישית באמצעות ProseMirror, וספריות מדיה שמתפרקות ל-S3+CDN תוך שני ספרינטים. זו פיתוח CMS ללא קיצורי דרך.
מתי headless CMS מוצדק ומתי לא?
Headless CMS (Strapi, Contentful, Sanity) מנתק את ניהול התוכן מעיבוד החזית — ה-API מגיש תוכן לכל לקוח: אתר, אפליקציה ניידת, מסך חכם. מקבלים אספקה רב-ערוצית וחזית React/Vue שלעולם לא נוגעת בלוח הניהול. אבל אם העורכים צריכים תצוגה מקדימה של "שמירה וראייה" ואין לכם צוות חזית נפרד, headless עולה יותר: צריך לבנות שכבת תצוגה מקדימה או להשתמש בשירות כמו תצוגות מקדימות של Vercel.
Sanity מתאים אישית את הסטודיו עד לרמת השדה — כל שדה הוא רכיב React שאפשר להחליף. Portable Text (פורמט התוכן העשיר שלו) מועבר לכל רנדרר באמצעות serializers מותאמים. לתהליכי עריכה מורכבים עם מחברים מרובים, Sanity היא הבחירה הטובה ביותר. Contentful מציעה תשתית ענן יציבה עם שוק תוספים, אבל החשבונות החודשיים גדלים עם נפח התוכן — תוכניות ארגוניות טיפוסיות עולות 500–2,000 דולר לחודש. Strapi היא self-hosted, קוד פתוח, עם API ב-TypeScript ושדות מותאמים אישית דרך תוספים, אבל אתם מנהלים את האחסון והגיבויים.
CMS מסורתי (WordPress, Craft CMS) עובד כשהעורכים צריכים ממשק ניהול מוכר והחזית מעובדת בצד השרת. Craft CMS מספקת שדות Matrix, מבני ערכים גמישים ולוקליזציה מובנית — זה כלי מקצועי לצוותי תוכן שצריכים הרשאות מפורטות וניהול גרסאות.
איך בונים עורך WYSIWYG שלא שובר את העיצוב?
העורך הוא הרכיב המורכב ביותר — לא . נקודת האיזון היא Tiptap, הבנוי על ProseMirror. כל אלמנט (כותרות, רשימות, טבלאות, בלוקי קוד, תמונות) הוא תוסף. עריכה שיתופית דרך Yjs עובדת ישר מהקופסה. Lexical (Meta) יותר ביצועית (>60fps בהקלדה במובייל) אבל קשה יותר להרחיב. TinyMCE הוא תקן ארגוני עם חבילה של 300KB, אבל הוא מייצר HTML מלוכלך בהדבקה — עיצובים מובנים, <span> מקוננים, pasteRule בכל מקום.
הסיבה השורשית: הדבקה מ-Word. <input type="file">, מאפיינים של https://img.example.com/resize:800:600/format:webp/plain/s3://bucket/photo.jpg, תגי <p style="font-size:24px; color:red">Важно!</p> ריקים — כולם דולפים לעמוד אלא אם מנקים. אנחנו מגדירים את callout של ProseMirror עם DOMPurify כדי להסיר הכל מלבד תגים מותרים. תוצאה: HTML נקי וסמנטי ששורד עיצוב מחדש ללא ניקוי ידני. עורכים חוסכים 2–4 שעות בשבוע לאדם.
ספריית מדיה: מהעלאה ל-CDN עם טרנספורמציה
שמירת קבצים על דיסק השרת היא הטעות הקלאסית. הדיסק מתמלא, הסקיילינג נכשל, ו-CDN הופך לבלתי אפשרי. הצינור הנכון: העלאה לאחסון תואם S3 (AWS S3, Cloudflare R2, MinIO) → CDN (CloudFront, Cloudflare) → טרנספורמציות בזמן אמת.
Imgproxy או Thumbor מייצרים כל גודל ופורמט דינמית: variant: warning. המקור קיים פעם אחת, נגזרות אף פעם לא תופסות דיסק. Cloudflare Images עולה 5 דולר לכל 100 אלף תמונות, כולל טרנספורמציות. העלאת וידאו משתמשת ב-Cloudflare Stream או Mux — קידוד ל-HLS, סטרימינג אדפטיבי לכל רוחב פס. בלי זה, וידאו 1080p (500MB) נטען כולו לפני ההשמעה, וגורם לעיכוב של 5–8 שניות ברשת 3G.
מה כלול בפיתוח ספריית מדיה
| רכיב | טכנולוגיה | לוח זמנים (שבועות) |
|---|---|---|
| העלאה ואחסון ב-S3 | AWS SDK / MinIO | 1–2 |
| טרנספורמציות תמונה | Imgproxy / Thumbor | 1–2 |
| סטרימינג וידאו | Cloudflare Stream / Mux | 1–2 |
| ממשק העלאה ומיון | React + @dnd-kit/sortable | 1–3 |
| העברת קבצים קיימים | סקריפט מותאם | 0.5–1 |
למה תוכן מובנה עדיף על HTML חופשי
WYSIWYG חופשי מוביל לכאוס תוך שנה: 7 גדלי גופנים, 12 צבעים, מרווחים אקראיים. עיצוב מחדש דורש ניקוי ידני של אלפי פוסטים. תוכן מובנה מאחסן "מה" במקום "איך": לא <p style="font-size:24px; color:red">Important!</p>, אלא בלוק callout עם variant: warning. ה-CMS מאחסן את המבנה; החזית מחליטה על העיבוד. Sanity Portable Text, Contentful Rich Text ו-Strapi Dynamic Zones כולם עוקבים אחרי התבנית הזו — וזה מפחית עבודה חוזרת ב-70% במהלך עיצובים מחדש.
חיסכון אופייני בזמן עריכה עם תוכן מובנה
- אתר חדשות עם 50 מאמרים בשבוע: עורכים חוסכים 10 שעות בשבוע בעיצוב.
- פורטל ארגוני עם 1000 עמודים קיימים: העברה מתוכן חופשי למובנה אורכת 3–5 ימים, ומקצרת את טעינת העמוד ב-40% (HTML נקי יותר).
תהליך העבודה
- ניתוח תהליכי עריכה — מי עורך, באיזו תדירות, איזה תוכן (מאמרים, דפי נחיתה, נתוני מוצר), האם נדרשת לוקליזציה.
- בחירת CMS — על סמך תרחישים, לא טרנדים. אנחנו משווים headless מול מסורתי עם מטריצת ניקוד משוקללת.
- עיצוב מודל תוכן — סוגי רשומות, שדות, קשרים, כללי ולידציה.
- יישום — אינטגרציית חזית, התאמת עורך, ספריית מדיה, תצוגות מקדימות.
- בדיקות — תרחישים אמיתיים: הדבקה מ-Word, העלאת 100+ קבצים בו-זמנית, בדיקת עומס ל-API (יעד של 200 בקשות/שנייה).
- השקה ותיעוד — מדריך עורך (טקסט + וידאו), תיאור API, פרטי גישה, חודש תמיכה.
לוחות זמנים ותקציב
| סוג עבודה | לוח זמנים | תקציב |
|---|---|---|
| אינטגרציית headless CMS (Strapi/Sanity) לפרויקט Next.js קיים | 2–5 שבועות | נדון בנפרד |
| עורך WYSIWYG מותאם אישית עם Tiptap ובלוקים ספציפיים | 2–4 שבועות | נדון בנפרד |
| ספריית מדיה עם S3 + טרנספורמציות | 1–3 שבועות | נדון בנפרד |
| מערכת CMS מלאה מאפס | 4–10 שבועות | נדון בנפרד |
התקציב מחושב בנפרד לאחר בדיקה. דוגמאות לקוחות: אתר מדיה בינוני חסך 40 אלף דולר בשנה על ידי ביטול עיצוב ידני; פלטפורמת מסחר אלקטרוני קיצרה את זמן הפרסום ב-60% עם הגדרת Sanity headless. צרו קשר להערכת פרויקט.
מה מקבלים לאחר המסירה
- CMS עובד עם הרשאות גישה מוגדרות (מנהל, עורך, מבקר)
- תיעוד מלא של מודל התוכן והתייחסות API
- תיעוד הכשרת עורכים (טקסט + וידאו)
- קוד מכוסה בבדיקות (PHPUnit ל-Laravel, Jest ל-JS)
- חודש תמיכה לאחר ההשקה עם SLA
הניסיון וההבטחות שלנו
למעלה מ-40 פרויקטי CMS שהושלמו — מאתרי עריכה קטנים ועד פורטלי מדיה ארגוניים עם 200 אלף מבקרים ייחודיים ביום. אנחנו משתמשים בכלים מורשים (Sentry לניטור שגיאות, SonarCloud לאיכות קוד) ומבטיחים אפס באגים קריטיים בהשקה. כל הקוד נמצא בניהול גרסאות וניתן לפריסה דרך CI/CD.
לצרכים הספציפיים שלכם, צרו קשר כדי לדון בדרישות. נספק הצעה טכנית תוך 2 ימי עסקים.







