Pistochia
Yakında yayındaDEHB'li insanlar için bir iPhone uygulaması. Aklındakini söylüyor ya da yazıyorsun, o da bunu o günkü enerjine göre sıralanmış, başlayabileceğin kadar küçük adımlar olarak geri veriyor.
- Rolüm
- Tasarım ve geliştirme, tek başıma
- Yıl
- 2026
- Teknolojiler
- Expo · React Native · SQLite · Supabase Edge Functions · Claude · Whisper · RevenueCat
Diyagramın tamamını görmek için yana kaydırın.
Problem
DEHB'li biri için zor olan çoğu zaman hatırlamak değil, başlamak. Bütün dağı saklayan bir yapılacaklar uygulaması, suçluluk duyulacak şeylerin listesine dönüşüyor. İşin birimi, başlamak kolay gelene kadar küçülmeli ve uygulama açıldığı saniye çalışmalı.
Nasıl yapıldı
Versiyonlu migration'larla lokal SQLite üzerinde çalışan, offline-first bir Expo uygulaması. Kimlik anonim Supabase auth ile, böylece ilk brain dump herhangi bir kayıt ekranından önce oluyor. Her AI çağrısı operasyon bazlı çalışan bir edge function'dan geçiyor: uygulama bir operasyon adı ve parametrelerini gönderiyor, asla bir prompt ya da bir key göndermiyor. Function, operasyonu bir allowlist ile kontrol ediyor; IP başına rate limit, kurulum başına günlük kota ve bir kill switch uyguluyor. Görevleri Claude parçalıyor, sesi de aynı proxy'nin arkasındaki Whisper işliyor. Paywall'u RevenueCat yönetiyor, analytics de kullanıcı onay verene kadar kapalı kalıyor.
Önemli kararlar
Uygulamada hiç API key yok
İçeri operasyon adları giriyor, dışarı yapılandırılmış sonuçlar çıkıyor. API key, bir kill switch, kotalar ve fail-closed limitlerin arkasında, edge function'da duruyor.
Önce offline çalışıyor
Görevler telefondaki SQLite'ta, gerçek migration'larla duruyor. Bir sonraki adımını göstermek için ağa ihtiyaç duyan bir DEHB aracı, yapıldığı insanları yarı yolda bırakır.
İlk kullanımdan önce kayıt yok
Anonim auth sessizce bir kimlik oluşturuyor. Hesap ekranı, uygulama işe yaradıktan sonra geliyor.
Repodan kod
// The legacy free-relay surface: any request still carrying these is either
// an outdated client or an abuse probe — reject outright.
const FORBIDDEN_KEYS = ['system', 'model', 'messages', 'maxTokens'] as const;1
// …
const paused = Deno.env.get('AI_PAUSED');2
if (paused === 'true' || paused === '1') {
return jsonResponse({ error: 'ai_paused' }, 503);
}
// …
for (const key of FORBIDDEN_KEYS) {
if (key in body) {
return jsonResponse({ error: 'invalid_request' }, 400);
}
}
const op = body.op;
if (typeof op !== 'string' || !(op in OPS)) {3
return jsonResponse({ error: 'invalid_op' }, 400);
}
const config = OPS[op]!;
3. satır. Uygulama bir prompt, model ya da token limiti gönderemez. Bunlar sunucuda duruyor; uygulama sadece allowlist'teki bir operasyonun adını verebiliyor.
6. satır. AI_PAUSED bir kill switch: tek bir environment variable, redeploy gerekmeden bütün AI harcamasını durduruyor.
19. satır. Bilinmeyen bir operasyon reddediliyor. API key, uygulama bundle'ının hiçbir yerinde yok.
Şu an ne durumda
App Store materyalleri, lansman kontrol listesi, EAS build'leri, bir tanıtım videosu ve bekleme listeli pistochia.com hazır. Önce iPhone; sırada App Store'a çıkış var.