Merhaba, ben Emre Çatalkaya. İstanbul Teknik Üniversitesi Makina Mühendisliği bölümünden mezun oldum ve yazılım alanına büyük bir ilgi duyuyorum. Şu anda Yıldız Teknik Üniversitesi'nde Matematik Mühendisliği yüksek lisansı yapıyor ve Anadolu Hayat Emeklilik'te Backend Developer olarak çalışıyorum. Nesne tabanlı programlama ve matematiği koda dökme konularına özel bir hayranlık duyuyorum. Bu blogda, interaktif görsellerle zenginleştirilmiş içerikler sunarak oyun geliştirme, lineer cebir, tasarım kalıpları ve geometri gibi konulara odaklanacağım. Blog yazılarımda eksik gördüğünüz, eklenmesini istediğiniz ya da yalnızca bir soru sormak istediğinizde bana ulaşmaktan çekinmeyin!
Web sitemin backend kısmını .NET kullanarak geliştirdim. Bu verileri MongoDB'de saklayarak hem hızlı hem de güvenilir bir yapı oluşturmayı tercih ettim. Kullanıcıların hangi sayfaları ne kadar ziyaret ettiğini ve okuduğunu takip etmek için frontend, backend'e düzenli olarak istekler gönderiyor. Şimdilik kullanımım bununla sınırlı ama ileride daha karmaşık hesap gerektiren problemlerde de backend'i kullanmayı planlıyorum.
Frontend tarafında Nuxt.js'i TypeScript ile kullandım. Nuxt.js'i tercih etme sebebim, Server-Side Rendering (SSR) desteği sunarak performans ve SEO açısından avantaj sağlamasıydı. TypeScript'i ise statik tipli programlama dillerine olan aşinalığım ve daha güvenli bir kod yapısı sunması nedeniyle seçtim.
Kod bloklarını biçimlendirmek için highlight.js, matematiksel denklemleri görüntülemek için ise MathJax kullandım. Projedeki interaktif görsellerin tamamını kendim kodladım ve SVG'lerden faydalandım. Özellikle anlattığım konuları interaktif görsellere dönüştürmek, bu proje boyunca en keyif aldığım kısım oldu.
Projeyi Docker kullanarak ayağa kaldırdım ve şu imajları kullandım: Backend, MongoDB, Frontend, Nginx ve Certbot. Nginx'i hem reverse proxy olarak kullanmak hem de SSL sertifikalarını tek bir noktadan yönetmek için tercih ettim.
Nginx sayesinde gelen istekler frontend ya da backend konteynerlarına yönlendirilmekte. Gelen istek "/api" ile başlıyorsa Nginx bu isteği backend sunucusuna yönlendiriyor. Böylece hem backend hem de frontend'e aynı adres üzerinden erişim sağlanabiliyor. Certbot imajını ssl sertifikası üretmek için kullandım.
Tüm bu sistemi Raspberry Pi üzerinden çalıştırarak hizmet vermekte. Genel olarak projemi bu şekilde hayata geçirdim. Umarım bu haliyle beğenirsiniz.