حریمِ داده — چه چیزی کجا میماند
کارگاهی که با درزساز کار میکند دادهٔ مشتریِ دیگران را دستش دارد: نامِ خریدار، نشانیِ نصب، اندازهٔ آشپزخانه، قیمتی که بسته و عکسی که از خانهٔ مشتری گرفته. این سند میگوید آن داده کجا مینشیند، چه کسی میتواند بخواندش، و با چه کلیکی پاک میشود. برای کاربر همین حرفها به زبانِ ساده در راهنمای کاربر است؛ اینجا شکلِ فنیاش است.
هیچ بایتی از پروژهٔ تو از این کامپیوتر بیرون نمیرود. درزساز بکاند ندارد: نه حساب کاربری، نه همگامسازی، نه تحلیل رفتار، نه گزارشِ خطا به جایی. سرور فقط پروندههای خودِ برنامه را میدهد (deploy.md) و پس از اولین بارگذاری، برنامه بی اینترنت هم کار میکند.
| داده | کجا میماند | با برداشتنِ چه از بین میرود |
|---|---|---|
| پروژهها (دیوار، یونیت، قیمت، نام) | IndexedDB ِ همین مرورگر، پایگاهِ darzsaz-v3، جدولِ projects |
«حذفِ پروژه» و بعد سطلِ زباله؛ یا پاککردنِ دادهٔ سایت |
| نسخههای خودکار | همان پایگاه، snapshots |
همراهِ پروژه |
| عکسِ دیوار و هر دارایی | همان پایگاه، assets |
همراهِ پروژه |
| کاتالوگ و دفترِ قیمتِ خودت | همان پایگاه، catalogs و priceBooks |
«بازگردانی به پیشفرض» در کاتالوگ |
| دفترِ رویداد (چه کِی عوض شد) | همان پایگاه، auditLog |
پاککردنِ دادهٔ سایت |
| دسترسیِ پروندهٔ ذخیرهشده | همان پایگاه، fileHandles — نه خودِ پرونده، فقط اجازهٔ آن |
پاککردنِ دادهٔ سایت |
| تنظیماتِ برنامه | همان پایگاه، settings |
پاککردنِ دادهٔ سایت |
| ترجیحِ رابط (پوسته، زبان، پنلها) | localStorage، کلیدهای darzsaz.* (lib/prefs.ts) |
پاککردنِ دادهٔ سایت |
پروندهٔ .darz.json ِ صادرشده |
هر جا که خودت ذخیره کردی | خودت |
پشتیبانِ کامل .darzsaz-backup |
هر جا که خودت ذخیره کردی — همهٔ جدولهای بالا در یک زیپ | خودت |
| گزارشِ چاپی / PDF | همان لحظه ساخته میشود؛ جایی نمیماند | بستنِ پنجره |
چرا IndexedDB، و معنایش برای کارگاه
Section titled “چرا IndexedDB، و معنایش برای کارگاه”داده در همان مرورگر و همان پروفایل و همان مبدأ میماند:
- مرورگرِ دیگر، کاربرِ دیگرِ ویندوز، یا حالتِ ناشناس ← پروژهها آنجا نیستند.
- «پاک کردنِ دادههای مرورگر» ِ کاربر، پروژهها را هم میبرد. برنامه برای همین
navigator.storage.persist()میگیرد و وضعیتش را در تنظیمات نشان میدهد (storage.md)؛ ماندگاریِ رد شده یعنی مرورگر ممکن است زیرِ فشارِ فضا پاک کند. - کامپیوترِ کارگاه معمولاً چند نفر دستش است. درزساز قفل ندارد — هر کسی که به آن پروفایل دسترسی دارد پروژهها را میبیند. قفلِ واقعی قفلِ حسابِ سیستمعامل است، نه چیزی که برنامه بتواند بدهد.
کاری که برنامه نمیکند
Section titled “کاری که برنامه نمیکند”- درخواستی به بیرون نمیزند؛ نرخِ ارز در
darzsaz prices --liveتنها استثناست و خطِ فرمان است و با پرچمِ صریحِ خودت (cli.md). - تحلیل و ردیابی ندارد: نه Google Analytics، نه Sentry، نه کوکی. تنها چیزی که در
localStorageمینشیند ترجیحِ رابطِ خودت است. - فونت و اسکریپت را از CDN نمیگیرد؛ همه از همان دامنه میآید (fonts.md).
- بهروزرسانیِ خودکارِ بیخبر ندارد: سرویسورکر نسخهٔ تازه را میگیرد و میپرسد
(
registerType: 'prompt').
چیزی که سرور مینویسد (و مالکِ سایت میبیند)
Section titled “چیزی که سرور مینویسد (و مالکِ سایت میبیند)”بالا دربارهٔ برنامه بود: برنامه چیزی نمیفرستد. اما هر سروری، برای این که بتواند جواب بدهد،
درخواست را میبیند — و nginx مثل هر وبسروری خطِ لاگش را مینویسد. مالکِ darzsaz.ir همان لاگ را
با کنسولِ خودش (apps/console، deploy.md) میشمارد. این تمامِ چیزی است که او
میبیند:
| میبیند | نمیبیند |
|---|---|
| چند بازدید امروز، به کدام میزبان و کدام صفحه | هیچ چیزی از پروژه، نام، قیمت یا عکسِ تو |
مرورگر و موبایل/کامپیوتر (از User-Agent) |
نشانیِ تو — ذخیره نمیشود، فقط درهمسازیِ نمکخورده |
| از کجا آمدی (دامنهٔ ارجاعدهنده، نه صفحهاش) | این که دیروز هم تو بودی — نمکِ هر روز نو است |
| چه نشانیای خطا داده (۴۰۴ و ۵۰۰) | هر کاری که درونِ برنامه کردی؛ آنجا درخواستی نمیرود |
هیچ ردیاب، کوکی یا اسکریپتِ شمارشی به صفحه اضافه نمیشود. «نفرِ یکتای امروز»
sha256(نمکِامروز + نشانی) است که فقط ۳۲ نویسهٔ اولش نگه داشته میشود؛ نمک هر روز عوض میشود و
دورش میاندازند، پس همان نشانی فردا نشانِ دیگری میگیرد و رشتهای از روزها ساخته نمیشود. نشانی
هرگز در پایگاهِ کنسول نمینشیند. رکوردهای روزانه پس از ۱۲۰ روز حذف میشوند و فقط جمعِ روزها
میماند.
این تنها راهی است که میشود «چند نفر آمدند» را جواب داد بی آن که چیزی در مرورگرِ کسی گذاشته شود. هر روشِ دقیقتر — اسکریپت، کوکی، شناسهٔ دستگاه — همان کاری است که این محصول قول داده نکند.
دادهٔ مشتری در پروندهٔ .darz.json
Section titled “دادهٔ مشتری در پروندهٔ .darz.json”پروندهٔ پروژه متنِ ساده (JSON) است و رمز نشده: نامِ پروژه و مشتری، یادداشتها و قیمتها را همانطور که نوشتی درش میبینی. پس:
- پروندهٔ پروژه را مثلِ پیشفاکتورِ کاغذی حساب کن؛ هر جا که میگذاری، خواندنی است.
- عکسِ دیوار هم درونش base64 است.
- فرستادنش در واتساپ یعنی فرستادنِ همان اطلاعات به همان گیرنده — برنامه چیزی به آن اضافه یا کم نمیکند (storage.md).
پاک کردنِ همه چیز
Section titled “پاک کردنِ همه چیز”۱. در فهرستِ پروژهها هر کدام را «حذف» کن (به سطلِ زباله میرود) و بعد سطل را خالی کن.
۲. برای پاککردنِ کامل: تنظیماتِ سایت در مرورگر ← «پاک کردنِ دادههای سایت» برای darzsaz.ir. این
کار پایگاهِ darzsaz-v3 و localStorage را با هم میبرد و برگشتی ندارد.
۳. پیش از هر دو، اگر چیزی لازم داری «پشتیبانِ همه» بگیر (storage.md).
همچنین ببین
Section titled “همچنین ببین”- storage.md — ذخیرهٔ خودکار، ماندگاری، پشتیبان، پروندهٔ
.darz. - data-layer.md — جدولها، مخزنها و ارتقای پایگاه.
- deploy.md — سایتِ زنده: چه چیزی روی سرور است و چه چیزی نیست.