Files
MonthlyPaymentApp/README.md
T
oqba26 6b5c0794e9 Update README with recent changes and features
Added a changelog section detailing recent updates including confirmation dialogs, button layout fixes, monthly amount display, payment description visibility, pull-to-refresh functionality, and changes to the archive page.
2025-11-22 06:32:44 +03:30

62 lines
6.3 KiB
Markdown

# مدیریت حقوق ماهانه (Monthly Payment App)این پروژه یک اپلیکیشن اندرویدی مدرن برای مدیریت حقوق ماهانه است. برنامه به صورت **کلاینت-سرور** طراحی شده و به چندین کاربر اجازه می‌دهد تا با یک حساب مشترک، اطلاعات را به صورت متمرکز مدیریت کنند.
## 🚀 قابلیت‌های کلیدی
این اپلیکیشن با تمرکز بر سادگی و کارایی، امکانات زیر را ارائه می‌دهد:
### ۱. **سیستم چند کاربره و آنلاین**
- **یک حساب، چند کاربر:** چندین کاربر می‌توانند با یک نام کاربری و رمز عبور مشترک وارد برنامه شوند.
- **همگام‌سازی متمرکز:** تمام اطلاعات (افراد و پرداخت‌ها) روی یک سرور مرکزی (VPS) ذخیره می‌شود.
- **دسترسی از هر کجا:** کاربران از دستگاه‌های مختلف به داده‌های یکسان دسترسی دارند.
### ۲. **مدیریت کامل افراد**
- **افزودن و حذف:** امکان افزودن افراد جدید و حذف آن‌ها از لیست.
- **مرتب‌سازی خودکار:** لیست افراد به صورت خودکار بر اساس **تاریخ ایجاد** (از قدیمی‌ترین به جدیدترین) مرتب می‌شود.
- **شماره‌گذاری خوانا:** هر شخص در لیست یک شماره ردیف فارسی برای دسترسی سریع‌تر دارد.
### ۳. **مدیریت پیشرفته پرداخت‌ها**
- **پرداخت سریع:** امکان ثبت پرداخت برای **ماه جاری** با یک کلیک از صفحه اصلی.
- **تاریخچه کامل پرداخت:** با کلیک روی هر شخص، یک **صفحه کشویی (Bottom Sheet)** باز می‌شود که تاریخچه کامل پرداخت‌های او را به تفکیک سال و ماه نمایش می‌دهد.
- **نمایش وضعیت ماه‌ها:** ماه‌ها با وضعیت‌های مختلف (پرداخت شده، در دسترس، مربوط به آینده/گذشته) و با رنگ‌ها و آیکون‌های متفاوت نمایش داده می‌شوند.
- **جزئیات دقیق پرداخت:** با کلیک روی یک پرداخت ثبت‌شده، تاریخ و زمان دقیق آن در یک دیالوگ نمایش داده می‌شود.
- **ویرایش و حذف پرداخت:** امکان ویرایش مبلغ یا حذف کامل یک پرداخت از تاریخچه وجود دارد.
### ۴. **تجربه کاربری (UX) و طراحی (UI)**
- **طراحی مدرن:** استفاده از کامپوننت‌های Material 3 و طراحی تمیز و چشم‌نواز.
- **پشتیبانی کامل از زبان فارسی:**
- **رابط کاربری راست‌به‌چپ (RTL).**
- **اعداد فارسی:** تمام اعداد در برنامه (مبالغ، تاریخ، تعداد) به صورت فارسی نمایش داده می‌شوند.
- **قالب‌بندی خودکار مبالغ:** اعداد مربوط به مبلغ در حین تایپ به صورت خودکار با **جداکننده هزارگان** (مانند `۲۰۰٬۰۰۰`) قالب‌بندی می‌شوند.
- **کشیدن برای به‌روزرسانی (Pull to Refresh):** کاربران می‌توانند با کشیدن صفحه به پایین، به راحتی آخرین اطلاعات را از سرور دریافت کنند.
- **دیالوگ‌های هوشمند:**
- **تأیید خروج:** برای جلوگیری از خروج تصادفی، برنامه هنگام زدن دکمه بازگشت در صفحه اصلی، یک دیالوگ تأیید نمایش می‌دهد.
- **چیدمان یکپارچه:** دکمه‌های تمام دیالوگ‌ها از یک الگوی طراحی واحد و قابل پیش‌بینی پیروی می‌کنند.
### ۵. **تنظیمات و شخصی‌سازی**
- **مبلغ پیش‌فرض:** امکان تعیین یک مبلغ پیش‌فرض برای پرداخت‌ها جهت تسریع فرآیند ثبت.
- **رابط ویرایش زیبا:** بخش تنظیم مبلغ پیش‌فرض دارای حالت‌های نمایش و ویرایش برای جلوگیری از تغییرات تصادفی است.
- **پشتیبان‌گیری و بازیابی:** قابلیت ایجاد فایل پشتیبان (Backup) از تمام داده‌ها و بازیابی آن در زمان دلخواه.
## 🛠️ تکنولوژی‌های استفاده شده
- **زبان برنامه‌نویسی:** [Kotlin](https://kotlinlang.org/)
- **رابط کاربری:** [Jetpack Compose](https://developer.android.com/jetpack/compose) (کتابخانه مدرن UI اندروید)
- **معماری:** MVVM (Model-View-ViewModel)
- **مدیریت State:** Kotlin Flows و StateFlow
- **شبکه:** [Retrofit](https://square.github.io/retrofit/) و [OkHttp](https://square.github.io/okhttp/)
- **پردازش JSON:** [Kotlinx Serialization](https://github.com/Kotlin/kotlinx.serialization)
- **ناوبری:** [Jetpack Navigation for Compose](https://developer.android.com/jetpack/compose/navigation)
- **سمت سرور (Backend):** Node.js با فریم‌ورک Express
- **پایگاه داده:** MongoDB
## 📝 تغییرات ۱۴۰۴/۰۹/۰۱
- اضافه شدن دیالوگ تأیید برای انتقال اشخاص به آرشیو در لیست پرداخت‌نشده و پرداخت‌شده.
- اصلاح چیدمان دکمه‌ها در دیالوگ‌های پرداخت (ثبت / ویرایش / حذف).
- نمایش مبلغ هر ماه روی نوار بالای ماه در صفحه جزئیات فرد.
- نمایش توضیحات پرداخت (در صورت وجود) زیر تاریخ ثبت در صفحه جزئیات فرد.
- اضافه شدن قابلیت رفرش لیست پرداخت‌نشده‌ها با کشیدن صفحه به پایین (Pull-to-Refresh).
- حذف دکمه حذف از صفحه آرشیو، فقط دکمه بازیابی باقی مانده است.
- ذخیره و برگرداندن فیلد توضیحات پرداخت (`description`) در سرور (MongoDB) و نمایش آن در اپ.