Lanjut ke konten utama
cutty.dev
All posts

Stack teknologi cutty.dev — pilihan yang sadar

Apa yang ada di balik cutty.dev dan mengapa. Tanpa evangelisme — filosofi: stack yang membosankan dan stabil, hosting di UE, dan privasi yang tertanam dalam arsitektur yang dapat dikelola oleh satu orang saja.

Sebagian besar postingan "mój tech stack" adalah daftar inovasi yang membanggakan. Lihatlah, saya punya ini, saya punya itu, dan di sini ada lagi pustaka terbaru dari minggu lalu. Yang satu ini akan berbeda.

Karena kenyataannya adalah saat Anda menjalankan proyek sendirian, Anda tidak mencari yang paling tren. Anda mencari sesuatu yang tidak akan membuat Anda terbangun pada jam tiga pagi. Dan itulah inti dari seluruh stack teknologi cutty.dev ini: membosankan alih-alih modis, Eropa alih-alih Amerika, privat sejak dari fondasinya, dan cukup sederhana sehingga dapat dikelola oleh satu pasang tangan.

Saya akan menjelaskannya satu per satu, seolah-olah saya sedang menjelaskannya kepadamu sambil minum kopi.

Astro dirender di sisi server (dan mengapa tidak sesuatu yang "lebih keren")

cutty.dev adalah Astro dengan rendering sisi server. Setiap permintaan melewati server, menyusun halaman, dan mengirimkan HTML yang sudah jadi. Membosankan? Justru itulah intinya.

Saya menginginkan tiga hal: rendering di sisi server tanpa mesin yang berat, dukungan multibahasa yang mumpuni secara instan, dan kecepatan tanpa overhead. Astro memberikan semua itu, dan kodenya tetap mudah dibaca. Saat saya kembali ke dalamnya setelah jeda dua bulan, saya tahu apa yang sedang terjadi di sana. Untuk proyek solo, ini lebih berharga daripada plugin populer mana pun yang tidak lagi didukung setelah satu tahun.

Satu file alih-alih database dengan kembang api

SQLite. Satu database, satu file di disk. Ditambah lagi lapisan query yang berkomunikasi dengan TypeScript, jadi saat saya mengubah struktur data, error muncul di editor, bukan di produksi pada tengah malam.

Mengapa ini akurat? cutty bersifat "read-heavy". Seseorang mengklik tautan yang dipersingkat, kita melakukan pembacaan dan menaikkan penghitung. Itu saja. SQLite dapat menangani lalu lintas seperti itu dengan tenang, hingga angka harian yang sangat besar. Dan cadangannya? Anda cukup menyalin file. Selesai. Tanpa seremoni replikasi, tanpa skrip yang tidak ada yang ingat cara kerjanya.

Di sini perhatikan satu hal, karena ini adalah jebakan umum: orang mendengar "SQLite" dan berpikir "mainan untuk proyek kelulusan". Tidak benar. Semakin sedikit bagian yang bergerak berarti semakin sedikit hal yang bisa rusak. Ini bukan penghematan pada kualitas, melainkan keputusan yang sadar.

Server berada di Eropa dan itu bukan kebetulan

Server khusus di UE. TLS sendiri, reverse proxy dengan HTTPS otomatis, aplikasi dalam kontainer.

Ini adalah fondasi tentang bagaimana cutty menangani data. Saya tahu persis di mana data tersebut berada secara fisik (bagi klien UE dan GDPR ini bukan sekadar informasi menarik, melainkan sebuah syarat), saya tidak terikat pada satu vendor tunggal, tidak ada data yang bocor secara otomatis ke luar negeri, dan biayanya dapat diprediksi alih-alih melonjak mengikuti fluktuasi penggunaan.

Ya, platform yang nyaman dari Barat akan memberikan awal yang lebih cepat. Klik, deploy, jalan. Hanya saja Anda membayar harganya dengan tempat di mana data pengguna Anda mendarat. Bagi saya, itu adalah kesepakatan yang buruk.

Terjemahan membuat model sendiri, di tempat sendiri

cutty berbicara dalam 25 bahasa. Ini diterjemahkan oleh model AI lokal dan terbuka, yang berjalan di infrastruktur saya. Saya tidak mengirimkan teks dari antarmuka ke penyedia eksternal mana pun.

Manfaatnya bersifat praktis. Satu kali penerjemahan biayanya nol. Saya memiliki kendali penuh atas kualitas dan dapat memperbaruinya kapan pun saya mau. Dan mesin selalu membutuhkan mata manusia, jadi setiap dari 25 bahasa ini telah melalui peninjauan. Namun fakta bahwa saya melakukannya sendiri, berarti privasi bukanlah sebuah item dalam daftar harga. Itu adalah sifat dari bagaimana keseluruhan sistem ini dibangun.

Tailwind, kontainer dan beberapa keputusan kecil

Style? Utility-first, yaitu Tailwind. Tanpa CSS-in-JS, tanpa file gaya terpisah, semuanya langsung di dalam template. Saya tidak membuang waktu untuk memikirkan nama class, gaya yang tidak digunakan pun tidak akan masuk ke halaman akhir, dan desain tetap konsisten karena sistem itu sendiri yang mewajibkannya. Bagi satu orang, setiap menit sangat berharga agar tidak terbuang sia-sia untuk hal-hal sepele.

Implementasi ini adalah Docker. Lingkungan yang sama secara lokal maupun di produksi, tidak ada lagi kata "di tempat saya berhasil". Dan jika suatu saat diperlukan, saya memindahkan semuanya ke server lain dalam waktu sekitar setengah jam. Portabilitas adalah bentuk kemandirian yang tersembunyi.

Apa yang saya pelajari dari sini

Stack yang membosankan adalah pemenangnya. Astro, SQLite, Tailwind, kontainer. Semuanya matang, sudah teruji, dan terdokumentasi. Tidak ada yang pecah di saat Anda paling tidak membutuhkannya.

Hosting di UE sudah siap untuk produksi, sungguh. Mitos bahwa "Anda harus menggunakan cloud besar Amerika agar terlihat serius", adalah sebuah mitos. AI lokal juga nyata, Anda tidak perlu menyerahkan data ke API eksternal untuk mendapatkan terjemahan yang layak. Dan hal terakhir: satu orang dapat merilis sesuatu yang terlihat seperti hasil kerja seluruh tim. Anda hanya perlu ingat bahwa waktu lebih mahal daripada uang, dan dalam hal ini, pilihlah setiap komponen dengan cermat.

Saat Anda membangun sesuatu milik Anda sendiri, ajukan satu pertanyaan pada diri sendiri untuk setiap teknologi: apakah dalam setahun saya akan bisa mengelolanya sendiri? Jika tidak, maka sepertinya Anda sudah punya jawabannya.

Semuanya berfungsi di sini: cutty.dev. Dan jika Anda ingin berbincang tentang salah satu dari keputusan ini, silakan tulis ke [email protected], saya akan membalas pada hari yang sama.