İçeriğe geç
Muslu Yüksektepe

GMacros

CNC atölyeleri için yapay zekâ destekli CAM masaüstü uygulaması ve Alphacam eklenti mağazası.

GMacros, CNC tezgâhıyla mobilya ve dekorasyon parçası üreten atölyeler için geliştirdiğim bir yazılım ailesi. Bugün iki ürün olarak sunuluyor. Birincisi GMacros CAM adını verdiğim, Alphacam gerektirmeyen ve yapay zekâ destekli bir CAM uygulaması. İkincisi ise Alphacam kullanan atölyeler için hazırladığım, tek kurulum ve tek lisans anahtarıyla gelen bir eklenti paketi. Satış, lisanslama, fatura ve destek işlerinin tamamını da kendi yazdığım bir mağaza ve müşteri paneli üzerinden yürütürüm.

Amaç

CNC atölyelerinde kapak, kapı, dolap ya da dekoratif panel gibi parçaları çizmek, takım yollarını kurmak ve makineye uygun NC kodunu üretmek çoğu zaman uzun ve tekrarlı bir iştir. GMacros'u bu tekrarı azaltmak için geliştirdim. Kullanıcı yalnızca ölçüleri ve birkaç tercihi giriyor, yazılım parçayı çiziyor, işlemleri kuruyor ve makinenin okuyabileceği kodu hazırlıyor.

İşe Alphacam için makrolar yazarak başladım. Zamanla bu makrolar ürünlere dönüştü ve onları satmak için bir lisans altyapısı gerekti. Daha sonra Alphacam lisansı olmayan atölyelerin de aynı kolaylıktan yararlanabilmesi için ölçüden NC koduna kadar her adımı tek başına yapabilen GMacros CAM'i yazdım.

Nasıl çalışır

GMacros CAM'de kullanıcı kapak, kapı, dolap, üç boyutlu dalga panel ya da dekor parçası gibi bir iş seçiyor ve ölçülerini giriyor. Uygulama parçayı çiziyor, katmanlara göre işlemleri ve takımları tek tıkla kuruyor, takım yolunu çizim üzerinde önizlemeye sunuyor. İstenirse talaş kaldırmanın üç boyutlu simülasyonu izlenebiliyor ve parçalar levhaya yerleştirilebiliyor. Son adımda seçilen makineye uygun NC çıktısı alınıyor. Kullanıcı kendi Alphacam takım ve post dosyalarını uygulamaya aktarabiliyor, ancak bu dosyalar hiçbir zaman uygulamanın içine gömülmüyor ya da dağıtılmıyor.

Alphacam paketinde ise araçlar doğrudan Alphacam'in içine ekleniyor. Kullanıcı paketi bir kez kuruyor ve lisans anahtarını bir kez giriyor. Anahtar, süreli lisans boyunca bir daha sorulmuyor.

Müşteri tarafındaki akış da sade tutuldu. Müşteri tanıtım sitesinde ürünü inceliyor, panelden plan seçip satın alıyor ve lisans anahtarını e-postayla alıyor. Faturalarını ve destek taleplerini aynı panelden takip ediyor. Ben de yönetim panelinden satışları, lisansları, planları ve talepleri yönetirim.

Öne çıkan özellikler

  • GMacros CAM Windows, Linux ve Android'de çalışıyor, ayrıca tarayıcıdan da kullanılabiliyor.
  • Yapay zekâ tarafında, yazılan bir tariften kabartma model hazırlayan NirvanaAI aracı, kesim değerleri ve CNC soruları için bir asistan ve bir kesim danışmanı bulunuyor.
  • NirvanaAI, Türkçe yazılmış bir tariften üç boyutlu rölyef model üretiyor ve bu modeli doğrudan çizime ekliyor; kullanıcının ayrı bir modelleme programı kullanması gerekmiyor.
  • 3D Dalga Panel aracında elli hazır desenden biri seçilip tek seferde yirmi kapağa kadar çizilebiliyor ve desen yan yana duran kapaklarda kesintisiz devam ediyor.
  • GMacros Dekor; baffle lamel, kerf bükme, seperatör ve fotoğraftan oyma gibi işleri kapsıyor.
  • Tanıtım sitesinde her aracın ne yaptığını, hangi değerleri sorduğunu ve nasıl kullanıldığını anlatan ayrı bir rehber sayfası ve kullanım videosu var.
  • Mağazada müşteri plan ve adet seçiyor; her adet bir bilgisayar için ayrı bir lisans anahtarı anlamına geliyor.
  • Bayiler kendi panellerinden toplu sipariş verip anahtarları müşterilerine dağıtabiliyor.
  • Müşteriye giden e-postalar, müşterinin panelde seçtiği dilde (Türkçe ya da İngilizce) gönderiliyor.

Güvenlik

Lisans doğrulamasını tamamen sunucu tarafında tutmayı baştan bir kural olarak belirledim. İmza anahtarı yalnızca sunucuda duruyor ve eklenti bir anahtarı kendi başına doğrulayamıyor. Bir lisans anahtarı aynı anda yalnızca bir bilgisayarda etkin olabiliyor. Sunucunun verdiği yanıtlar RSA ile imzalanıyor ve her istekte istemcinin ürettiği tek kullanımlık bir değer (nonce) yer alıyor. Böylece sahte bir lisans sunucusu kurarak ya da hosts dosyasını değiştirerek lisansı atlatmak mümkün olmuyor.

Lisanslar iki türde olabiliyor. Süreli lisansın bir bitiş tarihi var. Kullanım adetli lisansta ise her çalıştırmada bir hak düşüyor ve sayaç yalnızca sunucuda tutuluyor. Yönetim panelinden belirli bir müşteriye, bilgisayara ya da lisansa uyarı gönderebiliyor veya kullanımı uzaktan durdurabilirim. Deneme lisanslarının kötüye kullanılmasını önlemek için e-posta adresinin kanonik biçimi, telefon numarası, bilgisayar kimliği ve VPN ya da veri merkezi IP'leri birlikte denetleniyor.

Ödeme tarafında kart bilgisi sunucuya hiç uğramıyor. Kartla ödemelerde lisans, ancak ödeme sağlayıcısından gelen doğrulanmış sonuçla veriliyor. Ödemenin onaylanması, abonelik kaydı ve lisans anahtarlarının üretimi tek bir veritabanı işlemi (transaction) içinde yapılıyor; bu sayede ödemesi alınıp anahtarı verilmeyen bir sipariş oluşamıyor. Satın almadan önce müşteriden sözleşme onayı alınıyor ve bu onay denetim kaydına yazılıyor.

Teknik altyapı

Arka uç Go ile yazılmış bir monorepo. İçinde API, arka plan işçisi, veritabanı göç (migration) aracı ve yönetim araçları ayrı komutlar olarak yer alıyor. Veritabanı olarak PostgreSQL kullanırım. Müşteri verilerini iki katmanda ayırırım: veritabanında satır düzeyi güvenlik (RLS, yani her sorgunun yalnızca o müşteriye ait satırları görebilmesi) ve uygulama katmanında ek bir denetim. Periyodik işler için Redis yerine doğrudan PostgreSQL üzerinde çalışan River kuyruğunu kullanırım. Dosyalar yerel diskte tutuluyor ve indirmeleri Nginx'in X-Accel-Redirect özelliğiyle sunarım.

Web tarafında tanıtım sitesi, müşteri paneli ve yönetim paneli Next.js ile yazıldı. Tanıtım sitesi statik olarak derleniyor ve ürün bilgilerini derleme sırasında API'den okuyor. Site iki dilli; arama motorları için yapılandırılmış veri ve video bilgisi içeren bir site haritası üretiliyor.

GMacros CAM, ayrı bir Go modülü olarak Wails ve React ile yazıldı. Geometri, DXF, takım yolu, post işlemci, levha yerleşimi ve simülasyon gibi parçalar bu modülün içinde. Tarayıcı sürümü de masaüstüyle aynı Go kodunu kullanıyor. Her kullanıcı için ayrı bir alt süreç başlatılıyor ve bu süreç Landlock ile yalnızca o kullanıcının klasörüne erişebilecek şekilde sınırlanıyor. Linux sürümü .deb paketi, Android sürümü ise bir WebView kabuğu olarak dağıtılıyor.

Alphacam eklentileri VBA ile yazılıyor. Lisans kodunun tek bir kaynağı var ve bu kod Python betikleriyle bütün paketlere dağıtılıyor. Kurulum dosyalarını Go ile yazdığım bir kurucu üretiyor. Sunucularda Docker kullanmam; her servis bir systemd birimi olarak çalışıyor ve önünde HTTP/3 destekli Nginx duruyor.

Kullanım alanları

  • Mutfak, gardırop ve banyo dolabı kapağı üreten mobilya atölyelerinde ölçüden NC koduna kadar olan sürecin kısaltılması.
  • Duvar paneli, akustik panel ve dekoratif yüzey üretiminde hazır desenlerle hızlı tasarım yapılması.
  • Bir tariften kabartma model üretilip doğrudan CNC'de işlenmesi.
  • Alphacam kullanan atölyelerde tekrarlı çizim ve işlem kurma adımlarının otomatikleştirilmesi.
  • Bayiler aracılığıyla lisansların toplu olarak satılması ve dağıtılması.

Durum

GMacros CAM şu anda beta aşamasında ve geliştirmesi sürüyor. Bazı ekranlar ve özellikler değişebiliyor. Alphacam paketi ve mağaza yayında, müşteriler panel üzerinden satın alma ve lisans işlemlerini yapabiliyor.

Kategori
Ürünler ve SaaS
Yıl
2024

Teknolojiler

  • Go
  • PostgreSQL
  • Wails
  • React
  • Code Signing
  • Microsoft Store

Bağlantılar

Tüm projelere dön