نمای کلی پروژه / اپلیکیشن
| عنوان | اطلاعات |
|---|---|
| نام پروژه / اپلیکیشن | رقمی (Raqami) |
| تاریخ شروع پروژه | بر اساس نخستین commit مخزن، 2026-06-12 قابل احراز است. |
| پایگاه داده و ذخیرهسازی | Room Database نسخه فعلی 9، فایلهای داخلی برنامه، تنظیمات امن رمزگذاریشده |
| سکوی هدف | اندروید با minSdk 26، targetSdk 35 و compileSdk 35 |
فناوریها و ابزارهای استفادهشده
هسته اصلی محصول پیادهسازی شده و نسخه فعلی از نظر ساختار، صفحهها، مدل داده، خروجیگرفتن، قفل برنامه، پشتیبانگیری و چندزبانهبودن قابل استفاده است؛ با این حال اسناد داخلی مخزن نشان میدهند پروژه هنوز در حال توسعه و بازبینی دستی است.
معرفی کوتاه
رقمی یک اپلیکیشن اندرویدی آفلاین برای نگهداری، سازماندهی، نمایش و اشتراکگذاری اطلاعات کارتها و حسابهای بانکی به شکل بصری است. کاربر میتواند برای چند حساب یا کارت، اطلاعاتی مانند نام صاحب حساب، بانک، شماره حساب، شبا و در صورت نیاز شماره کارت را ثبت کند، آنها را در قالب کارتهای گرافیکی ببیند و بهصورت تصویر یا PDF ذخیره یا ارسال کند.
هدف پروژه
هدف اصلی پروژه، سادهتر کردن نگهداری و اشتراکگذاری اطلاعات بانکی و پرداختی در یک محیط محلی، زیبا و نسبتاً امن است. این پروژه مسئلهای را حل میکند که در آن کاربر برای ارسال یا نگهداری اطلاعات حسابهای مختلف خود معمولاً به یادداشتهای پراکنده، پیامرسانها، اسکرینشاتها یا فایلهای نامنظم متکی است.
رقمی تلاش میکند این اطلاعات را در یک ساختار واحد، محلی و قابل جستوجو جمع کند و در عین حال آنها را در قالبی قابل ارائهتر از متن ساده نمایش دهد.
کاربران هدف
- چند حساب یا کارت بانکی دارند و میخواهند آنها را در یک جا نگه دارند
- لازم است اطلاعات بانکی خود را گهگاه برای دیگران ارسال کنند
- به تفکیک اطلاعات بر اساس دستههایی مثل شخصی، خانوادگی، کاری، دوستان یا تجاری نیاز دارند
- میخواهند اطلاعات روی خود دستگاه بماند و وابسته به سرویس ابری نباشد
قابلیتهای اصلی
راهاندازی اولیه و ورود امن
- فرایند شروع برنامه شامل انتخاب زبان، نمایش اطلاعیه مهم، تعیین رمز عبور ۶ رقمی و فعالسازی اختیاری بیومتریک است.
- برنامه در صورت فعال بودن رمز، در اجرای بعدی با صفحه قفل باز میشود.
- باز کردن برنامه با رمز عبور و در صورت پشتیبانی دستگاه با بیومتریک انجام میشود.
- قفل خودکار در بازههای زمانی قابل تنظیم پشتیبانی میشود.
مدیریت کارتها و حسابها
- ایجاد کارت جدید با پیشنمایش زنده
- ویرایش کارت موجود
- حذف کارت با تأیید کاربر
- تکثیر کارت
- جستوجو در کارتها بر اساس نام
- فیلتر بر اساس دستهبندی و بانک
- سنجاقکردن حداکثر ۵ کارت در داشبورد
- ثبت «نام دلخواه / Nickname» برای هر کارت
اطلاعات قابل ثبت برای هر کارت
مدیریت دادههای پایه
فهرست اولیه ۲۰ کشور بذرگذاری میشود و امکان افزودن رکوردهای سفارشی نیز وجود دارد.
۲۰ بانک از پیش تعریفشده برای ایران و امارات؛ امکان افزودن، ویرایش، فعال/غیرفعالسازی و بارگذاری لوگو.
۶ دستهبندی پیشفرض با امکان ایجاد دستهبندی سفارشی (نام فارسی/انگلیسی، آیکون، رنگ، وضعیت فعال).
نمایش بصری کارت
- کارتها با طراحی گرافیکی تولید میشوند و پیشنمایش زنده دارند
- برای ظاهر کارت از بذر طراحی (designSeed) استفاده شده تا طرح قابل تکرار و پایدار بماند
- کاربر میتواند طرح ظاهری را دوباره تولید کند
- چند فونت برای ظاهر کارت در پروژه وجود دارد و فونت پیشفرض از تنظیمات خوانده میشود
- جهت کارت مستقل از زبان رابط کاربری است
خروجی، ذخیره و اشتراکگذاری
- ذخیره خروجی تصویری PNG از روی کارت و ذخیره PDF
- اشتراکگذاری تصویر یا PDF از طریق Android share sheet
- انتخاب سمت جلو، پشت یا هر دو سمت برای خروجی
- ذخیره تصویر در گالری دستگاه و PDF در مسیر Downloads/Raqami
- قابلیت Quick Share از منوی کارتهای داشبورد با استفاده از تنظیمات پیشفرض کاربر
پشتیبانگیری و بازیابی
- ساخت فایل پشتیبان با پسوند .rqbk و تعیین رمز برای آن
- بازیابی از فایل پشتیبان با دریافت رمز
- ساخت backup ایمنی داخلی پیش از restore
- بازیابی بهصورت جایگزینی کامل دادههای فعلی
چندزبانه و بومیسازی
- پشتیبانی از فارسی و انگلیسی با پیکربندی locale در سطح اپ
- پشتیبانی از رابط راستبهچپ و چپبهراست
- ۵۰۰ کلید متنی در هر دو فایل strings.xml و values-fa/strings.xml
نحوه کار برنامه
جریان کلی استفاده
- کاربر در اولین اجرا زبان را انتخاب میکند، اطلاعیه را میخواند، رمز تعریف میکند و در صورت تمایل بیومتریک را فعال میکند.
- وارد داشبورد میشود و فهرست کارتهای ذخیرهشده را میبیند.
- با دکمه افزودن، کارت جدید میسازد و همزمان پیشنمایش کارت را مشاهده میکند.
- میتواند کارت را باز کند، جزئیات را ببیند، آن را ویرایش کند، کپی کند، سنجاق کند یا سریع به اشتراک بگذارد.
- از بخش تنظیمات و اطلاعات پایه، بانکها، کشورها، دستهبندیها، زبان، امنیت و رفتار اشتراکگذاری سریع را مدیریت میکند.
- در صورت نیاز، از دادههای خود فایل پشتیبان میسازد یا از فایل قبلی restore انجام میدهد.
صفحهها و بخشهای مهم
منطق تجاری مهم
- اعتبارسنجی شبا بر اساس کشور انجام میشود و بعضی کشورها مانند ایران نیازمند شبا هستند.
- تکراری بودن بعضی دادهها مانند شماره کارت، شبا و ترکیب شماره حساب + بانک کنترل میشود.
- بانکهای غیرفعال در فرم ساخت کارت نمایش داده نمیشوند.
- بانکها و دستهبندیهای پیشفرض حذف سخت ندارند و بیشتر با غیرفعالسازی مدیریت میشوند.
- سمت کارت (RTL/LTR) مستقل از زبان برنامه است.
- QR برای خروجیهایی که سمت پشت را شامل میشوند با هشدار حریم خصوصی همراه است.
دادهها و اطلاعاتی که برنامه مدیریت میکند
- نام صاحب حساب، کشور، انتخاب بانک
- شماره حساب، شبا، شماره کارت
- یادداشت، نام دلخواه داخلی، دستهبندی
- رنگ/نام/لوگوی بانک سفارشی
- نام، آیکون و رنگ دستهبندی سفارشی، داده کشور سفارشی
- شناسههای داخلی رکوردها
- زمان ایجاد و ویرایش
- بذر طراحی کارت، وضعیت سنجاقشدن
- فایلهای خروجی PNG و PDF
- فایل پشتیبان رمزگذاریشده، فایل لوگوی بانک
حریم خصوصی و امنیت
رفتار کلی حریم خصوصی
- برنامه آفلاین طراحی شده و در AndroidManifest مجوز اینترنت تعریف نشده است.
- دادهها بهصورت محلی روی دستگاه نگهداری میشوند.
- cloud backup و device transfer سیستمعامل برای این برنامه غیرفعال شدهاند.
حفاظت از دسترسی
- رمز عبور در متن ساده ذخیره نمیشود؛ از PBKDF2WithHmacSHA256 با ۱۰۰,۰۰۰ iteration و salt تصادفی استفاده شده است.
- دادههای امنیتی در EncryptedSharedPreferences نگهداری میشوند.
- بیومتریک از طریق BiometricPrompt و فقط در صورت پشتیبانی دستگاه استفاده میشود.
حفاظت از فایلها و دادهها
- پایگاه داده اصلی از Room استفاده میکند؛ SQLCipher برای رمزگذاری مستقیم دیتابیس در کد فعلی دیده نمیشود.
- فایلهای لوگو، خروجی و backup در ساختار فایل داخلی برنامه نگهداری میشوند.
- اشتراکگذاری فایلها از طریق FileProvider انجام میشود.
- فایل پشتیبان با AES-GCM رمز میشود؛ فرمت backup مبتنی بر رمز کاربر و قابلحمل بین دستگاههاست.
دادههای حساسی که طبق کد ذخیره نمیشوند
بومیسازی و پشتیبانی زبانی
- دو زبان fa و en در locales_config.xml تعریف شدهاند.
- رابط کاربری توانایی کار در حالت راستبهچپ را دارد و جهت کارت مستقل از جهت رابط است.
- فایلهای ترجمه در app/src/main/res/values/strings.xml و values-fa/strings.xml نگهداری میشوند و هر دو ۵۰۰ رشته متنی دارند.
رابط کاربری و تجربه کاربری
رابط کاربری برنامه با Jetpack Compose و Material 3 ساخته شده و مبتنی بر صفحههای مدرن موبایلی است. هویت بصری برنامه بر کارتهای گرافیکی، لوگوی بانک، رنگ برند، فونتهای چندگانه و پیشنمایش زنده تکیه دارد.
- ساخت کارت با پیشنمایش همزمان
- داشبورد با جستوجو و فیلتر، حذف با تأیید
- منوی عملیاتی برای هر کارت
- صفحههای مدیریت مجزای بانک، کشور و دستهبندی
- پیامهای Snackbar برای بازخورد
- حفظ جهت صحیح نمایش اعداد حساس مانند شماره حساب و شبا
خروجی، اشتراکگذاری، پشتیبان و بازیابی
- خروجی تصویر PNG و خروجی PDF
- اشتراکگذاری فایل از طریق share sheet اندروید
- ذخیره تصویر در Gallery و PDF در Downloads
- Quick Share از داشبورد
- ساخت backup رمزدار و restore از backup
- قابلیت چاپ غیرفعال است؛ PrintHelper.kt فقط بهعنوان فایل باقیمانده نگه داشته شده.
- گزارشگیری تحلیلی، import/export به CSV یا اشتراکگذاری ابری مستقیم در کد فعلی دیده نمیشود.
خلاصه معماری فنی
پروژه بهصورت یک اپلیکیشن اندرویدی تکماژوله ساخته شده و ساختار آن عملاً سه لایه اصلی دارد:
- صفحهها
- کامپوننتهای مشترک
- Navigation
- ViewModelها
- use caseها
- اعتبارسنجیها
- منطق QR
- enumها و مدلهای مفهومی
- Room entities و DAOها
- repositoryها
- seederها
- backup manager
تزریق وابستگی با Hilt انجام میشود و وضعیتهای UI عمدتاً با StateFlow مدیریت میشوند. این ساختار برای نگهداری، توسعه و تفکیک مسئولیتها مناسب است.
محدودیتها و موارد عمداً خارج از دامنه
- برنامه به بانکها متصل نمیشود و امکان تراکنش مالی، پرداخت، انتقال وجه یا دریافت موجودی وجود ندارد.
- دادهها بهصورت cloud sync همگام نمیشوند.
- اطلاعات فوقحساس بانکی مثل PIN و CVV عمداً خارج از دامنه نگهداری شدهاند.
- theme preference در مدل تنظیمات وجود دارد، اما در رابط فعلی کنترل فعال مستقیمی برای مدیریت تم مشاهده نمیشود.
- بعضی قابلیتهای پیشبینیشده در مدل داده، مانند مدیریت کامل برچسبها یا انتخاب فیلدهای QR، در UI فعلی کامل عرضه نشدهاند.
قابلیتهای تکمیلشده و موارد در انتظار
- onboarding
- قفل برنامه با رمز و بیومتریک
- ایجاد، ویرایش، حذف و تکثیر کارت
- داشبورد با جستوجو، فیلتر، سنجاق و Quick Share
- مدیریت بانکها، کشورها و دستهبندیها
- ذخیره/اشتراکگذاری PNG و PDF
- backup و restore رمزدار
- چندزبانهبودن فارسی و انگلیسی
- انتخاب فیلدهای QR در UI کامل دیده نمیشود
- فیلد tags در فرم فعلی کارت قابل استفاده عمومی نیست
- برخی اسناد داخلی با کد فعلی کاملاً منطبق نیستند
- چند مورد محدود از متون hardcoded یا ناهماهنگی بومیسازی
توضیح عمومی و معرفی مناسب برای انتشار
رقمی یک اپلیکیشن اندرویدی آفلاین برای ثبت، مرتبسازی و نمایش زیباتر اطلاعات حسابها و کارتهای بانکی است. این برنامه به کاربر کمک میکند اطلاعاتی مثل نام صاحب حساب، بانک، شماره حساب، شبا و شماره کارت را بهصورت منظم و در قالب کارتهای بصری نگهداری کند و در زمان نیاز، آنها را به شکل تصویر یا PDF ذخیره یا ارسال کند.
تمرکز رقمی روی سادگی، نظم، استفاده محلی و آگاهی از حریم خصوصی است. این برنامه قرار نیست جایگزین اپ بانکی یا ابزار پرداخت باشد؛ بلکه یک ابزار شخصی برای مدیریت و ارائه بهتر اطلاعات بانکی است، بهویژه برای کاربرانی که با چند حساب، چند بانک یا چند زمینه کاری مختلف سروکار دارند.
جمعبندی نهایی
رقمی در وضعیت فعلی، یک پروژه اندرویدی نسبتاً کامل و جدی برای مدیریت محلی اطلاعات بانکی و پرداختی است. ارزش اصلی آن در ترکیب چند نکته است: نگهداری آفلاین، نمایش بصری کارتها، امنیت در سطح قفل برنامه و backup رمزدار، و توانایی ذخیره و اشتراکگذاری اطلاعات در قالبی مرتب و قابل فهم.
این پروژه برای انتشار عمومی نیاز به ادعای اغراقآمیز ندارد؛ چون حتی در همین وضعیت هم یک ابزار کاربردی، ساختیافته و از نظر معماری قابل اتکا به نظر میرسد. در عین حال، برای نسخه کاملاً نهایی، بهتر است اسناد داخلی، چند مورد بومیسازی باقیمانده و قابلیتهای نیمهنمایان در مدل داده با کد واقعی کاملاً همراستا شوند.