نمای کلی پروژه
| عنوان | اطلاعات |
|---|---|
| نام پروژه/اپلیکیشن | دوره (Doreh) |
| تاریخ شروع پروژه | بر اساس تاریخچه Git، قدیمیترین commit مخزن در 2026-06-12 ثبت شده است. |
| پلتفرم هدف | اپلیکیشن Flutter موبایلمحور؛ اندروید و iOS پلتفرمهای اصلی هدف. پوشههای web/windows/linux/macos وجود دارند اما برخی قابلیتها خارج از موبایل محدود یا نیازمند بررسی بیشتر است. |
| وضعیت فعلی پروژه | قابل استفاده و در حال توسعه/تثبیت؛ هسته اصلی پیادهسازی شده، اما پشتیبانگیری Google Drive هنوز placeholder است. |
فناوریها و ابزارهای اصلی
معرفی کوتاه
«دوره» یک اپلیکیشن آفلاین برای مدیریت صندوقهای پسانداز گروهی، صندوقهای خانوادگی، صندوقهای قرضالحسنه محلی و الگوهای مشابه گردشی است. این برنامه کمک میکند مدیر صندوق بهجای دفتر کاغذی، فایلهای پراکنده یا محاسبات دستی، اطلاعات اعضا، سهمها، پرداختها، نوبتها و گزارشها را در یک محیط یکپارچه ثبت و پیگیری کند.
هدف پروژه
هدف اصلی این پروژه، دیجیتالیکردن مدیریت صندوقهای گردشی و کاهش خطاهای رایج در ثبت دستی اطلاعات مالی است. کد و مستندات موجود نشان میدهند که برنامه برای حل چند مسئله عملی طراحی شده است:
- ثبت منظم اعضا و مشخصات آنها
- تعریف صندوقهای متعدد با مبلغ سهم و چرخه پرداخت مشخص
- مدیریت سهمهای کامل و کسری
- تعیین و پیگیری نوبتهای دریافت
- ثبت مشارکتهای مالی اعضا و پرداختهای خروجی صندوق
- تولید گزارشهای قابل اشتراک برای مدیر یا اعضا
- نگهداری دادهها بهصورت محلی و بدون نیاز دائمی به اینترنت
کاربران هدف
- مدیران صندوقهای خانوادگی و محلی
- مسئولان پیگیری پرداختها و حساب صندوق
- گروههای کوچک دوستانه، کاری یا اجتماعی که صندوق گردشی دارند
- کاربرانی که به ابزار آفلاین و ساده برای ثبت سوابق مالی نیاز دارند
قابلیتهای اصلی
۵.۱ مدیریت اشخاص و اعضا
- ثبت، ویرایش و حذف اشخاص مستقل از صندوقها
- ثبت نام، شماره تلفن، ایمیل و یادداشت؛ قالببندی شماره تلفن بر اساس کشور
- نمایش پروفایل مالی هر شخص در صندوقهای مختلف
- جلوگیری از ویرایش نام در صورت وجود سابقه تراکنش و از حذف در صورت عضویت فعال
۵.۲ مدیریت صندوقها
- ایجاد چند صندوق با نام، مبلغ سهم، تاریخ شروع، چرخه پرداخت، هماهنگکننده و یادداشت
- وضعیتهای مختلف: 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 | زبان، تقویم، ارز، فرمتها، فونت گزارش |
حریم خصوصی و امنیت
آنچه با اطمینان از کد قابل تأیید است
- برنامه backend یا سرویس سروری در این مخزن ندارد.
- دادههای اصلی در SQLite محلی ذخیره میشوند؛ استفاده روزمره نیازمند اینترنت دائمی نیست.
- PIN بهصورت هش SHA-256 ذخیره میشود و خود PIN خام نوشته نمیشود.
- اطلاعات رسیدها در پوشه محلی attachments ذخیره میشوند.
- برنامه از کل دادههای عملیاتی نسخه پشتیبان محلی تهیه میکند.
نکات مهم و محدودیتها
بومیسازی و پشتیبانی زبانی
- زبانهای پشتیبانیشده: فارسی و انگلیسی؛ پشتیبانی از جهت متن 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 برای حفاظت و پیگیری بهتر اطلاعات فراهم شده است. این محصول برای صندوقهای خانوادگی، دوستانه و محلی مناسب است.
جمعبندی نهایی
«دوره» یک ابزار محلی و موبایلمحور برای مدیریت صندوقهای گردشی است که بخش مهمی از نیازهای عملی این حوزه را در کد فعلی پوشش میدهد: از تعریف اعضا و سهمها تا ثبت پرداختها، مدیریت نوبتها، گزارشگیری و پشتیبانگیری.
این پروژه هنوز کاملاً بسته و نهایی نیست و در بخشهایی مانند پشتیبانگیری ابری و یکپارچهسازی نهایی برخی اجزای گزارش، نشانههای توسعه ادامهدار دیده میشود. مناسبترین توصیف برای نسخه فعلی، یک محصول قابل استفاده با هسته عملیاتی کامل و چند بخش باقیمانده برای بلوغ بیشتر است.