Nuvaka › Geliştirici belgeleri
Nuvaka Apps geliştirici belgeleri
Nuvaka General App'e kendi uygulamanı ekle: HTML, CSS ve JavaScript ile bir arayüz, istersen arka planda çalışan bir betik ve kullanıcının izin verdiği ölçüde Nuvaka verisi (notlar, bulut dosyaları, pano havuzu, mail…). Kullanıcılar uzantını uygulamada Uygulamalar › Mağaza'dan kurar.
Nuvaka Apps nedir
- Paket: uzantı bir
.nvxdosyasıdır (ZIP). Kökündenuvaka.jsonmanifesti bulunur. Kimlik<kullanıcı-adın>.<ad>biçimindedir, ör.tarikgkhsn.faturaci; yayınlandıktan sonra değişmez. - Arayüz: kum havuzlu bir çerçevede (iframe) açılan HTML sayfası. Manifestteki her
pagesöğesi Uygulamalar menüsünde yayıncı başlığının altında görünür. Uygulama çerçevenin üstünde her zaman bir bilgi çubuğu gösterir (ad, sürüm, güven rozeti, yayıncı, İzinler, Durdur). - Arka plan: isteğe bağlı, tek dosyalık bir JavaScript modülü. QuickJS motorunda, uzantı başına ayrı çalışır; zamanlama (
every 15m,daily 09:00…) ve olaylarla (app.started,notes.changed…) tetiklenir. nuvakanesnesi: uygulama her çerçeveye ve arka plana globalnuvakanesnesini kendisi ekler; kütüphane kurmadan kullanırsın.@nuvaka/extension-sdkpaketi yalnız TypeScript tipleri, tipli hata sınıfları ve testler için sahte birnuvakaverir.- İzinler: uzantı yalnız manifestte istediği ve kullanıcının verdiği izinleri kullanabilir. Mail, bağlantı şifreleri ve Nuvaka dosyalarına yazma gibi kritik izinler her kullanımda ayrıca sorulur. Bkz. Kavramlar.
- Veri: her uzantının sunucuda kendi anahtar-değer deposu vardır (izin gerekmez, kota en çok 100 MB). Depo cihazlar arası eşitlenir ve her yazma okunan sürümü taşır (MVCC).
- Platform: uzantılar şimdilik masaüstü uygulamasında (Windows, Linux, macOS) çalışır.
10 dakikada ilk uzantı
Gerekenler: Node.js 20 ya da üstü, e-postası doğrulanmış bir Nuvaka hesabı ve masaüstü uygulaması.
- İskeleti oluştur
npm create @nuvaka/extension merhaba -- --username kullanici-adin --ui --background cd merhaba npm install--usernameNuvaka kullanıcı adındır; kimlikkullanici-adin.merhabaolur. Oluşan dosyalar:nuvaka.json,icon.svg,index.html,app.js,style.css,background.js,test/extension.test.js,package.json.--uiya da--backgroundvermezsen ikisi birden gelir. - Denetle
npx nuvaka-ext lintSunucunun yükleme sırasında uyguladığı kuralların aynısı: manifest şeması, dosya türleri, yasak kod kalıpları, kodda kullanılan
nuvaka.*ad alanlarıyla izinlerin uyumu. Ayrıntı: Güvenlik kuralları. - Uygulamada dene
Uygulamada Profil sayfasının Profil sekmesinde, Geliştirici başlığı altındaki Geliştirici modu kutusunu işaretle. Sonra Uygulamalar › Uygulamaları yönet › Klasörden yükle ile uzantı klasörünü seç. Klasör imzasız ve yalnız bu cihazda çalışır; sürümü
devgörünür ve manifestteki tüm izinler verilmiş sayılır. Değişiklikten sonra listedeki Yeniden yükle düğmesini kullan.npx nuvaka-ext devdevkomutu klasörü izler ve her değişiklikte lint çalıştırır. Uygulamayı kaynaktan (debug derleme) çalıştırıyorsan klasörü açılışta yükleyenNUVAKA_EXT_DEV_DIRkomutunu da yazar.Sunucu uçları kurulum isterKlasörden yüklenen uzantıda yerel yetenekler (arayüz,
net,files, yerel pano,ui.notify) çalışır. Depolama, notlar, pano havuzu, push gibi sunucu uçları ise uzantı hesabında kurulu değilse çalışmaz: bunları denemek için bir sürüm yayınlayıp kur. - Geliştirici token'ı al ve giriş yap
Profil › Geliştirici › Geliştirici token'ları bölümünden bir token üret (
nvd_ile başlar, bir kez gösterilir, 1 yıl geçerlidir).npx nuvaka-ext login --token nvd_xxxxxxxx npx nuvaka-ext whoami - (Önerilir) Yayıncı imza anahtarı
npx nuvaka-ext keys createÇıktıdaki genel anahtarı Profil › Geliştirici › Yayıncı imza anahtarları bölümüne ekle. Bundan sonra her yükleme imzalı olmak zorundadır; token çalınsa bile anahtar olmadan sürüm yayınlanamaz.
- Yayınla
npx nuvaka-ext publish --changelog "İlk sürüm"Sonuç
published,reviewya darejectedolur. Yayıncının ilk uzantısı incelemeye düşer; onaylanınca Mağaza'da görünür. Bkz. Yayınlama ve inceleme. - Kur
Uygulamada Uygulamalar › Mağaza'da uzantını bul ve kur. Kurulum hesabının tüm cihazlarına eşitlenir.
İlk kod
Arayüzde nuvaka.ready kabuk bağlanınca çözülür ve bağlamı (page, locale, theme) verir. Çerçevede localStorage yoktur; kalıcı veri için nuvaka.storage kullanılır.
// app.js (arayüz)
const out = document.getElementById('count')
nuvaka.ready.then(async () => {
const r = await nuvaka.storage.get('count') // { value, version } | null
out.textContent = r ? r.value : 0
})
document.getElementById('inc').onclick = async () => {
// Oku → değiştir → okunan sürümle yaz; başka cihaz araya girerse güncel değerle yeniden dener
const r = await nuvaka.storage.update('count', (n) => (n || 0) + 1)
out.textContent = r.value
}
// Başka cihaz ya da arka plan yazdı (yalnız daha yeni sürümler gelir)
nuvaka.storage.onChanged((key, c) => { if (key === 'count' && !c.deleted) out.textContent = c.value })
// background.js (arka plan, QuickJS; tek dosya, import yok)
nuvaka.on('schedule', async ({ schedule, at }) => {
await nuvaka.ui.notify('Merhaba', `Zamanlanmış görev çalıştı (${schedule})`)
})
Belgeler
nuvaka.json alanlarının tamamı ve kuralları.
İzinlerHer izin, değeri, risk sınıfı ve kullanıcının gördüğü metin.
API başvurusunuvaka.* çağrıları, yanıt biçimleri, olaylar ve hatalar.
CLInuvaka-ext komutları, seçenekleri ve ortam değişkenleri.
Yayınlama ve incelemeToken, imza anahtarı, tarama, inceleme, onaylı rozet, geri çekme.
Güvenlik kurallarıPaket sınırları ve lint'in reddettiği kalıplar.
ÖrneklerBeş örnek uzantı ve kod parçaları.
Sürümler
Bu belgeler API v1 içindir; manifestte "apiVersion": 1 yazılır. Kırıcı bir değişiklik yeni bir API sürümüyle gelir. @nuvaka/extension-cli ve @nuvaka/extension-sdk paketlerinin ana sürümü desteklediği API sürümüdür (1.x = API v1).
Nuvaka Apps API v1 · son güncelleme 2026-09-27