Konsol: fraktal (paralel şeritli 24-bit Mandelbrot/Julia + yakınlaşma), sudoku (geri izlemeli, canlı animasyon), fatura (JSON → terminal tablosu, PDF ve Excel). Masaüstü: hesap makinesi (işlem önceliği, canlı bağlama), odak (Pomodoro), parola atölyesi (entropi ölçer, SHA-256). Web: pano (Kanban REST API + SQLite), kisalt (302 yönlendirme, SVG istatistik), anket (adres başına tek oy, sunucuda çizilen grafik). Hepsi `kabalang calistir` ile derlenip çalışır; web uygulamaları yalnız 127.0.0.1'i dinler, SQL parametre bağlamalı, HTML çıktısı kaçırılır.
1.8 KiB
1.8 KiB
Pano — Kanban görev panosu
Sunucusu KabaLang ile yazılmış bir Kanban panosu: görevler Yapılacak · Sürüyor · Bitti sütunlarında, kartlar sürükle-bırak ile taşınır, her değişiklik SQLite'a yazılır.
cd web/pano
kabalang calistir pano.kbl
# → http://127.0.0.1:8471
Neyi gösteriyor
| Konu | Nerede |
|---|---|
kaba.web ile JSON REST API — al · gonder · guncelle · kaldir |
pano.kbl sonu |
Yol parametresi /api/gorevler/{id} |
guncelle, kaldir |
kaba.veritabani — her sorgu parametre bağlamalı (?) |
tüm veritabani.sqlite(..., [..]) çağrıları |
Gelen JSON'u json.gecerli_mi + json.al ile okumak |
olustur |
| Durum kodlu yanıtlar: 201 · 204 · 400 · 404 · 422 | hata_json, web.json(g, 201) |
| Sunucunun kendi hatalarının da JSON olması (405, 413) | sunucu.hatalar_json() |
Kapalı küme denetimi (SUTUNLAR.icerir(sutun)) |
olustur, guncelle |
API
curl http://127.0.0.1:8471/api/gorevler
curl -X POST -d '{"baslik":"Yeni iş","oncelik":"yuksek"}' http://127.0.0.1:8471/api/gorevler
curl -X PUT -d '{"sutun":"bitti"}' http://127.0.0.1:8471/api/gorevler/3
curl -X DELETE http://127.0.0.1:8471/api/gorevler/3
Güvenlik
- SQL enjeksiyonu: kullanıcı verisi sorguya hiçbir zaman metin olarak eklenmez,
?ile bağlanır."x'); DROP TABLE gorev; --"başlıklı bir görev yalnızca tuhaf adlı bir görevdir. - XSS: ön yüz kart içeriğini
textContentile basar;<script>başlıklı bir görev ekranda düz yazı olarak görünür. - Sunucu yalnız
127.0.0.1'i dinler ve tek iş parçacığıyla çalışır (SQLite'a sırayla yazılır).
Veritabanı yolu PANO_DB ortam değişkeniyle değiştirilebilir (varsayılan pano.db).

