2 puan yazan GN⁺ 2025-04-11 | 1 yorum | WhatsApp'ta paylaş

Giriş

  • Veri ve teknolojiyi doğrudan sahiplenmeyi amaçlayan serinin ilk bölümünde, kendi kendine barındırılan bir takvim çözümünün nasıl entegre edileceği anlatılıyor.
  • Sık seyahat nedeniyle program yönetimi karmaşık hale geliyor ve mevcut takvim sistemlerindeki rahatsızlıkları çözmek için özel bir çözüm kuruluyor.

Gereksinimler

  • Program, iş takviminde engelleyici öğe olarak görünmeli.
  • Eşi takvime abone olabilmeli.
  • Etkinlikler yalnızca bir kez girilebilmeli.
  • Birden fazla cihazdan düzenlenebilmeli.
  • Veriler tamamen kontrol edilebilmeli.
  • Sorun, iş takviminin eşle paylaşılması yoluyla çözülememeli.

Önceki çözüm

  • Mevcut takvim paylaşım çözümleri ortak bir platform gerektiriyor veya sınırlı özellikler sunuyor.
  • Başlangıçta YAML dosyalarıyla takvim etkinlikleri yazıp bunları ICS dosyalarına dönüştürerek paylaşma yöntemi kullanılmış, ancak bakım zorlaşmış.

Mimari

  • Birden fazla cihazda takvimi yönetebilmek için CalDAV sunucusu kullanan bir çözüm kuruluyor.
  • Çeşitli veri kaynaklarına bağlanarak etkinlikleri otomatik güncelliyor ve bunları ICS dosyası olarak sunuyor.

Baïkal kurulumu

  • Baïkal kullanılarak bir CalDAV sunucusu kuruluyor ve Docker Compose ile kolayca dağıtılıyor.
  • nginx reverse proxy kullanılarak web üzerinden erişilebilir hale getiriliyor.

Etkinlik sınıflandırma şeması kurulumu

  • Etkinlikleri sınıflandırmak için iCalendar'ın CATEGORIES özelliği kullanılıyor ve Python enum ile veri modeli yazılıyor.
  • Bu sayede etkinlikler kolayca aranabiliyor veya renkle ayırt edilebiliyor.

Takvimi derleme ve paylaşma

  • IMAP, API, ICS dosyaları vb. üzerinden etkinlikler otomatik olarak alınıp Baïkal'a ekleniyor ve ardından ICS dosyasına dönüştürülerek web'de paylaşılıyor.
  • Güncellemeler için her 15 dakikada bir çalışan cron işi ayarlanıyor.

İş takvimiyle paylaşım

  • Google Script Engine kullanılarak etkinlikler iş takvimine kopyalanıyor ve CATEGORIES özelliğine göre renk kodlaması uygulanıyor.

Sonuç

  • 6 aylık testlerin ardından sistemin iyi çalıştığı ve seyahat planlarını yönetmede büyük yardım sağladığı görülüyor.
  • Aylık 100 dolar sunucu maliyeti olsa da, program yönetimindeki kolaylık nedeniyle bunun yeterince değerli olduğu düşünülüyor.

1 yorum

 
GN⁺ 2025-04-11
Hacker News görüşleri
  • CalDAV karmaşık ve sezgisel değil. Radicale'ı denedim ama memnun kalmadım. Kişisel olarak bir CalDAV sunucusu uygulamaya çalıştım ama vazgeçtim

    • Bunun yerine iCal dosyalarını bir S3 bucket'ında barındırdım ve Android'de senkronizasyon için ICSx5 kullandım. CalDAV gerekmiyor, yalnızca HTTPS kullanılıyor
    • FOSS takvimler hâlâ yetersiz ve ICSx5 GrapheneOS'ta çalışmadığı için Proton Calendar'a geçtim. Kusursuz değil ama ihtiyacımı karşılıyor
    • iCalendar biçimini kullanmak iyi bir yaklaşım ama her yazılımın desteklediği özellikler farklı olduğu için metadata'yı açıklama alanına koymaya karar verdim
    • Yazılımla çeşitli sitelerden veri topluyor, yalnızca ilgilendiğim sosyal etkinlikleri filtreleyip tek bir takvimde birleştiriyorum
  • Radicale, Python ile yazılmış modüler bir CalDAV sunucusu olarak tavsiye edilebilir

    • Veriler metin dosyaları olarak saklanıyor ve git ile izlenip yedekleniyor
    • Kimlik doğrulama için host sistemin PAM'ı kullanılıyor
    • Takvim paylaşımı için periyodik olarak bir script çalıştırıp takvimi yetkili tüm kullanıcılara symbolic link ile bağlıyorum
    • Erişim kontrol listelerini desteklemek için özel CalDav özellikleri ve değiştirilmiş bir web plugin'i kullanıyorum
    • Genel takvimler için ACL üzerinden 'public' kullanıcısına okuma izni veriliyor
  • Kişisel sunucumda Mailcow(SoGO) ve Fastmail kullanıyorum. İki takvim iyi senkronize olmuyor

    • Mailcow takvimini diğer araçlarla iyi çalıştıramadığım için yarı otomatik şekilde senkronize ediyorum
    • Baïkal'ı denemek istiyorum. Bu, Mailcow'u başka bir self-hosted e-posta hizmetiyle değiştirmek için de bir fırsat olabilir
  • 2000'lerin başında Mozilla Sunbird kullanarak bir Win2k sunucusunda takvim barındırıyordum. Sanırım o zamanlar CardDAV yoktu

    • Tüm verileri Google Calendar'a aktardım ve geçmişteki üniversite ödevlerimi vb. görebiliyorum
  • Baikal'ı birkaç yıldır kullanıyorum ve stabil

    • Bağlantı için Thunderbird, DAVx5 ve Fossify Calendar kullanıyorum
    • Fossify Calendar, Simple Mobile Tools'un takvim uygulamasından fork edilen bir uygulama ve özellik açısından en zengin olanı
    • Tüm seçenekleri sade bir şekilde sunduğu için kullanımı rahat
  • Fotoğraflar için bir özellik geliştirmek istiyorum. Dropbox ve Google'dan uzaklaşmak istiyorum

    • Fotoğrafları yıldönümü, etkinlik, aile vb. olarak gruplayıp telefona gönderen bir özellik istiyorum
    • Cihazda çekilen fotoğrafların sunucuda saklanabilmesini istiyorum
    • Üç farklı yere 2TB alanlı true-nas makineleri kurup bu işlevi geliştiriyorum
  • Outlook ile Google Calendar'ı HTTP üzerinden senkronize etmek güvenilir değil

    • Zaman dilimi sorunları yüzünden toplantı saatleri hep yanlış oluyor
    • Kendi sistemimi kullanırsam çözülebilir gibi görünüyor ama iki saat kayık toplantılar oluşturulmasından endişe ediyorum
  • Baikal ilginç görünüyor. Geçmişte DAViCal kullandım ama iOS sürümü değişince güvenilir olmaktan çıktı

    • Yeniden denediğimde DAViCal, Radicale ve Baikal'ı değerlendireceğim
  • Son zamanlarda cloud'dan çıkmaya çalışma içindeyim. Veri migrasyonu 2 hafta sürdü ve beklediğimden daha iyi çalıştı

    • E-posta dışında tüm hizmetleri kendim yönetiyorum ve Asus PN40 çok yardımcı oluyor
    • CalDAV istikrarsız ama Nextcloud ihtiyaçlarımın çoğunu karşılıyor
    • Çeşitli open source çözümleri birleştirerek tüm ihtiyaçlarımı karşılıyorum
  • Sunucusuz olarak DecSync kullanmanın bir yolu da var. Thunderbird veya Evolution, Android uygulamasıyla senkronize oluyor

    • Takvim, kartlar, görevler ve RSS diğer peer'lara replike ediliyor