رفتن به محتوا
cutty.dev
All posts

پشته تکنولوژی cutty.dev — انتخاب‌های آگاهانه

چه چیزی زیر لایه‌های cutty.dev قرار دارد و چرا؟ بدون تبلیغات اغراق‌آمیز — فلسفه: یک استک (stack) خسته‌کننده و پایدار، میزبانی در اتحادیه اروپا و حریم خصوصی که در معماری سیستم گنجانده شده است؛ سیستمی که یک نفر قادر به نگهداری آن باشد.

بیشتر مقالات "مجموعه تکنولوژی من" لیستی مغرورانه از جدیدترین‌ها هستند. این مقاله درباره چیز دیگری است — درباره فلسفه‌ای که پشت انتخاب‌های cutty.dev قرار دارد: خسته‌کننده و پایدار به جای مد روز، اروپایی به جای آمریکایی، ذاتاً خصوصی، و آنقدر ساده که یک نفر بتواند آن را مدیریت کند.

فریم‌ورک: Astro (رندرینگ سمت سرور)

cutty.dev یک اپلیکیشن Astro است که در سمت سرور رندر می‌شود. هر درخواست از طریق سرور عبور می‌کند، صفحه را به صورت پویا (dynamic) ایجاد می‌کند و با یک HTML آماده پاسخ می‌دهد.

چرا: من به دنبال رندرینگ سمت سرور بدون پیچیدگی‌های سنگین، پشتیبانی خوب از چندین زبان که در خود فریم‌ورک تعبیه شده است، و سرعت بدون سربار بودم. Astro همه این‌ها را ارائه می‌دهد و کدها خوانا باقی می‌مانند — که در پروژه‌ای که به تنهایی مدیریت می‌شود، ارزشی بیشتر از هر افزونه‌ی مد روز دارد.

پایگاه داده: SQLite

یک پایگاه داده، یک فایل. به همراه یک لایه پرس‌وجو (query) سازگار با TypeScript، که باعث می‌شود تغییر در ساختار داده‌ها بلافاصله خطاها را در کد نشان دهد، به جای اینکه در محیط تولید (production) رخ دهد.

چرا: cutty.dev در درجه اول "read-heavy" است — هر کلیک روی یک لینک، یک عملیات خواندن به همراه افزایش شمارنده است. SQLite این کار را به‌خوبی انجام می‌دهد، حتی برای ترافیک روزانه بسیار بالا. پشتیبان‌گیری صرفاً کپی کردن یک فایل است — بدون تشریفات تکثیر (replication) و بدون اسکریپت‌های پیچیده. سادگی در اینجا به معنای صرفه‌جویی در کیفیت نیست؛ بلکه یک تصمیم آگاهانه است که قطعات متحرک کمتر، یعنی چیزهای کمتری که ممکن است خراب شوند.

هاستینگ: سرور در اتحادیه اروپا

سرور اختصاصی در اتحادیه اروپا، گواهی TLS اختصاصی، ریورس پروکسی با HTTPS خودکار، اپلیکیشن در کانتینرها.

چرا: این زیربنای نحوه برخورد cutty.dev با داده‌ها است. کنترل کامل بر محل ذخیره‌سازی آن‌ها (که برای مشتریان در اتحادیه اروپا و GDPR حیاتی است)، عدم وابستگی به یک ارائه‌دهنده واحد، عدم تکثیر خودکار به ایالات متحده (که پلتفرم‌های بزرگ ابری ارائه می‌دهند) و هزینه قابل پیش‌بینی به جای صورت‌حساب وابسته به ترافیک. پلتفرم‌های غربی راحت‌تر شروع کار را سریع‌تر می‌کردند — اما به قیمت این که داده‌های کاربران شما فیزیکی کجا فرود بیایند.

ترجمه‌ها: مدل محلی هوش مصنوعی

cutty.dev به ۲۵ زبان صحبت می‌کند، و ترجمه‌ها توسط یک مدل هوش مصنوعی محلی و متن‌باز که روی زیرساخت خودمان اجرا می‌شود، انجام می‌گیرد.

چرا: هیچ متنی از رابط کاربری به بیرون نشت نمی‌کند — ما آن را به هیچ ارائه‌دهنده خارجی هوش مصنوعی ارسال نمی‌کنیم. علاوه بر این، هزینه هر ترجمه صفر است و کنترل کامل بر کیفیت وجود دارد: می‌توانیم هر زمان که بخواهیم آن‌ها را به‌روزرسانی کنیم. ترجمه ماشینی همیشه نیاز به بازبینی انسانی دارد — و هر زبانی تحت چنین بازبینی‌ای قرار گرفته است — اما انجام دادن آن در محیط خودمان به این معناست که حریم خصوصی یک گزینه در لیست قیمت‌ها نیست، بلکه ویژگی معماری سیستم است.

CSS: اولویت با ابزارها (Tailwind)

یک سیستم استایل واحد، بدون CSS-in-JS، بدون فایل‌های استایل جداگانه. همه چیز مستقیماً در قالب‌ها.

دلیل: سرعت تکرار (iteration). من زمانی را برای ابداع نام کلاس‌ها هدر نمی‌دهم، و در هر صورت استایل‌های استفاده نشده به صفحه نهایی منتقل نمی‌شوند. طراحی یکپارچه که توسط خود سیستم تحمیل شده است. برای یک نفر، هر دقیقه‌ای که صرف مسائل جانبی نکنم، ارزشمند است.

پیاده‌سازی: کانتینرها

اپلیکیشن در کانتینرها (Docker)، که به روشی تکرارپذیر و قابل حمل پیاده‌سازی می‌شود.

چرا: همان محیط در سیستم محلی و محیط تولید، نبودِ عبارت «در سیستم من کار می‌کرد»، و امکان انتقال کل مجموعه به یک سرور دیگر در نیم ساعت، در صورت نیاز. قابلیت جابه‌جایی (Portability) شکلی از استقلال است.

این چه چیزی به من آموخت

  • یک استک خسته‌کننده برنده است. Astro، SQLite، Tailwind، کانتینرها — همه چیز بالغ، با مستندات خوب و پایدار. هیچ‌چیز در غیرمنتظره‌ترین لحظه از کار نمی‌افتد.
  • میزبانی در اتحادیه اروپا برای تولید آماده است. این افسانه که «باید به ابر بزرگ آمریکایی بروید تا کار جدی باشد» دقیقاً همان است — یک افسانه.
  • هوش مصنوعی محلی واقعی است. نیازی نیست داده‌های خود را به یک API خارجی بسپارید تا ترجمه‌های خوبی داشته باشید.
  • یک نفر می‌تواند چیزی منتشر کند که شبیه محصول یک تیم به نظر می‌رسد. زمان منبعی گران‌تر از پول است، بنابراین هر انتخاب در اینجا دقیقاً از زمان محافظت کرده است.

مشاهده به صورت زنده. سوالات درباره رویکرد فنی — hello@cutty.dev، من در همان روز پاسخ می‌دهم.