- ✅ Zaman çizelgesi modalına günlük kapasite göstergesi eklendi (yüzde ve renk kodlaması)
- ✅
DateService'deki zaman çizelgesi başlangıç tarihi hesaplaması düzeltildi (geçmiş tarih önerileri engellendi) - ✅ Alt görevlerin tarihlere göre doğru filtrelenmesi sağlandı (frontend ve backend tarih formatı tutarlılığı)
- ✅
dailySummariesverisinin doğru şekilde oluşturulup frontend'e iletilmesi sağlandı - ✅ Zaman çizelgesi butonu ve modalı yeniden etkinleştirildi
- ✅ Hata ayıklama logları temizlendi
- ✅ Kapsamlı güvenlik taraması tamamlandı (hassas veri bulunamadı)
- ✅ README'ye ekran görüntüleri bölümü eklendi (4 adet görsel)
- ✅ GitHub community standards dokümanları eklendi:
- CODE_OF_CONDUCT.md (Contributor Covenant guidelines)
- CONTRIBUTING.md (detaylı katkı rehberi ve coding standards)
- LICENSE (MIT open source license)
- SECURITY.md (güvenlik açığı bildirimi süreci)
- GitHub issue templates (bug report, feature request, question)
- Pull request template (comprehensive checklist)
- ✅ Professional repository structure kuruldu
- ✅ Archive klasörü düzenlendi ve .gitignore güncellenidi
- ✅ Build süreci test edildi ve başarılı
- ✅ GitHub'a güvenli push işlemi tamamlandıtask Generator
Todoist üzerindeki task'ları seçerek AI (Türkçe) yardımıyla mantıklı alt görevlere (subtask) bölen, zaman çizelgesi (schedule) hesaplayan ve son tarihe göre akıllı tarih dağıtımı yapan bir uygulama. Modern web arayüzü ile gelişmiş filtreleme (proje, etiket, öncelik, tarih, arama) sunar.
- ✅ Kapsamlı güvenlik taraması tamamlandı (hassas veri bulunamadı)
- ✅ README'ye ekran görüntüleri bölümü eklendi (4 adet görsel)
- ✅ Proje dokümantasyonu geliştirildi
- ✅ Archive klasörü düzenlendi ve .gitignore güncellenidi
- ✅ Build süreci test edildi ve başarılı
- ✅ GitHub'a güvenli push işlemi tamamlandı
- Gelişmiş Web Arayüzü: Proje, etiket, öncelik, tarih (bugün / 7 gün / 30 gün / geciken / aralık) ve arama filtreleri
- Türkçe AI Subtask Üretimi: OpenRouter üzerinden Türkçe içerik ve açıklamalarla alt görev üretimi
- Akıllı Tarih Dağıtımı: Ana görevin son tarihine göre alt görevlerin zaman eksenine yayılması (eşit / weighted / sequential)
- Zaman Çizelgesi (Schedule): Mevcut subtask'ları kullanarak veya AI ile tahmini çıkararak çalışma günlerine dağıtım
- Öncelik Stratejileri:
inherit,distribute,constantseçenekleri - Hafta Sonu Kontrolü: Hafta sonlarını dahil et / etme seçeneği
- Mevcut Subtask Kullanımı: Schedule hesaplanırken zaten oluşturulmuş subtasks varsa tekrar AI çağrılmaz
- Hata Yönetimi & Retry: Sağlam hata yakalama, düşen entegrasyonlara rağmen çalışma
- Rate Limit Koruması: Todoist API limitlerini aşmayan akıllı istemci
- Türkçe Terminoloji: UI ve AI çıktıları Türkçeleştirilmiş
- Güvenlik Odaklı Repo Temizliği: Arşivleme stratejisi ve hassas veri taraması yönergeleri
Modern ve temiz web arayüzü ile görev yönetimi

Proje, etiket, öncelik ve tarih bazlı gelişmiş filtreleme seçenekleri
AI tarafından üretilen subtask'ların önizlemesi ve düzenleme seçenekleri
"15 gün süre ayıracağım" gibi doğal dil işleme ile akıllı subtask sayısı hesaplama
- Node.js 18.0.0 veya üstü
- Todoist API Token (https://todoist.com/app/integrations/api-token)
|
TODOIST_API_TOKEN| Todoist API token (Unified API v1 veya eski REST v2). Uygulama bağlantıyı/projectsisteği ile test eder. Placeholder token bırakırsanız 401 alırsınız. |
- Depoyu klonlayın:
git clone <repository-url>
cd todoist-subtask- Bağımlılıkları yükleyin:
npm install- Ortam değişkenlerini yapılandırın:
cp .env.example .envEğer önceki
.envdosyanızı güvenlik içinarchive/altına taşıdıysanız, test için yeniden oluşturmak adına bu adım yeterlidir.archive/içindeki eski dosyayı geri getirmenize gerek yok; sadece gerekli iki zorunlu değişkeni (TODOIST_API_TOKEN,OPENROUTER_API_KEY) yeni.enviçine girin.
- .env dosyasını düzenleyin:
- Kendi Todoist API token'ınızı kopyalayın: https://todoist.com/app/integrations/api-token
- Kendi OpenRouter API anahtarınızı oluşturun: https://openrouter.ai/keys
.envdosyasını düzenleyerek kendi token'larınızı ekleyin- ÖNEMLİ: Gerçek token'larınızı asla Git'e commitlemeyin!
- Ek opsiyonel değerler için
.env.exampleiçindeki yorumları okuyun (model, log seviyesi, batch ayarları vs.)
- Uygulamayı başlatın:
# Web arayüzü + API birlikte
npm run dev
# Sadece çekirdek servisleri (web olmadan) çalıştırmak istersen
npm run dev:coreUygulamanın ana kullanım şekli modern web arayüzüdür.
- Ortam değişkenlerini
.enviçinde tanımlayın (TODOIST_API_TOKEN,OPENROUTER_API_KEY) - Geliştirme sunucusunu başlatın (web arayüzü dahil):
npm run dev- Tarayıcıda açın:
http://localhost:8080(veya.enviçindekiPORTdeğeri) - Sol/üst filtre barından proje, etiket, öncelik, tarih veya arama kriteri uygulayın
- Subtask üretmek istediğiniz task kartına tıklayın
- Açılan panelden:
- Subtask önizleme alın (AI çağrısı yapılır)
- Tarih dağıtımı stratejisi seçin (
equal,weighted,sequential) - Hafta sonlarını dahil edip etmeyeceğinizi seçin
- Öncelik stratejisi seçin (
inherit,distribute,constant) - İsterseniz
constantiçin sabit öncelik girin
- Onaylayıp subtask'ları Todoist'e gönderin
- İsterseniz aynı panelden
Schedule(Zaman Çizelgesi) modunu açarak gün bazlı dağılımı inceleyin
Web UI'da ek özellikler:
- Aşırı geniş task listelerinde client-side ek filtreleme
- Mevcut subtask'lar varsa AI'ı tekrar çağırmadan schedule hesaplama
- Tarih rozetleri ve öncelik renkleriyle hızlı görsel durum
Arayüz dışında Node.js üzerinden de kullanmak isterseniz aşağıdaki örnekleri uygulayabilirsiniz.
import { app } from './src/index';
await app.initialize();
const tasks = await app.getTasks();
const candidates = await app.getSubtaskCandidates();
const preview = await app.generateSubtaskPreview('task_id');
const result = await app.createSubtasksFromTask('task_id');const projectTasks = await app.getTasks({ projectId: '123' });
const labeledTasks = await app.getTasks({ label: 'important' });
const highPriorityTasks = await app.getTasks({ priority: 4 });
const datedTasks = await app.getTasks({ dueDate: { from: '2024-12-01', to: '2024-12-31' } });
const searchResults = await app.getTasks({ searchQuery: 'dokümantasyon' });const options = {
distributeByTime: true,
timeDistribution: 'equal', // 'equal' | 'weighted' | 'sequential'
maxSubtasksPerDay: 3,
includeWeekends: false,
priorityStrategy: 'inherit', // 'inherit' | 'distribute' | 'constant'
constantPriority: 2,
};
await app.createSubtasksFromTask('task_id', options);const taskIds = ['task1', 'task2', 'task3'];
const results = await app.createSubtasksForMultipleTasks(taskIds, options);const schedule = await app.calculateTaskSchedule('task_id', {
workDayStart: '09:00',
workDayEnd: '17:00',
dailyWorkHours: 8,
includeWeekends: false,
});Tarayıcıdan erişilen arayüzde şu bileşenler bulunur:
- Üst filtre barı (proje, etiket, öncelik, tarih seçici, arama kutusu)
- Görev listesi (renkli öncelik göstergeleri ve planlanmış tarih rozetleri)
- Subtask önizleme modali (AI tarafından üretilen alt görevler, tarih ve öncelik bilgileri)
- Zaman çizelgesi modali (gün bazında dağıtılmış alt görev görünümü)
Tarih filtresi seçenekleri:
today– Sadece bugün7days– Bugün + 7 gün30days– Bugün + 30 günoverdue– Gecikenlerrange– Belirli aralık (from/to)all– Tarih kısıtı yok
Arayüz ayrıca aşırı geniş sonuçlarda client-side ek süzgeç uygulayarak gereksiz kaydı eler.
Todoist yakın zamanda REST v2 + Sync v9 birleşimini sağlayan Unified API v1 (örn: https://api.todoist.com/api/v1/...) yapısını duyurdu. Bu projede varsayılan baseUrl halen https://api.todoist.com/rest/v2 olarak bırakıldı çünkü mevcut kod mantıksal olarak REST şemasına göre yazıldı ve v1 geçişi sırasında minimal değişiklik hedeflendi.
src/api/todoist-client.ts içindeki istemci aşağıdaki şekilde davranır:
config.todoist.baseUrl/api/v1içerirse pagination'lı{ results: [], next_cursor }yapısını algılar ve normalize eder./rest/v2kullanımında eski düz array formatını bekler.- Placeholder token (ör:
your_todoist_api_token_here) tespit edilirse konsola uyarı yazar ve 401 durumunda özel açıklama verir.
Gelecekte Unified API v1'e tam geçiş için yapılabilecekler (tasks.md içine aktarılabilir):
baseUrlvarsayılanını/api/v1yap- Tüm listeleme çağrılarını
fetchAllPageskullanarak tamamını çek (şu an sadece ilk sayfa gerektiğinde yeterli) - Yeni
/api/v1/tasks/filterendpoint'ini gelişmiş arama için entegre et (REST v2filterparametresi kalktı) - Gerekirse proje / label CRUD operasyonları için v1 spesifik genişletmeler ekle
Hızlı test için örnek istek (token ile):
curl -H "Authorization: Bearer $TODOIST_API_TOKEN" https://api.todoist.com/rest/v2/projectsveya v1:
curl -H "Authorization: Bearer $TODOIST_API_TOKEN" 'https://api.todoist.com/api/v1/projects?limit=1'- Todoist API: 60 istek/dakika
- OpenRouter API: Varies by model
- Concurrent Requests: 10 (yapılandırılabilir)
Testleri çalıştırmak için:
# Tüm testleri çalıştır
npm test
# Testleri izlemek için
npm run test:watch
# Test kapsamı raporu
npm run test -- --coveragesrc/
├── api/
│ ├── todoist-client.ts # Todoist API istemcisi
│ └── types.ts # API tip tanımları
├── services/
│ ├── task-service.ts # Task işlemleri
│ ├── ai-service.ts # AI entegrasyonu
│ ├── subtask-service.ts # Subtask oluşturma
│ └── date-service.ts # Tarih işlemleri
├── utils/
│ ├── error-handler.ts # Hata yönetimi
│ ├── rate-limiter.ts # Rate limit yönetimi
│ └── logger.ts # Loglama
├── models/
│ ├── task.ts # Task modeli
│ └── subtask.ts # Subtask modeli
├── config/
│ └── config.ts # Konfigürasyon
└── index.ts # Ana uygulama
- API Token Güvenliği: Gerçek token'lar
.envdosyasında saklanır ve Git tarafından takip edilmez - Ortam Değişkenleri: Hassas veriler
.gitignore'a eklenerek korunur - CORS Yapılandırması: Güvenlik önlemleri alınır
- Input Validation: Girdi doğrulama ile güvenlik kontrolleri yapılır
- Rate Limit Koruması: API limitlerini aşmamak için akıllı yönetim
- Gerçek API token'ları
archive/dizininde güvenli bir şekilde saklanır .envdosyası.gitignore'a eklenerek Git'e commitleme engellenir- Kullanıcıların kendi token'larını kullanması için
.env.exampledosyası sağlanır
Depo bakım süreci için adımlar (detaylı workflow repo-cleanup.chatmode.md içinde):
git statusile durum kontrolüfindkomutu ile arşivlenecek geçici dosyaları listelemearchive/klasörüne log / taslak / geçici dosyaları taşıma.gitignoregüncelleme (dist/ hariç tutulur, izlenir)- Duyarlı veri taraması:
grep -rE '(api[_-]?key|token|password|secret|private[_-]?key|access[_-]?token)' . - Build + test (
npm run build,npm test) - Conventional commit mesajı ile commit
git push+ README bakım notu ekleme
- 2025-09-20:
node_modules/dizini ilk commit sırasında yanlışlıkla repoya eklenmişti..gitignoregüncellendi vegit rm -r --cached node_modulesile versiyon kontrolünden çıkarıldı. Yeni klonlayan kullanıcılarnpm installsonrasında bağımlılıkları lokal olarak oluşturabilir. Eğer repoyu fork'ladıysanız ve kendi fork'unuzda da aynı problem varsa aynı adımları uygulayın.
İsteğe bağlı (boyutu küçültmek için geçmişi temizleme):
# NOT: Bu işlem commit hash'lerini değiştirir. Paylaşımlı repo ise ekip ile koordine edin.
pip install git-filter-repo # veya brew install git-filter-repo
git filter-repo --path node_modules --invert-paths
git push --force origin mainAlternatif hızlı yöntem (BFG Repo-Cleaner):
java -jar bfg.jar --delete-folders node_modules --delete-files node_modules --no-blob-protection .
git reflog expire --expire=now --all
git gc --prune=now --aggressive
git push --force origin mainEğer proje henüz yaygın paylaşılmadıysa history rewrite güvenlidir; aksi halde sadece mevcut durumun temiz kalması yeterlidir.
# Docker image oluştur
docker build -t todoist-subtask .
# Container çalıştır
docker run -d --name todoist-subtask -p 3000:3000 \
-e TODOIST_API_TOKEN=your_real_todoist_token \
-e OPENROUTER_API_KEY=your_real_openrouter_key \
todoist-subtask# Uygulamayı build et
npm run build
# Production'da çalıştır
npm start- Rate Limit: 60 istek/dakika (Todoist)
- Retry Mekanizması: Üçlü deneme ile hata yönetimi
- Caching: Önbellekleme ile performans optimizasyonu
- Async Processing: Paralel işlemler ile verimlilik
Artık detaylı yol haritası, epik ayrımları, user story'ler, kabul kriterleri ve sprint planı tasks.md dosyasına taşındı.
Özet (yüksek seviye başlıklar):
- Zaman Çizelgesi UX geliştirmeleri
- AI zekâ katmanı (öğrenen süre & öncelik tahmini)
- İş birliği / paylaşım özellikleri
- Analitik & raporlama
- Performans ve güvenilirlik sertleşmesi
- Geliştirici deneyimi ve CI/CD
Detaylar için: tasks.md
Katkılarınızı memnuniyetle karşılıyoruz! Detaylı bilgi için lütfen CONTRIBUTING.md dosyasını okuyun.
- Bu repoyu forklayın
- Yeni bir branch oluşturun (
git checkout -b feature/amazing-feature) - Değişikliklerinizi yapın ve test edin
- Conventional Commits formatında commit yapın
- Branch'i pushlayın (
git push origin feature/amazing-feature) - Pull request oluşturun
- Code of Conduct - Topluluk davranış kuralları
- Contributing Guide - Detaylı katkı rehberi
- Security Policy - Güvenlik açığı bildirimi süreci
- Issue Templates - Bug report ve feature request şablonları
Bu proje MIT lisansı ile dağıtılmaktadır. Detaylar için LICENSE dosyasına bakın.
Sorular veya katkı için:
- Önce mevcut konuları inceleyin: https://github.com/cenktekin/todoist-subtask-generator/issues
- Uygun değilse yeni bir Issue açın (adımlar, beklenen/gerçek davranış, loglar)
- Öneri / feature talebi için kısa başlık + açıklama yeterli
Geliştirici: Cenk Tekin
GitHub: https://github.com/cenktekin
Proje: https://github.com/cenktekin/todoist-subtask-generator
E‑posta: [email protected]
Buy Me a Coffee: https://buymeacoffee.com/cenktekin
Proje hoşuna gittiyse ⭐ vererek veya destek olarak motive edebilirsin.
Not: Uygulama REST v2 ile uyumlu çalışacak şekilde başlatıldı; istemci Unified API v1 yanıt biçimini de otomatik normalize eder. API kırıcı değişikliklerinde todoist-client.ts güncellenmelidir.