עבור לתוכן
cutty.dev
All posts

הסטק הטכנולוגי של cutty.dev - בחירות מודעות

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

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

פריימוורק: Astro (הצגת צד שרת)

cutty.dev היא אפליקציית Astro המוצגת בצד השרת. כל בקעה עוברת דרך השרת, שמרכיב את הדף באופן דינמי ומשיב ב-HTML מוכן.

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

בסיס נתונים: SQLite

בסיס נתונים אחד, קובץ אחד. בנוסף, שכבת שאילתות ידידותית ל-TypeScript, המאפשרת כי שינוי במבנה הנתונים יגלה שגיאות בקוד מיד, במקום רק בסביבת הייצור.

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

אירוח: שרת באיחוד האירופי

שרת ייעודי באיחוד האירופי, תעודת TLS אישית, פרוקסי הפוך עם HTTPS אוטומטי, אפליקציה בקונטיינר.

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

תרגומים: מודל בינה מלאכותית מקומי

cutty.dev מדברת ב-25 שפות, והתרגומים מבוצעים על ידי מודל AI מקומי ופתוח המופעל על תשתית משלנו.

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

CSS: גישת utility-first (Tailwind)

מערכת עיצוב אחת, ללא CSS-in-JS וללא קבצי עיצוב נפרדים. הכל ישירות בתבניות.

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

יישום: קונטיינרים

אפליקציה בקונטיינרים (Docker), המותקנת בצורה חוזרת וניידת.

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

מה לימד אותי הדבר הזה

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

צפה בשידור חי. שאלות בנוגע לגישה הטכנית — hello@cutty.dev, אני עונה באותו יום.