نمای کلی پروژه
| عنوان | اطلاعات |
|---|---|
| تاریخ شروع پروژه | ۲۳ خرداد ۱۴۰۵ (برابر با ۱۲ ژوئن ۲۰۲۶ میلادی، بر اساس نخستین commit در Git) |
| سکوی هدف | سیستمعامل اندروید — موبایل و تبلت با اندروید ۸.۰ به بالا |
| وضعیت فعلی | هسته اصلی و قابلیتهای محوری پیادهسازی و با تستهای بیلد اعتبارسنجی شدهاند |
فناوریها، ابزارها و کتابخانهها
- Kotlin v2.0.21
- compileSdk / targetSdk 35
- minSdk 26
- Jetpack Compose + Material 3
- Gradle Kotlin DSL
- Hilt 2.51.1
- Room (DB v9) + KSP
- Security-Crypto + Keystore
- Coroutines / StateFlow
معرفی کوتاه
«رقمی» یک اپلیکیشن بومی اندرویدی، آفلاین و بسیار امن است که برای نگهداری، دستهبندی و به اشتراکگذاری بصری اطلاعات حسابها و کارتهای بانکی کاربران طراحی شده است. این اپلیکیشن به کاربران امکان میدهد اطلاعات کارتهای مختلف خود را در قالب کارتهای بانکی شبیهسازیشده با طراحیهای مدرن و چشمنواز ثبت کنند و در زمان نیاز، مشخصات پرداخت خود را به سرعت در قالب عکس، سند PDF یا بارکد QR برای دیگران ارسال نمایند.
هدف پروژه
در حال حاضر، اکثر افراد برای نگهداری یا ارسال اطلاعات کارتها و حسابهای خود از روشهای غیرمنظم و ناامن استفاده میکنند؛ از جمله ذخیره مشخصات در برنامههای یادداشتبرداری، فرستادن اطلاعات در شبکههای اجتماعی برای خود یا نگهداری اسکرینشاتهای نامنظم از کارتها در گالری گوشی.
تجمیع تمام اطلاعات حسابها و کارتهای بانکی در یک محیط متمرکز و به شدت منظم.
نمایش کارتها به صورت گرافیکی و شبیه به کارت فیزیکی با امکان تغییر پویای رنگ و بذر طراحی.
حذف نیاز به تایپ دستی و جلوگیری از اشتباه در کپی شمارهها با خروجیهای آماده تصویری و متنی.
تضمین عدم انتقال دادهها به سرورهای خارجی با کارکرد کاملاً آفلاین و امنسازی محلی اطلاعات.
کاربران هدف
- افرادی که کارتها و حسابهای متعددی در بانکهای مختلف دارند و میخواهند همه آنها را در یک جا مدیریت کنند.
- کسبوکارهای کوچک، فریلنسرها و افرادی که نیاز دارند اطلاعات حساب خود را در قالبهای تمیز و حرفهای برای مشتریان ارسال کنند.
- کاربرانی که به شدت روی امنیت اطلاعات شخصی و مالی خود حساس هستند و نمیخواهند اطلاعات کارتهایشان روی سرورهای ابری ذخیره شود.
- افرادی که نیاز دارند کارتهای بانکی خود را بر اساس زمینههای مختلف زندگی (شخصی، خانوادگی، کاری یا تجاری) تفکیک و فیلتر کنند.
قابلیتهای اصلی
۵.۱ امنیت و حفاظت از ورود
- ثبت رمز عبور عددی: راهاندازی اولیه اجباری با تعریف رمز عبور ۶ رقمی.
- ورود بیومتریک: استفاده از حسگر اثر انگشت یا تشخیص چهره با امکان فعال/غیرفعالسازی.
- قفل خودکار: قفل آنی یا پس از بازههای زمانی معین (بلاواسطه، ۱، ۵، ۱۵ دقیقه یا هرگز).
- محدودیت دفعات ورود ناموفق: محدودسازی پس از ۱۰ تلاش ناموفق و انتظار ۳۰ ثانیهای در برابر Brute Force.
۵.۲ مدیریت کارتها و حسابها
- افزودن و ویرایش کارت با پیشنمایش زنده
- تکثیر کارت (Duplicate) سریع
- سنجاق کردن حداکثر ۵ کارت مهم در صدر داشبورد
- جستجو و فیلتر پیشرفته + ثبت نام دلخواه (Nickname)
۵.۳ مدیریت اطلاعات پایه
| بخش | توضیح |
|---|---|
| کشورها | فهرست سیستممحور شامل ۲۰ کشور (ایران و امارات) با تنظیمات اختصاصی طول و الزامات شبا |
| بانکها | لیست اولیه ۲۰ بانک پیشفرض، افزودن بانک سفارشی، بارگذاری لوگو و رنگ برند |
| دستهبندیها | پیشفرض: شخصی، خانوادگی، کاری، دوستان، تجاری، متفرقه + امکان تعریف دسته جدید |
۵.۴ خروجیگیری و اشتراکگذاری
- خروجی تصویر PNG: روی کارت، پشت کارت یا هر دو سمت، در گالری دستگاه
- خروجی PDF: سند A4 شامل تصویر کارت، نام صاحب حساب و بند سلب مسئولیت
- اشتراکگذاری سریع (Quick Share): ارسال مستقیم بدون باز کردن جزئیات کارت
۵.۵ پشتیبانگیری و بازیابی
- پشتیبانگیری رمزگذاریشده محلی در قالب فایل .rqbk با پروتکل AES-GCM
- بازیابی امن با تایید رمز عبور و ایجاد نسخه پشتیبان خودکار پیش از اِعمال نهایی
نحوه کارکرد اپلیکیشن
جریان استفاده اولیه (Onboarding)
داشبورد و تعاملات اصلی
پس از ورود، کاربر وارد داشبورد اصلی میشود. در این بخش کارتهای ثبتشده نمایش داده میشوند. کاربر میتواند با ضربه روی منوی سه نقطه هر کارت به گزینههای مشاهده، کپی اطلاعات به حافظه موقت، ویرایش، تکثیر یا حذف دسترسی داشته باشد.
منطق تجاری مهم در کد
- اعتبارسنجی شماره شبا: الگوریتم MOD-97 هماهنگ با کدهای ISO کشورها؛ برای ایران، شبای ۲۶ کاراکتری اجباری است.
- تشخیص هوشمند شبکه کارت: شناسایی پیشوندهای ویزا و مسترکارت و نمایش لوگوی متناظر.
- عدم تعارض دادهها: جلوگیری از رکوردهای تکراری برای مشخصات کلیدی (مانند شماره حساب + بانک).
دادههای مدیریتشده توسط اپلیکیشن
- مشخصات کارت: نام صاحب حساب، شماره حساب، شماره کارت، شبا/IBAN، یادداشت اختیاری
- مشخصات بانک سفارشی: نام انگلیسی/فارسی، کد کشور، رنگ برند، لوگو
- دستهبندی سفارشی: عنوان فارسی/انگلیسی، آیکون، رنگ
- تنظیمات ورود: رمز عبور عددی ۶ رقمی
- شناسههای منحصربهفرد پایگاه داده (UUIDs/IDs)
- بذر طراحی کارت (designSeed)
- فایلهای تصاویر لوگوهای آپلودشده
- متادیتای تاریخ ایجاد/ویرایش، وضعیت سنجاق و فایلهای .rqbk
حریم خصوصی و امنیت
اپلیکیشن رقمی بر پایه فلسفه «حاکمیت کامل کاربر بر دادهها» توسعه یافته است.
۸.۱ رفتار عمومی حریم خصوصی
- بدون مجوز اینترنت: در AndroidManifest.xml مجوز دسترسی به اینترنت تعریف نشده است.
- غیرفعال بودن انتقال سیستمی: Android Cloud Backup و انتقال مستقیم دستگاه به دستگاه غیرفعال شدهاند.
۸.۲ رمزنگاری و نگهداری اطلاعات امنیتی
- رمز عبور کاربر: با PBKDF2WithHmacSHA256، ۱۰۰,۰۰۰ تکرار و نمک تصادفی هش میشود.
- فضای ذخیرهسازی امن: مقادیر هششده در EncryptedSharedPreferences با حفاظت Android Keystore.
- پایگاه داده: اطلاعات کارتها در Room ذخیره میشود؛ امنیت این بخش به sandbox سیستمعامل وابسته است.
۸.۳ قانون مطلق فیلدهای ممنوعه
بومیسازی و پشتیبانی زبانی
- پشتیبانی کامل از دو زبان: فارسی (fa) و انگلیسی (en) با بهروزرسانی آنی کل متون برنامه.
- هماهنگی کامل منابع: تقارن ساختاری کامل فایلهای strings.xml.
- RTL: رابط کاربری در حالت فارسی کاملاً راستبهچپ است.
- استقلال جهت کارت: جهت نمایش کارت کاملاً مستقل از زبان فعال اپلیکیشن است؛ اعداد همواره چپبهراست نمایش داده میشوند.
رابط کاربری و تجربه کاربری
- پیشنمایش زنده کارت: کارت گرافیکی با ابعاد ISO 7810 ID-1 که آنی تغییرات را رندر میکند.
- بذرهای طراحی گرافیکی: ۲۴ پالت رنگی گرادیان و افکتهای هندسی متنوع با دکمه «باز تولید طرح».
- جزئیات فیزیکی کارت: تراشه طلایی EMV، نماد پرداخت بدون تماس و لایه براق شبیهسازیشده.
- فونت بومی: خانواده فونت وزیرمتن (Vazirmatn) برای متون فارسی.
قابلیتهای خروجی، اشتراکگذاری و پشتیبانگیری
۱۱.۱ خروجی تصویر و سند
برنامه میتواند خروجی PNG با کیفیت بالا از روی کارت، پشت کارت یا هر دو سمت تهیه کند. PDF نیز در ابعاد A4 شامل تصویر کارت، نام صاحب حساب و بند سلب مسئولیت در مسیر Downloads/Raqami ذخیره میشود.
۱۱.۲ بارکد QR در پشت کارت
۱۱.۳ اشتراکگذاری سریع (Quick Share)
کاربران میتوانند قالب پیشفرض برای اشتراکگذاری تعیین کنند تا با فشردن دکمه اشتراکگذاری سریع، خروجی مورد نظر بدون عبور از مراحل انتخاب فرمت تولید شود.
خلاصه معماری فنی
پروژه رقمی بر اساس معماری پاک (Clean Architecture) و الگوی MVVM طراحی شده است:
تمام صفحهها با Compose؛ وضعیت با StateFlow ایمن میشود.
منطق خالص کسبوکار مانند CreateCardUseCase و IbanValidator.
Room، LogoManager و BackupManager.
محدودیتها و موارد عمداً خارج از دامنه
- عدم اتصال به شبکه بانکی: بدون استعلام موجودی، ثبت تراکنش یا اتصال به پایانه بانکی.
- عدم همگامسازی ابری: دادهها صرفاً روی همان دستگاه؛ انتقال فقط با فایل پشتیبان رمزدار.
- محدودیتهای رندر و چاپ: چاپ مستقیم حذف شده؛ PrintHelper فقط مرجع ساختار است.
- فیلدهای امنیتی: امکان ثبت تاریخ انقضا یا CVV وجود ندارد.
قابلیتهای تکمیلشده و موارد در انتظار
- Onboarding و پذیرش سلب مسئولیت
- قفل برنامه با رمز و بیومتریک
- ایجاد، ویرایش، حذف و تکثیر کارت
- بذرگذاری خودکار ۲۰ بانک پیشفرض
- فیلترینگ و جستجوی پیشرفته
- تولید PDF و تصاویر کارتها
- پشتیبانگیری و بازیابی .rqbk
- مدیریت پویای کشورها (فرم ثبت/ویرایش جدید)
- رابط مدیریت برچسبها (Tags)
- سفارشیسازی پیشرفته فیلدهای QR
- ترجمه برخی متون ثابت کارت (مانند "AUTHORIZED SIGNATURE")
توضیح عمومی جهت انتشار
مرتب، زیبا و امن؛ تمام کارتهای بانکی شما در یک جا!
«رقمی» یک ابزار شخصی و کاملاً آفلاین برای کسانی است که از نوشتن اطلاعات حسابهای بانکی خود در یادداشتهای پراکنده یا ارسال مداوم پیامهای متنی نامنظم خسته شدهاند. با رقمی، میتوانید مشخصات کارتها و حسابهای بانکی خود را به شکلی کاملاً منظم ثبت کرده و آنها را در قالب کارتهای شبیهسازیشده زیبا و گرافیکی مشاهده کنید.
امنیت و حریم خصوصی در رقمی اولویت اول است. این اپلیکیشن کاملاً آفلاین طراحی شده و هیچ نیازی به دسترسی به اینترنت ندارد. رقمی یک برنامه پرداخت نیست، بلکه دستیار هوشمند، شکیل و امن شما برای سازماندهی و اشتراکگذاری اطلاعات بانکیتان است.
جمعبندی نهایی
پروژه رقمی نمونه موفقی از توسعه یک ابزار کاربردی با کیفیت و منطبق بر اصول معماری پاک در اندروید است. ارزش اصلی این نرمافزار در سادگی کاربری، زیبایی بصری بینظیر در تولید کارتهای فرضی، و پایبندی صد در صدی به حریم خصوصی کاربران از طریق کارکرد کاملاً آفلاین و رمزنگاری محلی دادهها است.
این نرمافزار برای انتشار عمومی کاملاً آماده و قابل اتکا است. برای ارتقای نسخه به حالت تجاری کامل، تراز کردن نهایی مدلهای داده استفادهنشده (مانند برچسبها) با رابط کاربری و رفع ناهماهنگیهای کوچک در زبان متون کارت پشتی میتواند از اولویتهای فاز بعدی توسعه باشد.