# مدیریت حقوق ماهانه (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) ## 📝 تغییرات ۱۴۰۴/۰۹/۰۱ - اضافه شدن دیالوگ تأیید برای انتقال اشخاص به آرشیو در لیست پرداخت‌نشده و پرداخت‌شده. - اصلاح چیدمان دکمه‌ها در دیالوگ‌های پرداخت (ثبت / ویرایش / حذف). - نمایش مبلغ هر ماه روی نوار بالای ماه در صفحه جزئیات فرد. - نمایش توضیحات پرداخت (در صورت وجود) زیر تاریخ ثبت در صفحه جزئیات فرد. - اضافه شدن قابلیت رفرش لیست پرداخت‌نشده‌ها با کشیدن صفحه به پایین (Pull-to-Refresh). - حذف دکمه حذف از صفحه آرشیو، فقط دکمه بازیابی باقی مانده است.