گزارش تولید‌شده توسط Codex

معرفی کامل پروژه «دوره» (Doreh)

اپلیکیشن آفلاین برای مدیریت صندوق‌های پس‌انداز گروهی، صندوق‌های خانوادگی و الگوهای گردشی مشابه — مبتنی بر بررسی مستقیم کد و تاریخچهٔ Git مخزن.

Dorehنام پروژه
2026-06-12تاریخ اولین commit
Flutter · Dartفناوری اصلی
قابل استفادهوضعیت فعلی
۰۱

نمای کلی پروژه

عنواناطلاعات
نام پروژه/اپلیکیشندوره (Doreh)
تاریخ شروع پروژهبر اساس تاریخچه Git، قدیمی‌ترین commit مخزن در 2026-06-12 ثبت شده است.
پلتفرم هدفاپلیکیشن Flutter موبایل‌محور؛ اندروید و iOS پلتفرم‌های اصلی هدف. پوشه‌های web/windows/linux/macos وجود دارند اما برخی قابلیت‌ها خارج از موبایل محدود یا نیازمند بررسی بیشتر است.
وضعیت فعلی پروژهقابل استفاده و در حال توسعه/تثبیت؛ هسته اصلی پیاده‌سازی شده، اما پشتیبان‌گیری Google Drive هنوز placeholder است.

فناوری‌ها و ابزارهای اصلی

Flutter / Dartsqfliteflutter_bloc flutter_secure_storagepdfshare_plus excelfile_selectorpath / path_provider image_pickerintl / shamsi_datearabic_reshaper / bidi Vazirmatn / Parastoo
۰۲

معرفی کوتاه

«دوره» یک اپلیکیشن آفلاین برای مدیریت صندوق‌های پس‌انداز گروهی، صندوق‌های خانوادگی، صندوق‌های قرض‌الحسنه محلی و الگوهای مشابه گردشی است. این برنامه کمک می‌کند مدیر صندوق به‌جای دفتر کاغذی، فایل‌های پراکنده یا محاسبات دستی، اطلاعات اعضا، سهم‌ها، پرداخت‌ها، نوبت‌ها و گزارش‌ها را در یک محیط یکپارچه ثبت و پیگیری کند.

۰۳

هدف پروژه

هدف اصلی این پروژه، دیجیتالی‌کردن مدیریت صندوق‌های گردشی و کاهش خطاهای رایج در ثبت دستی اطلاعات مالی است. کد و مستندات موجود نشان می‌دهند که برنامه برای حل چند مسئله عملی طراحی شده است:

  • ثبت منظم اعضا و مشخصات آن‌ها
  • تعریف صندوق‌های متعدد با مبلغ سهم و چرخه پرداخت مشخص
  • مدیریت سهم‌های کامل و کسری
  • تعیین و پیگیری نوبت‌های دریافت
  • ثبت مشارکت‌های مالی اعضا و پرداخت‌های خروجی صندوق
  • تولید گزارش‌های قابل اشتراک برای مدیر یا اعضا
  • نگهداری داده‌ها به‌صورت محلی و بدون نیاز دائمی به اینترنت
۰۴

کاربران هدف

  • مدیران صندوق‌های خانوادگی و محلی
  • مسئولان پیگیری پرداخت‌ها و حساب صندوق
  • گروه‌های کوچک دوستانه، کاری یا اجتماعی که صندوق گردشی دارند
  • کاربرانی که به ابزار آفلاین و ساده برای ثبت سوابق مالی نیاز دارند
۰۵

قابلیت‌های اصلی

۵.۱ مدیریت اشخاص و اعضا

  • ثبت، ویرایش و حذف اشخاص مستقل از صندوق‌ها
  • ثبت نام، شماره تلفن، ایمیل و یادداشت؛ قالب‌بندی شماره تلفن بر اساس کشور
  • نمایش پروفایل مالی هر شخص در صندوق‌های مختلف
  • جلوگیری از ویرایش نام در صورت وجود سابقه تراکنش و از حذف در صورت عضویت فعال

۵.۲ مدیریت صندوق‌ها

  • ایجاد چند صندوق با نام، مبلغ سهم، تاریخ شروع، چرخه پرداخت، هماهنگ‌کننده و یادداشت
  • وضعیت‌های مختلف: draft، active، completed، archived
  • داشبورد صندوق‌ها با فیلتر وضعیت، مبلغ سهم، تعداد اعضا و پیشرفت پرداخت
  • محاسبه تاریخ تقریبی پایان صندوق بر اساس چرخه و تعداد سهم‌ها

۵.۳ مدیریت اعضای صندوق و سهم‌ها

  • افزودن عضو با تعداد سهم اعشاری؛ پشتیبانی از سهم‌های کسری مانند 0.25، 0.5، 1.5
  • ویرایش تعداد سهم تا پیش از شروع فعالیت مالی، حذف عضو/سهم در مرحله پیش‌نویس
  • قفل‌شدن برخی تغییرات ساختاری پس از شروع تراکنش‌ها

۵.۴ تولید گروه‌های نوبت و قرعه‌کشی

  • تولید نوبت‌ها از روی مجموع سهم‌ها؛ مجموع سهم‌ها باید عدد صحیح باشد
  • گروه‌بندی سهم‌های کسری به نوبت‌های کامل و تولید تصادفی ترتیب نوبت‌ها
  • امکان جابه‌جایی دستی ترتیب و پیشنهاد گروه‌بندی جایگزین
  • جلوگیری از بازتولید نوبت‌ها در صورت وجود نوبت‌های پرداخت‌شده

۵.۵ ثبت پرداخت‌های اعضا

  • ثبت پرداخت برای چرخه فعال؛ تشخیص چرخه از روی تاریخ و نوع تناوب
  • پشتیبانی از وضعیت paid و partiallyPaid و کنترل مبلغ بر اساس تعهد باقیمانده
  • ثبت روش پرداخت (cash یا transfer)، یادداشت و تصویر رسید

۵.۶ ثبت پرداخت‌های خروجی صندوق

  • ثبت پرداخت کامل یا مرحله‌ای به دریافت‌کننده نوبت
  • ذخیره جزئیات هر قسط در جدول مجزای draw_payout_transactions
  • علامت‌گذاری خودکار صندوق به‌عنوان تکمیل‌شده پس از پرداخت کامل همه نوبت‌ها

۵.۷ جایگزینی عضو

خروج عضو از صندوق و جایگزینی با شخص دیگر، با حفظ سابقه مالی عضو قبلی و انتقال فقط تعهدات و سهم‌های پرداخت‌نشده به عضو جدید.

۵.۸ گزارش‌گیری و خروجی
  • گزارش جامع صندوق و گزارش جداگانه برای هر عضو، به‌صورت PDF راست‌به‌چپ
  • اشتراک‌گذاری فایل PDF و خروجی کامل داده‌ها به فایل Excel چندبرگی
۵.۹ پشتیبان‌گیری و بازیابی
  • پشتیبان محلی با نام زمان‌دار و بررسی هدر SQLite هنگام بازیابی
  • نسخه امن موقت و rollback خودکار در صورت خطا

۵.۱۰ امنیت و تنظیمات

  • تعریف PIN؛ ذخیره هش PIN (نه خود PIN خام)؛ قفل دستی هنگام خروج
  • تنظیم زبان، جهت متن، تقویم، قالب تاریخ، ارز، قالب اعداد و فونت گزارش
  • پاک‌سازی داده‌های عملیاتی بدون حذف تنظیمات عمومی
۰۶

نحوه کار برنامه

  • کاربر در اولین اجرا یک PIN امنیتی تعریف می‌کند.
  • در بخش اعضا، اشخاص مورد نیاز را به بانک اطلاعاتی برنامه اضافه می‌کند.
  • یک صندوق جدید با مبلغ سهم، تاریخ شروع و نوع تناوب پرداخت می‌سازد.
  • اعضا را با تعداد سهم مشخص به صندوق اضافه می‌کند.
  • برنامه بر اساس مجموع سهم‌ها نوبت‌های دریافت را تولید می‌کند و ترتیب را تصادفی یا دستی تنظیم می‌کند.
  • پس از فعال‌شدن صندوق، پرداخت‌های دوره‌ای اعضا ثبت می‌شود.
  • هنگام رسیدن نوبت، پرداخت خروجی صندوق به‌صورت کامل یا مرحله‌ای ثبت می‌شود.
  • کاربر می‌تواند گزارش PDF، خروجی Excel و نسخه پشتیبان محلی تهیه کند.

بخش‌ها و صفحه‌های اصلی

صفحهعملکرد
Splash / ورودبررسی وضعیت PIN و هدایت به قفل یا تنظیم اولیه
Dashboardنمایش صندوق‌ها، فیلتر وضعیت و مانده واقعی صندوق‌ها
Membersمدیریت اشخاص و دسترسی به پروفایل مالی
Fund Detailچهار تب: Overview، Payout Order، Payments، Reports
Settingsتنظیمات عمومی، پشتیبان‌گیری، خروجی Excel، پاک‌سازی داده‌ها

منطق کسب‌وکار مهم

  • مجموع سهم‌ها برای تولید نوبت باید به عدد صحیح برسد.
  • سهم‌های کسری برای تشکیل نوبت‌های کامل گروه‌بندی می‌شوند.
  • پس از شروع فعالیت مالی، بخشی از عملیات ساختاری محدود می‌شود.
  • عضو جایگزین سوابق گذشته را بازنویسی نمی‌کند؛ فقط تعهدات آینده را ادامه می‌دهد.
  • مانده واقعی صندوق از تفاضل مشارکت‌های ثبت‌شده و پرداخت‌های خروجی به دست می‌آید.
۰۷

داده‌ها و اطلاعاتی که برنامه مدیریت می‌کند

جدولتوضیح
personsنام، تلفن، ایمیل، یادداشت
fundsنام صندوق، مبلغ سهم، چرخه پرداخت، تاریخ شروع، وضعیت، مسئولان، مدت
fund_membersارتباط شخص با صندوق، وضعیت/تاریخ خروج، عضو جایگزین
sharesمقدار سهم هر عضو و ارتباط با نوبت
drawsترتیب پرداخت، شماره چرخه، مبلغ و وضعیت نوبت
paymentsمبلغ، تاریخ، روش پرداخت، یادداشت، رسید، وضعیت
draw_payout_transactionsاقساط یا پرداخت‌های هر نوبت
audit_logsثبت عملیات مهم: ایجاد، ویرایش، حذف، جایگزینی، پرداخت
settingsزبان، تقویم، ارز، فرمت‌ها، فونت گزارش
توجه: داده‌های تولیدشده توسط برنامه شامل گروه‌بندی نوبت‌ها، آمار تجمعی صندوق‌ها، مانده تعهد اعضا، گزارش‌های PDF، فایل Excel، فایل‌های پشتیبان و لاگ‌های حسابرسی است.
۰۸

حریم خصوصی و امنیت

آنچه با اطمینان از کد قابل تأیید است

  • برنامه backend یا سرویس سروری در این مخزن ندارد.
  • داده‌های اصلی در SQLite محلی ذخیره می‌شوند؛ استفاده روزمره نیازمند اینترنت دائمی نیست.
  • PIN به‌صورت هش SHA-256 ذخیره می‌شود و خود PIN خام نوشته نمی‌شود.
  • اطلاعات رسیدها در پوشه محلی attachments ذخیره می‌شوند.
  • برنامه از کل داده‌های عملیاتی نسخه پشتیبان محلی تهیه می‌کند.

نکات مهم و محدودیت‌ها

توجه: پشتیبان‌گیری Google Drive در این نسخه پیاده‌سازی نشده و فقط رابط کاربری غیرفعال/placeholder دارد. فایل پیوست‌های پوشه attachments جزو فایل دیتابیس نیستند. بخشی از داده‌ها در زمان اشتراک‌گذاری گزارش یا Excel از طریق اشتراک سیستم‌عامل به بیرون از برنامه ارسال می‌شوند؛ این رفتار به انتخاب کاربر وابسته است.
۰۹

بومی‌سازی و پشتیبانی زبانی

  • زبان‌های پشتیبانی‌شده: فارسی و انگلیسی؛ پشتیبانی از جهت متن RTL و LTR
  • پشتیبانی از تقویم جلالی و میلادی و قالب‌های مختلف تاریخ، عدد و ارز
  • ساختار ترجمه‌ها در کلاس AppLocalizations نگهداری می‌شود
  • گزارش‌های PDF با توجه به زبان و جهت متن تولید می‌شوند
۱۰

رابط کاربری و تجربه کاربری

رابط کاربری پروژه موبایل‌محور است و از Material Design در Flutter استفاده می‌کند. در چند بخش از کامپوننت‌های سفارشی مانند GlassCard و GradientButton برای ایجاد ظاهر بصری یکدست استفاده شده است.

  • ناوبری سه‌تب پایین صفحه: داشبورد، اعضا، تنظیمات
  • صندوق‌ها در کارت‌های خلاصه‌دار نمایش داده می‌شوند
  • صفحه جزئیات هر صندوق با تب‌بندی، اطلاعات کلی، نوبت‌ها، پرداخت‌ها و گزارش‌ها را جدا می‌کند
  • فرم ثبت پرداخت خلاصه تعهد و مانده عضو را برای جلوگیری از خطا نمایش می‌دهد
  • عملیات حساس (بازیابی، پاک‌سازی داده‌ها) با تأیید کاربر انجام می‌شود
۱۱

ویژگی‌های خروجی، پشتیبان‌گیری و گزارش

قابلیت‌های موجود در کد
  • خروجی PDF برای گزارش جامع صندوق و گزارش عضو
  • اشتراک‌گذاری فایل PDF
  • خروجی Excel از داده‌های اصلی
  • ایجاد و بازیابی نسخه پشتیبان محلی
موارد در این نسخه آماده نیستند
  • پشتیبان‌گیری و بازیابی Google Drive
۱۲

خلاصه معماری فنی

پروژه از ساختاری نزدیک به لایه‌بندی presentation / domain / data / core استفاده می‌کند:

لایهتوضیح
presentation/صفحه‌ها، ویجت‌ها و Cubitها برای مدیریت وضعیت رابط کاربری
domain/entityها و interfaceهای مخزن
data/پیاده‌سازی مخزن‌ها و مدل‌های داده
core/دیتابیس، امنیت، بومی‌سازی، ابزارهای تاریخ/عدد، PDF، Excel، پشتیبان‌گیری

الگوی عملی پروژه: UI از طریق Cubitها با repositoryها کار می‌کند و repositoryها عملیات واقعی را روی SQLite و سرویس‌های محلی انجام می‌دهند.

۱۳

محدودیت‌ها و مواردی که عمداً پوشش داده نشده‌اند

  • سرویس ابری و همگام‌سازی آنلاین واقعی در این مخزن وجود ندارد.
  • پشتیبان‌گیری Google Drive فقط به‌صورت جای‌نگهدار (placeholder) موجود است.
  • پشتیبانی وب برای لایه ذخیره‌سازی فعلی کامل نیست و برای وب به راهکار متفاوت نیاز است.
  • پوشه‌های متعدد گزارش PDF در مخزن وجود دارند، اما رابط کاربری فعلی فقط بخشی از آن‌ها را در دسترس می‌گذارد.
  • نتایج برخی عملیات وابسته به سازگاری افزونه‌های فایل/اشتراک با پلتفرم اجرا هستند.
۱۴

قابلیت‌های تکمیل‌شده و موارد در انتظار

تکمیل‌شده با اطمینان بالا
  • مدیریت اشخاص، صندوق‌ها، اعضا و سهم‌ها
  • تولید نوبت و قرعه‌کشی
  • ثبت پرداخت اعضا و پرداخت خروجی نوبت‌ها (کامل/اقساطی)
  • جایگزینی عضو
  • گزارش PDF صندوق و عضو؛ خروجی Excel
  • پشتیبان‌گیری و بازیابی محلی؛ قفل PIN
  • دو زبان فارسی/انگلیسی؛ تقویم جلالی/میلادی
ناقص یا نیازمند بررسی بیشتر
  • پشتیبان‌گیری Google Drive و اتصال OAuth
  • یکدست‌سازی نهایی وضعیت گزارش‌های PDF در مستندات و فایل‌های legacy
  • ارزیابی نهایی میزان آمادگی نسخه‌های غیرموبایل
۱۵

متن معرفی عمومی برای وب‌سایت یا پورتفولیو

«دوره» یک اپلیکیشن آفلاین برای مدیریت صندوق‌های پس‌انداز گروهی و صندوق‌های گردشی است که به مدیران صندوق کمک می‌کند اعضا، سهم‌ها، پرداخت‌ها، نوبت‌های دریافت و گزارش‌ها را به‌صورت دقیق و منظم ثبت کنند. این برنامه با تمرکز بر سادگی استفاده، زبان فارسی، تقویم جلالی و گزارش‌های قابل اشتراک طراحی شده تا جایگزینی عملی برای روش‌های دستی و پراکنده باشد.

در «دوره»، داده‌ها به‌صورت محلی نگهداری می‌شوند و امکاناتی مانند ثبت رسید پرداخت، خروجی PDF و Excel، پشتیبان‌گیری محلی و قفل امنیتی PIN برای حفاظت و پیگیری بهتر اطلاعات فراهم شده است. این محصول برای صندوق‌های خانوادگی، دوستانه و محلی مناسب است.

جمع‌بندی نهایی

«دوره» یک ابزار محلی و موبایل‌محور برای مدیریت صندوق‌های گردشی است که بخش مهمی از نیازهای عملی این حوزه را در کد فعلی پوشش می‌دهد: از تعریف اعضا و سهم‌ها تا ثبت پرداخت‌ها، مدیریت نوبت‌ها، گزارش‌گیری و پشتیبان‌گیری.

این پروژه هنوز کاملاً بسته و نهایی نیست و در بخش‌هایی مانند پشتیبان‌گیری ابری و یکپارچه‌سازی نهایی برخی اجزای گزارش، نشانه‌های توسعه ادامه‌دار دیده می‌شود. مناسب‌ترین توصیف برای نسخه فعلی، یک محصول قابل استفاده با هسته عملیاتی کامل و چند بخش باقی‌مانده برای بلوغ بیشتر است.