Public
Aylık takvim todo + mail bildirimleri | SQLite, cron, nodemailer
cronemailschedulersqlitetakvim
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.

Takvim — aylık todo + mail bildirimleri

Kişisel görev planlayıcı. Aylık takvim görünümü, gün görünümü, "kalanları sonraki güne aktar" akışı ve ayarlanabilir mail bildirimleri. Tüm tarih/saat mantığı Europe/Berlin saat dilimine göre.

Kullanım

Uygulama ?s=<APP_SECRET> ile korunur. Takvim linkini tarayıcıda bu parametreyle aç:

Uygulamayı aç

Uygun URL şu şekilde: https://task-scheduler.val.run/?s=<sırrın>

  • Takvim: Gün hücresinde görevler alt alta; sığmazsa hücre içinde kayar. Telefonda sadece görev sayısı + kırmızı nokta görünür. Hücreye tıklayınca gün görünümü açılır.
  • Gün görünümü: En altta "Görev ekle" — yaz, Enter'a bas. Görevin solundaki çember done/open değiştirir. Göreve basılı tut (masaüstünde sağ tık) düzenleme ekranını açar. "Sonraki güne →" bugünün açık görevlerini bir gün ileri taşır; "Geri al" son taşımayı iptal eder.
  • Düzenleme modu: Sağ üstteki anahtar. Açıkken gün görünümünde görevler tutamağından sürüklenerek sıralanabilir (position kaydedilir, dokunmatik dahil).
  • Ayarlar (⚙): Bildirim saatleri listesi; + ekler, siler (en az 1 kayıt).

Veri modeli

  • tasks: id, date (YYYY-MM-DD), text, position, status (open|done|moved), moved_to_id, moved_from_id, red_enabled, created_at
  • settings: notify_times (bildirim saatleri), last_move (geri alma için)
  • email_sent: gün/saat başına gönderim kaydı (çift gönderimi engeller)

Durum kuralları: kırmızı = open + red_enabled=1 + tarih bugünden önce. moved = üstü çizili, yanında hedef tarih. Otomatik aktarma yok — sadece butonla.

Mail bildirimi

cron.ts 15 dakikada bir çalışır. Ayardaki her saat için, o saat Berlin'de geçtiyse ve o gün o saat için gönderim kaydı yoksa hatırlatıcı mail atar. Konu Todo | 14:00 | Val; günün son bildiriminde Todo | Yarına aktarmayı unutma | Val. İçerik: (1) kırmızılar, (2) bugünün bitmemişleri, altta takvim linki.

SMTP için GMAIL_USER / GMAIL_PASS (Gmail uygulama şifresi) gerekir. Alıcı: run.ts içindeki TO sabiti.

Dosyalar

  • main.ts — HTTP sunucusu (Hono): sayfa + JSON API, ?s= ile doğrulama
  • db.ts — SQLite (şema + sorgular)
  • time.ts — Europe/Berlin tarih/saat yardımcıları
  • cron.ts — mail bildirimi (interval)
  • run.ts — Gmail SMTP gönderimi
  • index.html, app.js — arayüz (vanilla JS)