ערבית, מימין לשמאל, וחדשות שמתפרצות כל הזמן.
כל אל-ערב מסקר חדשות מקומיות יישוב אחר יישוב, פוליטיקה, ספורט ותרבות לקוראים דוברי ערבית. חדר החדשות עובד על אתר PHP ותיק ועל טבלת חדשות גדולה כל כך ששינוי המבנה שלה יקר.
טבלה גדולה מכדי לשנות
שנים של כתבות בטבלת MySQL אחת. רעיונות חדשים כמו סימונים, כותבים ומקומות בעמוד הבית לא יכלו לחייב שינוי שלה.
עמודים במטמון, חדשות מתפרצות
העמודים מוגשים מקצה ה-CDN בשביל המהירות, ולכן כתבה מתפרצת או שינוי בעמוד הבית צריכים לנקות את העמודים הנכונים בלי לרוקן את כל האתר.
כתבה אחת, הרבה ערוצים
אותה כתבה מגיעה לאתר, לטלפונים של הקוראים כפוש, ול-Facebook, Instagram, TikTok, Telegram ו-WhatsApp, כל אחד בפורמט שלו.
עמוד בית שנערך מקום אחר מקום
העורכים מציבים ידנית את הכתבות הראשיות במקומות ממוספרים, ושינוי צריך להגיע לקוראים מיד.
וידאו בכמויות
העלאות גדולות היו צריכות לעבור מגבלות גודל של בקשות, וכל סרטון היה צריך גרסאות שמתנגנות בכל חיבור.
בחירות כנתונים
סיקור בחירות צריך רשימות, מועמדים והערכות מנדטים של הסוקרים כנתונים מובנים, לא ככתבות.
API אחד בין חדר החדשות לכל מקום שאליו כתבה מגיעה.
מערכת ניהול התוכן מדברת רק עם ה-API. ה-API כותב למסד הקיים, מחזיק מטמון Redis משלו, ומפעיל את מטמון האתר, את הפוש לאפליקציות ואת הרשתות החברתיות.
מערכת ניהול התוכן · React · ערבית · מימין לשמאל
העלאות וידאו · מקטעים של 8 MB · סולם ffmpeg
ניהול הבחירות · רשימות · מועמדים · הערכות מנדטים
ה-API של המערכת · NestJS ו-TypeORM, עם מטמון Redis בגרסאות.
מסד החדשות ב-MySQL · קיים · משותף עם אתר ה-PHP
שרת המקור ו-Bunny CDN · רענון במקור, ואז ניקוי מדויק
Pushwoosh · פוש לאפליקציות iOS ו-Android
רשתות חברתיות · Facebook · Instagram · TikTok · Telegram · WhatsApp
וידאו: גרסאות מ-240p עד 1080p שמוגשות ב-HLS דרך nginx-vod · תגובות, ריאקציות, צפיות והצבעות בסקרים: Supabase
ארבע החלטות שעיצבו את המערכת.
לא לגעת בטבלת החדשות
מערכת ניהול התוכן וה-API החדשים עובדים על המסד הקיים בלי להעביר אותו. סימונים, כותבים ומקומות בעמוד הבית נמצאים בטבלאות צד, כך שטבלת החדשות הגדולה מאוד לא משתנה.
לנקות בדיוק את מה שהכתבה נוגעת בו
הניקוי הוא חלק מהפרסום. ה-API מבקש משרת המקור של האתר להתרענן, מקבל בחזרה את רשימת הכתובות ומנקה כל אחת מהן ב-Bunny CDN: הכתבה, העמוד שלה, הפיד של היישוב ופידי המדור. שינוי מקום בעמוד הבית מרענן את עמוד הבית מעצמו.
לפרסם לכל מקום ממסך אחד
פוש דרך Pushwoosh עם תצוגה מקדימה בטלפון, פוסטים לכל רשת מתבניות ממותגות, ותמונות סטורי ב-1080×1920 שנוצרות מנתוני הכתבה עצמה, הכול ממסך הכתבה.
וידאו בכמה גרסאות
ההעלאות נשלחות במקטעים של 8 MB שקטנים בחצי כשהשרת דוחה את הגודל. סולם ffmpeg מייצר גרסאות מ-1080p עד 240p, nginx-vod מגיש אותן ב-HLS, ומערכת ניהול התוכן בודקת את הסטטוס של כל סרטון כל שתי דקות.
מה עוד העורכים מקבלים, בערבית, מימין לשמאל.
עריכת עמוד הבית
מקומות ממוספרים עם גרירה ושחרור ובוחר כתבות. מקום ריק מקבל אזהרה רכה, וכל שינוי מיקום נרשם.
עורך הכתבות
טיוטות, רשימה חיה, מחיקות שאפשר לשחזר, תגיות, גלריות עם מיון בגרירה, חיתוך תמונה ראשית ביחס 15:10 ויומן של כל שינוי.
נתוני בחירות
שמונה טבלאות לשנות בחירות, רשימות מועמדים, מאגר אנשים משותף, הערכות מנדטים של סוקרים, ציר זמן ושאלות נפוצות, שמזינות את הספירה לאחור ואת התרשימים באתר.
חיפוש במערכת
לפי מספר כתבה או לפי מילים מהכותרת. כל מילה נדרשת ומותאמת לפי תחילית באינדקס טקסט מלא של MySQL, וזה עוזר במילים קצרות בערבית ובאותיות לטיניות.
רשימות מהירות על טבלה גדולה
Redis שומר במטמון את רשימות העורכים ואת נתוני לוח הבקרה. גרסת תוכן עולה בכל עריכה, כך שרשימות ישנות נופלות מיד.
תפקידים והתחברות
עורכים, מנהלי תוכן, אדמינים וסופר-אדמינים עם הרשאה לכל פעולה, וטוקני רענון שמתחלפים ומזהים שימוש חוזר.