Saat mulai membuat Qata, ada dua hal yang muncul di pikiran saya: platform ini harus ringan dan aman. Dua hal tersebut menjadi perhatian saya karena sebagai seorang penulis blog, dua hal tersebut jadi hal yang mahal untuk didapatkan. Ada, tapi biasanya harus bayar lebih.
Atas dasar itu, berikut saya sampaikan transparasi bagaimana saya membangun Qata. Tujuannya karena supaya: kamu sebagai pengguna tau betul apa yang akan kamu gunakan juga sebagai upaya transparansi, agar kamu bisa mengukur sejauh mana Qata bisa diandalkan.
Dengan penuh kesadaran, saya yang pemahamannya masih sangat rendah, akan selalu membuka diri untuk perbaikan apalagi bantuan dan dukungan.
Kenapa Qata Ringan
Tidak ada JavaScript framework Halaman dirender langsung di server (SSR) menggunakan Jinja2. Tidak ada React, Vue, atau sejenisnya yang harus diunduh dan dijalankan browser.
CSS murni tanpa library
Tidak ada Bootstrap, Tailwind, atau library CSS eksternal. Satu file style.css kurang dari 200 baris, dimuat sekali dan di-cache browser.
Tidak ada font eksternal
Menggunakan Georgia yang sudah tersedia di semua sistem operasi. Tidak ada request ke Google Fonts atau CDN lain.
Markdown di-render di server, bukan browser Konversi Markdown ke HTML dilakukan saat artikel disimpan, hasilnya langsung disimpan di database. Saat pembaca membuka halaman, server tinggal kirim HTML jadi — tidak ada komputasi tambahan.
Database SQLite Tidak ada server database terpisah yang berjalan. SQLite adalah file biasa di disk, query-nya sangat cepat untuk skala kecil-menengah.
Nginx melayani static files langsung File CSS tidak melewati Python/Flask sama sekali — Nginx mengirimnya langsung ke browser, jauh lebih cepat.
Kenapa Qata Aman
Tidak ada pelacak eksternal Tidak ada Google Analytics, Facebook Pixel, atau skrip pihak ketiga apapun. Tidak ada data yang dikirim ke luar server.
Password di-hash dengan bcrypt Password tidak pernah disimpan dalam bentuk asli — selalu dalam bentuk hash yang tidak bisa dibalik.
Sistem undangan Tidak ada registrasi terbuka. Setiap akun baru harus punya kode undangan sekali pakai, mencegah pembuatan akun massal.
Statistik kunjungan tanpa identitas IP pengunjung di-hash dengan SHA-256 sebelum disimpan — tidak ada IP asli yang tersimpan di database.
Gunicorn + Nginx di production Flask tidak langsung terekspos ke internet. Nginx sebagai buffer di depan menangani koneksi berbahaya sebelum sampai ke aplikasi.
WAL mode di SQLite Mencegah korupsi data saat ada operasi tulis bersamaan.
Singkatnya: Qata ringan karena tidak membawa beban yang tidak perlu, dan aman karena tidak menyimpan atau membagikan data yang tidak perlu.