بازنویسی و تلفیق محتوای سه سند پیوستشده
تاریخ تهیه سند: ۴ تیر ۱۴۰۵ / ۲۵ ژوئن ۲۰۲۶
رقمی (Raqami) یک اپلیکیشن اندرویدی آفلاین برای ثبت، سازماندهی، نمایش و اشتراکگذاری اطلاعات حسابها و کارتهای بانکی در قالب کارتهای دیجیتال زیباست. کاربر اطلاعاتی مانند نام صاحب حساب، بانک، شماره حساب، شماره شبا/IBAN و در صورت نیاز شماره کارت را یکبار وارد میکند و سپس میتواند آن را بهصورت کارت گرافیکی، تصویر، PDF یا QR مشاهده، ذخیره یا ارسال کند.
رقمی یک اپلیکیشن بانکی، کیف پول، درگاه پرداخت یا ابزار انتقال وجه نیست و هیچ ارتباطی با شبکه بانکی یا سرور خارجی برقرار نمیکند. ارزش اصلی آن در نظمدهی به اطلاعات پرداخت، کاهش خطای تایپ، سرعت در اشتراکگذاری، حفظ دادهها روی دستگاه و ارائه یک ظاهر حرفهای برای اطلاعات حساب است.
بر اساس سه سند بررسیشده، پروژه از نظر هسته اصلی محصول، معماری، صفحات اصلی، مدل داده، خروجیگیری، قفل برنامه، پشتیبانگیری رمزدار و پشتیبانی فارسی/انگلیسی به سطح قابل استفاده رسیده است؛ با این حال، برخی موارد مانند بومیسازی چند متن hard-coded، استفاده کامل از تنظیمات پیشفرض کاربر، و همراستاسازی برخی فیلدهای مدل داده با رابط کاربری هنوز نیازمند بازبینی نهایی هستند.
| عنوان | اطلاعات یکپارچهشده |
|---|---|
| نام پروژه / اپلیکیشن | رقمی — Raqami |
| تاریخ شروع قابل احراز | ۱۲ ژوئن ۲۰۲۶ / ۲۳ خرداد ۱۴۰۵، بر اساس نخستین commit در مخزن Git |
| نسخه گزارششده | 1.0.0 / versionCode 1 (نیازمند تأیید نهایی مخزن فعلی) |
| سکوی هدف | Android، دستگاههای موبایل و تبلت با Android 8.0 / API 26 و بالاتر |
| وضعیت فعلی | V1 توسعهیافته با هسته اصلی قابل استفاده؛ در انتظار بازبینی و تأیید دستی جزئیات |
| زبانهای برنامه | فارسی و انگلیسی، با پشتیبانی کامل از RTL/LTR |
| ماهیت برنامه | Local-only / Offline (بدون اتصال به اینترنت یا شبکه بانکی) |
| حوزه | فناوری / ابزار |
|---|---|
| زبان برنامهنویسی | Kotlin (نسخه 2.0.21 گزارش شده در پروژه) |
| رابط کاربری | Jetpack Compose, Material Design 3, AndroidX Navigation Compose |
| معماری | MVVM + Clean Architecture با لایههای Presentation, Domain و Data |
| تزریق وابستگی | Hilt |
| پایگاه داده محلی | Room Database (نسخه دیتابیس گزارششده: ۹، به همراه Migrationها و KSP) |
| مدیریت وضعیت | ViewModel, Lifecycle, StateFlow و Kotlin Coroutines |
| امنیت | AndroidX Security Crypto, EncryptedSharedPreferences, Android Keystore, Android BiometricPrompt |
| QR Code | ZXing Core |
| تصویر و لوگو | Coil Compose و مدیریت فایل داخلی برنامه |
| خروجی و اشتراکگذاری | Canvas / Bitmap, Android PdfDocument, MediaStore, FileProvider و Android Share Sheet |
| ابزار ساخت | Gradle Kotlin DSL, Android Gradle Plugin, JVM 17 |
| SDK هدف | minSdk 26, targetSdk 35, compileSdk 35 |
رقمی یک دستیار شخصی برای مدیریت اطلاعات بانکی است. بهجای نگهداشتن شماره حسابها در یادداشتهای پراکنده، پیامهای قدیمی یا اسکرینشاتهای نامنظم، کاربر میتواند همه اطلاعات پرداخت خود را در محیطی منظم و آفلاین ذخیره کند. هر حساب یا کارت در قالب یک کارت دیجیتال با طراحی گرافیکی نمایش داده میشود و در زمان نیاز میتوان آن را بهصورت تصویر، PDF یا کد QR خروجی گرفت.
این برنامه مخصوص انجام تراکنش نیست؛ یعنی موجودی حساب را نشان نمیدهد، به بانک متصل نمیشود، انتقال وجه انجام نمیدهد و درگاه پرداخت ندارد. رقمی فقط اطلاعاتی را مدیریت میکند که خود کاربر وارد کرده است و تمرکز آن بر نظم، سرعت، زیبایی، حریم خصوصی و کاهش خطا در اشتراکگذاری اطلاعات پرداخت است.
در زندگی روزمره، کاربران بارها نیاز دارند اطلاعات حساب یا کارت خود را برای دیگران ارسال کنند؛ برای دریافت مبلغ از مشتری، ارسال شماره حساب به دوست یا خانواده، ارائه اطلاعات به کارفرما، یا دریافت پرداخت برای خدمات کوچک و فریلنسری. روشهای معمول، مانند تایپ دستی، کپی از پیامهای قدیمی، ذخیره در Notes یا نگهداری تصویر کارت در گالری، هم نامنظم هستند و هم احتمال خطا و افشای ناخواسته اطلاعات را افزایش میدهند.
رقمی با ایجاد یک ساختار واحد برای ذخیره و نمایش اطلاعات پرداخت، این مشکلات را سادهتر میکند. کاربر یک بار اطلاعات را وارد میکند، برنامه آنها را دستهبندی و اعتبارسنجی میکند، و در زمان نیاز خروجی آماده و خوانا ارائه میدهد. اهداف اصلی پروژه عبارتند از:
رقمی برای افرادی طراحی شده که چند حساب یا کارت دارند و میخواهند اطلاعات بانکی خود را منظم، سریع و امنتر مدیریت کنند. تمرکز اسناد روی کاربران ایرانی و منطقه خلیج فارس، بهویژه امارات متحده عربی، دیده میشود؛ اما ساختار کشور، بانک و IBAN میتواند برای استفاده گستردهتر نیز توسعه یابد.
| فیلد اطلاعاتی | وضعیت و توضیح عملکردی |
|---|---|
| نام صاحب حساب | فیلد اصلی و اجباری؛ مورد استفاده در نمایش و جستوجو |
| کشور | انتخابی از فهرست کشورها؛ مبنای اعتبارسنجیهای ساختار IBAN |
| بانک | انتخاب از بانکهای پیشفرض سیستم یا ایجاد بانک سفارشی |
| شماره حساب | فیلد عددی/متنی مورد استفاده در نمایش و اشتراکگذاری |
| شماره شبا / IBAN | اعتبارسنجیشده بر اساس استاندارد ملی؛ قابلیت اجباری شدن بر اساس کشور |
| شماره کارت | اختیاری؛ جهت تشخیص شبکه کارت و رندر روی کارت گرافیکی |
| یادداشت (Note) | اختیاری و کاملاً داخلی؛ از خروجیهای عمومی حذف میشود |
| دستهبندی | اختیاری (مانند: شخصی، خانواده، کاری، تجاری، مشتریان) |
| جهت کارت | امکان تنظیم روی RTL یا LTR بهصورت مستقل از زبان کل اپلیکیشن |
کد QR رندر شده در پشت کارت جهت انتقال سریع اطلاعات غیرحساس پرداخت (نام، بانک، شماره حساب و IBAN) استفاده میشود. اطلاعات ممنوعه (مانند رمز عبور و CVV) تحت هیچ شرایطی وارد ساختار QR نمیشوند.
جریان تعاملی کاربر در اپلیکیشن از گام اول تا استفاده مستمر به شرح زیر است:
| صفحه / ماژول | نقش و وظیفه عملیاتی در برنامه |
|---|---|
SplashScreen |
نمایش برندینگ اولیه و مسیریابی خودکار کاربر بر اساس وضعیت احراز هویت. |
OnboardingScreen |
پیکربندی اولیه زبان، ضوابط حقوقی، رمز عبور و تنظیمات بیومتریک اولیه. |
AppLockScreen |
درگاه امنیتی ورود به برنامه با پینکد یا حسگر اثر انگشت / تشخیص چهره. |
HomeScreen |
داشبورد اصلی حاوی لیست کارتها، فیلترها، قابلیت پین و دسترسی به منوی سریع. |
CardCreate / Edit |
واسط گرافیکی ایجاد و ویرایش مشخصات حساب با قابلیت اعتبارسنجی آنی فیلدها. |
CardPreviewScreen |
نمایش دو سویه کارت گرافیکی، کپی متون به حافظه موقت و مدیریت خروجیها. |
SettingsScreen |
مدیریت پارامترهای امنیتی، تم، فونت، شخصیسازی QR و هدایت به بخش پشتیبانگیری. |
ساختار مدیریت داده در اپلیکیشن رقمی به سه دسته کلی تقسیم میشود:
فلسفه اصلی امنیت در رقمی، نگهداشتن کنترل کامل دادهها در اختیار کاربر است. این اپلیکیشن بر پایه مدل Local-only توسعه یافته است. مجوز دسترسی به اینترنت (android.permission.INTERNET) در مانیفست برنامه تعریف نشده و بکآپهای خودکار ابری سیستمعامل اندروید برای این برنامه غیرفعال شدهاند تا احتمال خروج ناخواسته دادهها به صفر برسد.
مطابق ضوابط امنیتی سختگیرانه، رقمی نباید هیچ مسیر ذخیره، نمایش، خروجی یا پشتیبانگیری برای دادههای فوقحساس بانکی داشته باشد. ورود و ذخیره اطلاعات زیر در برنامه مطلقاً ممنوع است:
گذرواژه ۶ رقمی کاربر به صورت متن ساده ذخیره نمیشود و فرآیند هشینگ آن با PBKDF2WithHmacSHA256 و ۱۰۰,۰۰۰ مرتبه تکرار به همراه Salt تصادفی انجام میپذیرد. پایگاه داده اصلی در محیط امن Sandbox اندروید نگهداری میشود. اطلاعات بسیار حساس تنظیمات نیز در EncryptedSharedPreferences تحت حفاظت Android Keystore ذخیره میگردند.
برنامه به طور کامل از زبانهای فارسی و انگلیسی پشتیبانی میکند. تغییر زبان در سطح اپلیکیشن و بدون نیاز به تغییر زبان سیستمعامل مدیریت میشود. واسط کاربری فارسی به صورت کاملاً بومی با چیدمان راستبهچپ (RTL) رندر میشود، در حالی که جهت نمایش کارتها میتواند مستقل از زبان محیط برنامه تنظیم شود.
فونتهای تعبیه شده در پروژه عبارتند از: Vazirmatn، Rubik، Estedad، Noto Naskh Arabic به همراه فونتهای پیشفرض سیستم و فونتهای Monospace جهت نمایش خوانای اعداد.
طراحی واسط کاربری بر پایه Material Design 3 استوار است. در صفحه داشبورد اصلی، کارتها در قالب لیستهای بهینهسازی شده با نمایش آمار کلی در بالای صفحه چیدمان شدهاند. هر کارت حاوی منوی دسترسی سریع (سهنقطه) جهت ویرایش، اشتراکگذاری سریع (Quick Share)، تکثیر یا حذف است. فرمهای ورود اطلاعات مجهز به فیلدهای اعتبارسنجی زنده با پیامهای خطای واضح املایی و ساختاری (مانند بررسی صحت فرمت شبا) هستند.
فرآیند تولید خروجیها از طریق خطلوله رندر تصویر انجام میشود که اشیای گرافیکی Compose را به دیتای Bitmap تبدیل میکند. ابعاد تصاویر خروجی در حالت تکرو ۱۲۶۰×۷۹۵ پیکسل و در حالت خروجی دوطرفه مدمج ۱۳۸۰×۱۷۷۰ پیکسل است.
خروجیهای PDF با ابعاد استاندارد سند A4 رندر شده و از موتور داخلی اندروید بدون وابستگی به لایههای پرهزینه WebView استفاده میکنند. تمامی خروجیها پیش از فرستاده شدن به منوی اشتراکگذاری سیستمعامل، از فیلتر حذف اطلاعات داخلی (مانند یادداشتها و نامهای مستعار) عبور میکنند.
پروژه در قالب یک پکیج تکماژوله ساختاریافته و از اصول Clean Architecture تبعیت میکند:
بخشهای Onboarding، سیستم قفل بیومتریک و پین، عملیات پایهای کارت (CRUD)، موتور اعتبارسنجی MOD-97 شبا، خروجیهای تصویر و PDF، و سیستم بکآپ مجهز به رمزنگاری AES-256 به طور کامل پیادهسازی شده و پایدار هستند.
| مورد نیازمند بررسی | توضیح فنی ابهام یا نقص موجود |
|---|---|
| بومیسازی برخی رشتهها | برخی متون بخش پشت کارت، کدهای پاسخ QR و متون صفحه About همچنان به صورت هاردکد انگلیسی هستند. |
| تنظیمات پیشفرض کارت | در کلاس CardCreateViewModel برخی تنظیمات پیشفرض اعمالی از سوی کاربر نادیده گرفته میشوند. |
| فیلتر فایل بازیابی | سیستم انتخاب فایل در بخش Restore به جای فیلتر اختصاصی .rqbk از فیلتر عمومی */* استفاده میکند. |
| لوگوی بانکهای پیشفرض | در برخی از بانکهای اولیه، به جای لوگوی اصلی از تصویر موقت (Placeholder) رنگی استفاده شده است. |
رقمی — کارتهای بانکی دیجیتال شما، زیبا، منظم و امن
رقمی یک اپلیکیشن شخصی و کاملاً آفلاین برای مدیریت و اشتراکگذاری اطلاعات حسابها و کارتهای بانکی است. با رقمی میتوانید مشخصات حسابهای خود، مانند نام صاحب حساب، بانک، شماره حساب، شماره شبا و شماره کارت را در قالب کارتهای دیجیتال زیبا ذخیره کنید و هر زمان که نیاز داشتید، آنها را بهصورت تصویر، PDF یا QR به اشتراک بگذارید. دیگر لازم نیست برای پیدا کردن شماره حسابها در پیامهای قدیمی، یادداشتهای پراکنده یا اسکرینشاتهای نامنظم جستوجو کنید.
تمرکز رقمی روی سادگی، نظم و حریم خصوصی است. همه اطلاعات روی خود دستگاه شما باقی میمانند و برنامه برای کارکرد اصلی خود به اینترنت، سرور ابری یا اتصال بانکی نیاز ندارد. رقمی هیچوقت اطلاعات حساسی مانند رمز کارت، CVV، تاریخ انقضا یا رمز اینترنتی را نمیپرسد و ذخیره نمیکند. این برنامه ابزار پرداخت یا بانکداری نیست؛ بلکه یک دستیار امن و حرفهای برای نگهداری و ارائه بهتر اطلاعات بانکی شماست.
پروژه رقمی یک راهکار اندرویدی جدی، منسجم و نسبتاً کامل جهت مدیریت محلی اطلاعات پرداخت است. ترکیب معماری پاک، رابط کاربری نوین با Compose، زیرساخت امنیتی محکم و تنوع در خروجیها، این پروژه را به یک محصول کاربردی و آماده انتشار تبدیل کرده است. با برطرف کردن چند نقص جزئی در بخش بومیسازی و هماهنگی فیلدهای UI، این محصول آماده عرضه موفق در بازارهای هدف خواهد بود.
در زمان تلفیق اسناد سهگانه، تضادهای آماری و عملکردی زیر مشاهده شد که نیازمند بازبینی مستقیم کدهای منبع پیش از نهاییسازی مستندات است:
strings.xml و کلاسهای Seeder استخراج و اصلاح شوند.