<<<<<<< HEAD
یک اپلیکیشن سبک، مدرن و قابلتوسعه برای ساخت رمزهای قوی با UI شیشهای (Glassmorphism)، پارتیکل سبک، PWA و Web Crypto API. این پروژه با Tailwind + Vanilla JS + Vite ساخته شده است.
- ساخت رمز با سطوح سختی مختلف (آسان/متوسط/سخت) و گزینههای سفارشی (حروف بزرگ/کوچک/اعداد/نمادها)
- نمایش رمز تولیدشده در یک مدال با عملیات: ذخیره، کپی، تولید مجدد
- توستهای زیبا برای بازخورد عملیات (ذخیره شد، کپی شد، حذف شد و ...)
- تاریخچه رمزها با امکان کپی، حذف آیتم و حذف کلی
- حالت امن (Secure Save): ذخیرهسازی رمزها بهصورت رمزنگاریشده (AES‑GCM) با «کلید اصلی» کاربر. در این حالت متن رمز ذخیره نمیشود و تنها با واردکردن کلید قابل نمایش/کپی است.
- ذخیرهسازی محلی: نگهداری هش SHA-256 هر رمز؛ در حالت عادی متن رمز نیز برای نمایش/کپی ذخیره میشود.
- لودر اولیه هنگام شروع برنامه و پسزمینه پارتیکلی سبک
- پسزمینه پارتیکلی سبک و عملکرد بالا
- فونت فارسی جذاب Vazirmatn
- فوتر ثابت: «توسط mmdcode محمد سجادی نوشته شده»
- تولید رمز با Web Crypto API (secure randomness) انجام میشود.
- هش هر رمز با Web Crypto API (SHA-256) محاسبه و روی دستگاه کاربر نگهداری میشود.
- «حالت امن» (اختیاری): با فعالکردن گزینه «ذخیره امن (AES‑GCM)» در تنظیمات پیشرفته، متن رمزها ذخیره نمیشود؛ فقط نسخه رمزنگاریشده بههمراه IV نگهداری میشود. کلید اصلی توسط کاربر تعیین میشود و صرفاً hint آن در localStorage ذخیره میگردد.
- برای Clipboard API و PWA، اجرای HTTPS/localhost ضروری است. Fallback ناامن حذف شده است.
- برای عملکرد کامل API کلیپبورد، اپ را روی HTTPS یا localhost اجرا کنید؛ در محیط ناامن، fallback برای کپی تعبیه شده است.
- اطلاعات فقط روی دستگاه کاربر باقی میماند و جایی ارسال نمیشود. برای امنیت بالاتر، از ذخیره رمزهای بسیار حساس خودداری کنید.
- نصب وابستگیها (Tailwind فقط برای بیلد CSS استفاده میشود):
npm install
- توسعه با Vite (HTTPS توصیه میشود):
npm run dev
Vite سرور محلی را اجرا میکند. برای Clipboard API کامل و SW، روی HTTPS یا localhost اجرا کنید. استایلها کاملاً با Tailwind (@layer/@apply در src/input.css
) تولید میشوند و فایل CSS سفارشی حذف شده است. فایلهای PWA (manifest.webmanifest
, sw.js
) در روت پروژه قرار دارند و در بیلد در dist/
کپی میشوند.
- Build نهایی:
npm run build && npm run preview
- Tailwind CSS
- JavaScript (Vanilla)
- Web Crypto API (SHA-256، اعداد تصادفی امن)
- PWA (Service Worker, Manifest)
- Vite (Dev/Build)
- ساختار ساده است و وابستگیها حداقلیاند. اگر فیچر جدید اضافه میکنید، تلاش کنید بدون فریمورک باقی بماند، مگر اینکه ارزش افزوده مشخص باشد.
- برای فیچرهای امنیتی (مانند ذخیرهسازی رمزنگاریشده)، حتماً threat model کوتاه در PR بنویسید.
- تلاش کنید UI/UX حداقلی، سریع و RTL را حفظ کنید. آیکنها و تعاملات باید دسترسپذیر باشند (aria-label، کلید Esc برای بستن مدالها).
- اگر روی امنیت کار میکنید: threat-model کوتاه، مدیریت salt تصادفی per-user، و انتخاب تعداد iteration مناسب برای PBKDF2 را مستندسازی کنید.
- اجرای «اجبار حداقل یک کاراکتر از هر گروه انتخابشده» در تولید رمز را میتوانید توسعه دهید (در حال حاضر معیار قدرت پوشش داده میشود).
- فعالسازی از مسیر: تنظیمات پیشرفته → تیک «ذخیره امن (AES‑GCM)»
- تعیین کلید اصلی (دکمه «تنظیم کلید اصلی»): کلید با PBKDF2 (SHA‑256, 150k iters) به کلید AES‑GCM تبدیل و فقط در حافظه نگهداری میشود. Hint در localStorage ذخیره میشود.
- ذخیره رمز: فقط نسخه رمزنگاریشده ذخیره میشود (base64 شامل IV||Cipher).
- کپی از تاریخچه: ابتدا تلاش برای خواندن متن؛ اگر نبود، رمزگشایی با کلید اصلی.
Pull Request خوشآمد است! لطفاً قبل از ارسال PR، تغییرات را بهصورت خلاصه در توضیحات بنویسید.
این پروژه تحت لایسنس MIT منتشر شده است. جزئیات در فایل LICENSE
موجود است.
اگر این پروژه برایتان مفید بود، لطفاً ⭐️ بدهید. ممنون از حمایت شما!
- Strong password generation with customizable options (upper/lower/numbers/symbols)
- Difficulty presets and a live strength badge
- Beautiful modal with Save/Copy/Regenerate actions and toast notifications
- Local history with copy/delete/clear; SHA-256 stored; optional Secure Save (AES‑GCM) where plaintext is not stored
- Loader, lightweight particle background, RTL-friendly UI
- PWA (service worker + manifest) and Vite-powered dev/build
- Randomness and hashing use Web Crypto API (getRandomValues, SHA-256). Optional Secure Save encrypts entries with AES‑GCM using a user-derived key (PBKDF2, SHA‑256, 150k iters). Clipboard works on HTTPS/localhost only.
- Clipboard API requires secure context (HTTPS or localhost). A fallback copy method is included for non-secure contexts.
npm install
npm run dev # start Vite dev server
npm run build # build for production
npm run preview # preview production build locally
- Tailwind CSS, Vanilla JavaScript
- Web Crypto API (SHA-256, secure randomness)
- PWA (Service Worker, Manifest)
- Vite (development and build)
- Create repo, then push:
git init
git add .
git commit -m "feat: initial release (Tailwind + Vite + PWA)"
git branch -M main
git remote add origin <YOUR_REPO_URL>
git push -u origin main
- Enable Pages: GitHub → Settings → Pages → Build from branch →
gh-pages
or use Actions to deploydist/
.
For simple manual deploy, you can use peaceiris/actions-gh-pages
in CI or run:
npm run build
git subtree push --prefix dist origin gh-pages
- Keep the footprint small and the UI snappy. If adding security features, include a brief threat model in your PR. Maintain accessibility and RTL support.
=======
یک اپلیکیشن سبک، مدرن و قابلتوسعه برای ساخت رمزهای قوی با UI شیشهای (Glassmorphism)، پارتیکل سبک، PWA و Web Crypto API. این پروژه با Tailwind + Vanilla JS + Vite ساخته شده است.
- ساخت رمز با سطوح سختی مختلف (آسان/متوسط/سخت) و گزینههای سفارشی (حروف بزرگ/کوچک/اعداد/نمادها)
- نمایش رمز تولیدشده در یک مدال با عملیات: ذخیره، کپی، تولید مجدد
- توستهای زیبا برای بازخورد عملیات (ذخیره شد، کپی شد، حذف شد و ...)
- تاریخچه رمزها با امکان کپی، حذف آیتم و حذف کلی
- حالت امن (Secure Save): ذخیرهسازی رمزها بهصورت رمزنگاریشده (AES‑GCM) با «کلید اصلی» کاربر. در این حالت متن رمز ذخیره نمیشود و تنها با واردکردن کلید قابل نمایش/کپی است.
- ذخیرهسازی محلی: نگهداری هش SHA-256 هر رمز؛ در حالت عادی متن رمز نیز برای نمایش/کپی ذخیره میشود.
- لودر اولیه هنگام شروع برنامه و پسزمینه پارتیکلی سبک
- پسزمینه پارتیکلی سبک و عملکرد بالا
- فونت فارسی جذاب Vazirmatn
- فوتر ثابت: «توسط mmdcode محمد سجادی نوشته شده»
- تولید رمز با Web Crypto API (secure randomness) انجام میشود.
- هش هر رمز با Web Crypto API (SHA-256) محاسبه و روی دستگاه کاربر نگهداری میشود.
- «حالت امن» (اختیاری): با فعالکردن گزینه «ذخیره امن (AES‑GCM)» در تنظیمات پیشرفته، متن رمزها ذخیره نمیشود؛ فقط نسخه رمزنگاریشده بههمراه IV نگهداری میشود. کلید اصلی توسط کاربر تعیین میشود و صرفاً hint آن در localStorage ذخیره میگردد.
- برای Clipboard API و PWA، اجرای HTTPS/localhost ضروری است. Fallback ناامن حذف شده است.
- برای عملکرد کامل API کلیپبورد، اپ را روی HTTPS یا localhost اجرا کنید؛ در محیط ناامن، fallback برای کپی تعبیه شده است.
- اطلاعات فقط روی دستگاه کاربر باقی میماند و جایی ارسال نمیشود. برای امنیت بالاتر، از ذخیره رمزهای بسیار حساس خودداری کنید.
- نصب وابستگیها (Tailwind فقط برای بیلد CSS استفاده میشود):
npm install
- توسعه با Vite (HTTPS توصیه میشود):
npm run dev
Vite سرور محلی را اجرا میکند. برای Clipboard API کامل و SW، روی HTTPS یا localhost اجرا کنید. استایلها کاملاً با Tailwind (@layer/@apply در src/input.css
) تولید میشوند و فایل CSS سفارشی حذف شده است. فایلهای PWA (manifest.webmanifest
, sw.js
) در روت پروژه قرار دارند و در بیلد در dist/
کپی میشوند.
- Build نهایی:
npm run build && npm run preview
- Tailwind CSS
- JavaScript (Vanilla)
- Web Crypto API (SHA-256، اعداد تصادفی امن)
- PWA (Service Worker, Manifest)
- Vite (Dev/Build)
- ساختار ساده است و وابستگیها حداقلیاند. اگر فیچر جدید اضافه میکنید، تلاش کنید بدون فریمورک باقی بماند، مگر اینکه ارزش افزوده مشخص باشد.
- برای فیچرهای امنیتی (مانند ذخیرهسازی رمزنگاریشده)، حتماً threat model کوتاه در PR بنویسید.
- تلاش کنید UI/UX حداقلی، سریع و RTL را حفظ کنید. آیکنها و تعاملات باید دسترسپذیر باشند (aria-label، کلید Esc برای بستن مدالها).
- اگر روی امنیت کار میکنید: threat-model کوتاه، مدیریت salt تصادفی per-user، و انتخاب تعداد iteration مناسب برای PBKDF2 را مستندسازی کنید.
- اجرای «اجبار حداقل یک کاراکتر از هر گروه انتخابشده» در تولید رمز را میتوانید توسعه دهید (در حال حاضر معیار قدرت پوشش داده میشود).
- فعالسازی از مسیر: تنظیمات پیشرفته → تیک «ذخیره امن (AES‑GCM)»
- تعیین کلید اصلی (دکمه «تنظیم کلید اصلی»): کلید با PBKDF2 (SHA‑256, 150k iters) به کلید AES‑GCM تبدیل و فقط در حافظه نگهداری میشود. Hint در localStorage ذخیره میشود.
- ذخیره رمز: فقط نسخه رمزنگاریشده ذخیره میشود (base64 شامل IV||Cipher).
- کپی از تاریخچه: ابتدا تلاش برای خواندن متن؛ اگر نبود، رمزگشایی با کلید اصلی.
Pull Request خوشآمد است! لطفاً قبل از ارسال PR، تغییرات را بهصورت خلاصه در توضیحات بنویسید.
این پروژه تحت لایسنس MIT منتشر شده است. جزئیات در فایل LICENSE
موجود است.
اگر این پروژه برایتان مفید بود، لطفاً ⭐️ بدهید. ممنون از حمایت شما!
- Strong password generation with customizable options (upper/lower/numbers/symbols)
- Difficulty presets and a live strength badge
- Beautiful modal with Save/Copy/Regenerate actions and toast notifications
- Local history with copy/delete/clear; SHA-256 stored; optional Secure Save (AES‑GCM) where plaintext is not stored
- Loader, lightweight particle background, RTL-friendly UI
- PWA (service worker + manifest) and Vite-powered dev/build
- Randomness and hashing use Web Crypto API (getRandomValues, SHA-256). Optional Secure Save encrypts entries with AES‑GCM using a user-derived key (PBKDF2, SHA‑256, 150k iters). Clipboard works on HTTPS/localhost only.
- Clipboard API requires secure context (HTTPS or localhost). A fallback copy method is included for non-secure contexts.
npm install
npm run dev # start Vite dev server
npm run build # build for production
npm run preview # preview production build locally
- Tailwind CSS, Vanilla JavaScript
- Web Crypto API (SHA-256, secure randomness)
- PWA (Service Worker, Manifest)
- Vite (development and build)
- Create repo, then push:
git init
git add .
git commit -m "feat: initial release (Tailwind + Vite + PWA)"
git branch -M main
git remote add origin <YOUR_REPO_URL>
git push -u origin main
- Enable Pages: GitHub → Settings → Pages → Build from branch →
gh-pages
or use Actions to deploydist/
.
For simple manual deploy, you can use peaceiris/actions-gh-pages
in CI or run:
npm run build
git subtree push --prefix dist origin gh-pages
- Keep the footprint small and the UI snappy. If adding security features, include a brief threat model in your PR. Maintain accessibility and RTL support.
90b0267bb542127759cf6f33cd61e8b7cf9e056f