مشخصات عمومی پروژه
| عنوان | اطلاعات |
|---|---|
| تاریخ شروع پروژه | ۲۲ خرداد ۱۴۰۵ (برابر با ۱۲ ژوئن ۲۰۲۶، بر اساس اولین ثبت در Git) |
| پلتفرمهای هدف | موبایل (اندروید هدف اصلی)، معماری آماده برای iOS و سایر سیستمعاملها |
| وضعیت فعلی | آماده برای انتشار (Production-Ready) در حوزه قابلیتهای آفلاین و محلی |
فناوریها، زبانها و کتابخانهها
- Dart (SDK ≥3.2.0, <4.0.0)
- Flutter + Material Design
- Flutter BLoC 8.1.6 (Cubit)
- sqflite 2.3.0 (DB v10)
- flutter_secure_storage 10.3.1
- shamsi_date، uuid، intl
- pdf، excel، share_plus
مقدمه کوتاه
اپلیکیشن «دوره» یک دستیار هوشمند و کاملاً محلی (Offline-first) برای مدیریت صندوقهای قرعهکشی و قرضالحسنه خانوادگی، دوستانه، کاری و محلی است. این برنامه به مدیران صندوقها اجازه میدهد بدون نیاز به دفاتر کاغذی یا فایلهای اکسل پیچیده، تمامی امور مربوط به ثبت اعضا، تعریف سهمها، نوبتبندی، ثبت دقیق تراکنشها، ضمیمه کردن عکس رسیدها و صدور گزارشهای شکیل را بهصورت کاملاً امن و آفلاین انجام دهند.
هدف پروژه و چالشهای حلشده
صندوقهای قرضالحسنه دورهای یا چرخشی (ROSCA) در فرهنگ ایرانی جایگاه ویژهای در تأمین مالی خرد دارند. مدیریت سنتی این صندوقها چالشهای زیر را دارد که «دوره» برای حل آنها طراحی شده:
محاسبه مانده بدهی، موجودی نقد واقعی و پرداختیهای ناقص بهصورت آنی و ۱۰۰٪ دقیق انجام میشود.
سهمهای کسری (نیمسهم و چندسهم) بهصورت هوشمند در گروههای قرعهکشی یکپارچه میشوند.
گزارشهای دقیق PDF و خروجی اکسل شفافیت را به حداکثر میرسانند.
سیستم بازیابی و پشتیبانگیری محلی و خروجی همهجانبه اکسل این ریسک را خنثی میکند.
مدیریت جابهجایی و خروج اعضا: سیستم جایگزینی اعضا تغییر عضو در میانه راه را بدون آسیب به محاسبات دورههای قبل، بهطور نظاممند مدیریت میکند.
کاربران هدف
- مدیران و هماهنگکنندگان صندوقهای خانگی و خانوادگی: پیگیری واریز اقساط و پرداخت وام صندوقهای اقوام
- گروههای پسانداز دوستانه و همکاران کارگاهی/اداری: دورههای پسانداز ماهانه مبتنی بر اعتماد متقابل
- مسئولان حسابداری غیررسمی محلهها: صندوقهای خیریه محلی یا وامهای خرد مساجد و مجتمعها
- اعضای صندوقها: دریافت گزارشهای فردی یا جامع و آگاهی از وضعیت تعهدات
قابلیتهای اصلی پیادهسازیشده
- مدیریت چند صندوق همزمان: تعریف و مدیریت موازی چندین صندوق با مشخصات اختصاصی
- ثبت مستقل اشخاص: بانک اطلاعاتی مرکزی افراد، مستقل از صندوقها
- پشتیبانی از سهمهای اعشاری: تخصیص سهمهایی مانند 0.5، 1.0، 1.5، 2.0
- گروهبندی هوشمند سهمهای کسری: تجمیع اعضای نیمسهم با مجموع سهم ۱.۰ برای نوبت عادلانه
- قرعهکشی و نوبتبندی خودکار: توزیع تصادفی نوبتها در زمان پیشنویس صندوق
- ویرایش و جابهجایی دستی نوبتها (Drag & Drop): پیش از فعالسازی نهایی صندوق
- ثبت پرداختهای اعضا با مشخصات کامل: روش پرداخت، یادداشت و الصاق تصویر فیش واریزی
- محاسبه هوشمند دورهها: تعیین خودکار شماره دوره بر اساس تاریخ پرداخت و طول چرخه
- پرداخت وام برندگان بهصورت اقساطی: پرداخت در چندین تراکنش مجزا بر اساس موجودی واقعی
- کنترل خودکار سقف پرداخت وام: ممانعت از پرداخت فراتر از موجودی واقعی صندوق
- سیستم جایگزینی عضو فعال: حفظ تراکنشهای گذشته، انتقال تعهدات آینده و اولویت وام به عضو جدید
- پشتیبانگیری و بازیابی پیشرفته محلی: فایل .db با هدر امنیتی، نسخه امنیتی موقت و Rollback خودکار
- خروجی اکسل پیشرفته چندبرگهای: برگههای مجزا برای صندوقها، اعضا، سهام، پرداختها، تراکنشها، حسابرسی و تنظیمات
- قفل امنیتی پیشرفته: پینکد اختصاصی و احراز هویت بیومتریک، ذخیرهسازی در بخش رمزنگاری سختافزاری
گزارشهای PDF راستبهچپ (RTL)
خلاصه وضعیت مالی، مشخصات عمومی، اعضا، پرداختها، وضعیت نوبتها، سوابق جایگزینی و امضای نهایی.
کلیه تراکنشهای واریزی، وضعیت سهم در نوبتهای وام و بدهی باقیمانده.
نحوه عملکرد برنامه و جریان کاری
۱. فاز پیشنویس (Draft)
هیچ تراکنش مالی در این فاز ثبت نمیشود.
۲. فاز فعال (Active)
با فشردن دکمه فعالسازی، ساختار اعضا، سهمها و قرعهکشی نوبتها قفل میشود. از این پس، مدیر صرفاً پرداخت اقساط اعضا و پرداخت وام به برندگان نوبتها را ثبت میکند.
۳. فاز پایانیافته (Completed)
پس از واریز تمامی اقساط و پرداخت کامل وام آخرین نوبت، صندوق پایان یافته تلقی میشود و بخش ثبت تراکنش مالی غیرفعال و قفل میگردد؛ اطلاعات صرفاً جهت مشاهده و گزارشگیری باقی میمانند.
دادهها و اطلاعات مدیریتشده
- مشخصات اشخاص: نام، تلفن، ایمیل، یادداشت
- پیکربندی صندوق: نام، مبلغ قسط، تاریخ شروع، نوع چرخه
- سهمها: تخصیص اعضا و مقدار سهم
- واریزی اقساط: مبلغ، تاریخ، روش، تصویر فیش، توضیحات
- پرداخت وام: مبالغ تخصیصیافته، تاریخ، توضیحات
- تنظیمات بومیسازی: زبان، جهت متن، تقویم، واحد پول، فونت
- شناسههای یکتا (UUIDs) برای تمامی رکوردها
- دورههای محاسباتی (Payment Cycles)
- نوبتهای قرعهکشی با وضعیت waiting/paid/partiallyPaid
- لاگهای تغییرات (Audit Logs) با برچسب زمانی
- فایلهای .db، .xlsx و .pdf
حریم خصوصی و امنیت
اپلیکیشن دوره با رویکرد «امنیت محلی اول (Local-first Security)» طراحی شده است.
- ذخیرهسازی آفلاین: تمامی تراکنشها، بدهیها و موجودی صندوق صرفاً بر روی دستگاه کاربر ذخیره میشوند؛ هیچ داده مالی به سرور خارجی ارسال نمیشود.
- رمزنگاری اطلاعات امنیتی: کدهای PIN و تنظیمات بیومتریک از طریق flutter_secure_storage با Keystore اندروید / Keychain iOS نگهداری میشوند.
- پشتیبانگیری ایمن: پیش از بازیابی، نسخه پشتیبان موقت .restore_bak تهیه میشود تا در صورت خطا، دیتابیس قبلی بدون آسیب بازیابی شود.
- جداسازی تصاویر: تصاویر رسیدها در پوشه اختصاصی attachments/ ذخیره و فقط مسیر آنها در دیتابیس ارجاع داده میشود.
بومیسازی و پشتیبانی از زبانها
- پشتیبانی دوزبانه: ترجمه کامل به فارسی (FA) و انگلیسی (EN) بدون نیاز به اینترنت
- پشتیبانی RTL: چیدمان کامل عناصر و جداول متناسب با زبان انتخابی
- تقویم دوگانه: جلالی (شمسی) و میلادی
- فرمت اعداد و ارزها: لاتین یا فارسی، جداکننده هزارگان، واحد پول دلخواه
- قلمهای گزارش PDF: وزیر متن (Vazirmatn) و پرستو (Parastoo)
رابط کاربری و تجربه کاربری
- سبک بصری شیشهای (Glassmorphism): کارتهای شفاف، افکت بلور و سایههای نرم
- تم پویا و ریسپانسیو: هماهنگ با حالت روشن و تیره سیستمعامل
- کارتهای خلاصه مالی: نمایش شاخصهای مهم با ریزانیمیشنهای واکنشگرا
- رابط نوبتدهی آسان: کشیدن و تغییر دستی اولویت نوبتها به صورت بصری
ویژگیهای پشتیبانگیری، خروجی و گزارشگیری
- خروجی اکسل چندبرگهای: کل اطلاعات دیتابیس در ۷ جدول منظم برای بررسی آماری
- پشتیبانگیری دستی: ذخیره کل دیتابیس با پسوند .db و ارسال دستی به پیامرسان یا فضای ابری شخصی
- گزارشهای چاپی PDF: گزارش جامع با ۸ بخش شمارهگذاریشده، مناسب چاپ A4
خلاصه معماری فنی
اپلیکیشن دوره بر پایه معماری تمیز (Clean Architecture) در سه لایه توسعه یافته است:
موجودیتهای خالص Dart (مثل Person، Fund) و Repository Interfaces، بدون وابستگی به Flutter.
پیادهسازی واقعی مخازن روی SQLite؛ مدیریت migration و اعتبارسنجی قوانین داده.
صفحات، ویجتها و Cubitها برای مدیریت لایههای وضعیت.
معماری پایگاه داده محلی
پایگاه داده در نسخه ۱۰ توسعه یافته است؛ draw_payout_transactions در نسخه ۹ برای پرداختهای چندمرحلهای اضافه شده، و محدودیت PRAGMA foreign_keys = ON انسجام دادههای مالی را حفظ میکند.
محدودیتها و موارد خارج از محدوده تعمدی
- عدم همگامسازی ابری خودکار: برنامه ۱۰۰٪ محلی است؛ پیادهسازی گوگل درایو فقط Placeholder غیرفعال است.
- تصاویر پیوست در بکاپ نیستند: فایل .db فقط متن و محاسبات را ذخیره میکند؛ تصاویر باید دستی منتقل شوند.
- نبود سیستم پیامکی/نوتیفیکیشن خودکار: یادآوری اقساط باید دستی انجام شود.
- قفل تغییرات پس از فعالسازی: پس از اولین تراکنش، تعداد اعضا و سهمها کاملاً قفل میشود (مگر با جایگزینی رسمی عضو).
- تداخل کتابخانههای ویندوز: File Picker در ویندوز به دلیل ناسازگاری با share_plus غیرفعال است.
- رندرینگ نیمفاصله (ZWNJ): در برخی نمایشگرهای PDF ممکن است به فاصله کامل نمایش یابد.
قابلیتهای تکمیلشده و موارد در دست اقدام
- مدیریت محلی صندوق و اشخاص
- گروهبندی سهمهای کسری برای نوبتدهی
- قرعهکشی تصادفی و جابهجایی دستی نوبتها
- ثبت پرداختها و الصاق رسید تصویری
- پرداخت وام اقساطی بر اساس مانده صندوق
- تعویض و جایگزینی اعضا با انتقال تعهدات
- گزارشهای PDF و خروجی اکسل چندبرگهای
- پشتیبانگیری محلی و بازیابی امن
- قفل پینکد با ذخیرهساز سختافزاری
- اتصال واقعی به گوگل درایو برای پشتیبانگیری ابری
- پشتیبانگیری فشرده (ZIP) شامل تصاویر پیوست
- رندر تصاویر فیش رسیدها در انتهای گزارش PDF
- فیلتر زمانی تراکنشها در گزارشها
- یادآوری پرداخت از طریق پیامک یا پیامرسانهای بومی
توضیحات بازاریابی عمومی
با دفاتر کاغذی و خطاهای محاسباتی خداحافظی کنید!
اپلیکیشن «دوره»؛ دستیار هوشمند و آفلاین شما برای مدیریت آسان و بدون دردسر صندوقهای قرعهکشی و قرضالحسنه خانوادگی، دوستانه و محلی.
دوره بهصورت کاملاً آفلاین کار میکند؛ دادههای مالی شما فقط در گوشی خودتان ذخیره میشود. شما میتوانید اعضا را اضافه کنید، سهمهای کامل یا نیمسهم ثبت کنید، نوبتها را عادلانه قرعهکشی کنید، رسیدهای بانکی را ضمیمه کنید و در هر زمان گزارشهای شکیل PDF تولید کرده و با اعضای صندوق به اشتراک بگذارید.
خلاصه نهایی و ارزش افزوده
اپلیکیشن «دوره» نمونهای موفق از پیادهسازی اصول مهندسی نرمافزار در قالب یک ابزار مالی خرد است. ارزش اصلی این برنامه در سادهسازی فرآیندهای پیچیده مالی (سهمهای اعشاری، جایگزینی اعضا، پرداختهای اقساطی) بدون درگیر کردن کاربر با مفاهیم سخت حسابداری است.
با تکیه بر ساختار آفلاین، این اپلیکیشن پایداری بالا، سرعت فوقالعاده و حریم خصوصی کاملی را به کاربران هدیه میدهد و بستری مطمئن برای مدیریت صندوقهای قرضالحسنه در هر مقیاس خانوادگی و محلی فراهم میسازد.