یک ابزار ساده، کاربردی و انعطافپذیر برای برنامهریزی و مدیریت نوبتها بر اساس روز، هفته، ماه و سال.
برنامهریزی و مدیریت نوبتها یک نرمافزار برای ایجاد، مدیریت و مشاهده برنامههای نوبتی بین چند نفر است.
این پروژه با هدف ساده کردن فرآیندی ساخته شده که معمولاً با استفاده از فایلهای Excel، جدولهای دستی یا حتی کاغذ انجام میشود.
کاربر میتواند افراد موردنظر خود را تعریف کند و برای آنها برنامه نوبتی ایجاد کند؛ سپس برنامه را بر اساس روز، هفته، ماه یا سال مشاهده و مدیریت کند.
این پروژه از یک نیاز کاملاً واقعی و خانوادگی شروع شد.
برای نوبتبندی بین فرزندان مادربزرگم، لازم بود مشخص شود که هر روز یا هر نوبت، مسئولیت تهیه غذای مادربزرگ بر عهده کدام یک از فرزندان است.
در ابتدا برای انجام این کار از Excel استفاده میکردم.
برای هر ماه یک جدول ایجاد میکردم، روزهای ماه را وارد میکردم و سپس افراد را بین روزهای مختلف تقسیم میکردم.
در ابتدا این روش ساده به نظر میرسید؛ اما با گذشت زمان مشکلات آن بیشتر مشخص شد.
هر ماه باید جدول جدیدی ایجاد میشد.
تعداد روزهای ماهها متفاوت بود.
روز شروع ماهها با یکدیگر فرق داشت.
گاهی لازم بود نوبت یک نفر جابهجا شود.
گاهی فردی به برنامه اضافه یا از آن حذف میشد.
و برای پیدا کردن پاسخ سؤالات سادهای مانند:
«نوبت چه کسی در یک تاریخ مشخص است؟»
یا:
«نوبت بعدی من چه زمانی است؟»
باید دوباره جدولها بررسی و محاسبه میشدند.
در نهایت یک سؤال ساده به ذهنم رسید:
چرا باید هر ماه این برنامه را از اول در Excel ایجاد کنم؟
اگر کامپیوتر میتواند تقویم را ایجاد کند، تعداد روزهای ماه را تشخیص دهد، روز هفته را محاسبه کند و نوبتها را بین افراد تقسیم کند، چرا این کارها را دستی انجام دهیم؟
همین سؤال، نقطه شروع این پروژه شد.
چیزی که ابتدا فقط برای نوبتبندی تهیه غذای مادربزرگم ایجاد شده بود، به تدریج به یک ایده عمومی برای مدیریت نوبتها تبدیل شد.
هدف اصلی پروژه این است که برنامهریزی نوبتها را از یک فرآیند دستی و زمانبر، به یک سیستم ساده و قابل مدیریت تبدیل کند.
این پروژه میتواند برای موقعیتهای مختلف مورد استفاده قرار گیرد؛ از یک خانواده کوچک گرفته تا گروهها، تیمها و حتی محیطهای کاری.
امکان برنامهریزی و مشاهده نوبتها در بازههای مختلف زمانی:
- روزانه
- هفتگی
- ماهانه
- سالانه
امکان اضافه کردن افراد مختلف به یک برنامه.
برای مثال:
علی
رضا
محمد
حسن
مهدی
پس از تعریف افراد، نوبتها میتوانند بر اساس ترتیب مشخص بین آنها تقسیم شوند.
برنامه میتواند نوبتها را به شکل چرخشی بین افراد تقسیم کند.
برای مثال:
| روز | مسئول |
|---|---|
| شنبه | علی |
| یکشنبه | رضا |
| دوشنبه | محمد |
| سهشنبه | حسن |
| چهارشنبه | مهدی |
| پنجشنبه | علی |
| جمعه | رضا |
با ادامه برنامه، ترتیب نوبتها بین افراد گردش خواهد کرد.
یکی از اهداف اصلی پروژه، ایجاد امکان تقسیم متعادل مسئولیتها بین افراد است.
به کمک سیستم نوبتدهی میتوان تعداد نوبتهای هر شخص را بررسی کرد و از ایجاد اختلاف یا تقسیم نامتوازن مسئولیتها جلوگیری کرد.
بهجای ایجاد یک فایل Excel جداگانه برای هر ماه، تقویم ماهانه بهصورت خودکار ایجاد میشود.
برنامه میتواند روزهای ماه و نوبت افراد را در کنار یکدیگر نمایش دهد.
امکان مشاهده و مدیریت برنامه در بازههای طولانیتر نیز در نظر گرفته شده است.
این قابلیت برای برنامههایی که نیاز به زمانبندی بلندمدت دارند بسیار کاربردی است.
برنامه باید بتواند پاسخ سؤالاتی مانند موارد زیر را بهسرعت در اختیار کاربر قرار دهد:
- امروز نوبت چه کسی است؟
- فردا نوبت چه کسی است؟
- نوبت بعدی من چه زمانی است؟
- این هفته چه کسی مسئول است؟
- هر فرد چند نوبت دارد؟
- برنامه ماه آینده چگونه است؟
این نرمافزار فقط برای یک خانواده یا یک نوع فعالیت طراحی نشده است.
- تهیه غذا
- مراقبت از سالمند
- انجام کارهای خانه
- خرید
- مراقبت از اعضای خانواده
- برنامه شیفت کارکنان
- نگهبانی
- پشتیبانی
- پاسخگویی
- تقسیم وظایف
- نگهبانی
- نظافت
- رسیدگی به مشاعات
- مسئولیتهای دورهای
- آبیاری باغ
- مراقبت از حیوانات
- برنامه مطالعه گروهی
- فعالیتهای ورزشی
- کارهای داوطلبانه
- مدیریت وظایف مشترک
ایده اصلی پروژه بسیار ساده است:
کاربر نباید کاری را که کامپیوتر میتواند بهصورت خودکار انجام دهد، چندین بار تکرار کند.
اگر نرمافزار میتواند:
- تقویم را ایجاد کند،
- تعداد روزهای ماه را تشخیص دهد،
- روز هفته را محاسبه کند،
- نوبتها را ایجاد کند،
- نوبت افراد را مدیریت کند،
- و تعداد نوبتهای هر شخص را محاسبه کند،
پس نیازی نیست کاربر تمام این کارها را بهصورت دستی انجام دهد.
Excel یک ابزار بسیار قدرتمند است، اما زمانی که یک فرآیند مرتباً تکرار میشود، استفاده از جدولهای دستی میتواند زمانبر و مستعد خطا باشد.
| روش سنتی | این پروژه |
|---|---|
| ایجاد جدول برای هر ماه | مدیریت متمرکز برنامه |
| ورود دستی تاریخها | مدیریت خودکار تاریخ |
| محاسبه دستی نوبتها | نوبتدهی خودکار |
| تغییرات دشوار | مدیریت سادهتر تغییرات |
| جستجوی دستی | دسترسی سریع به نوبتها |
| وابستگی به فایلهای مختلف | یک سیستم یکپارچه |
هدف این پروژه حذف Excel نیست؛ بلکه خودکار کردن فرآیندهایی است که بهصورت مداوم در Excel تکرار میشوند.
تصاویر محیط برنامه را میتوان در این قسمت قرار داد.
پیشنهاد میشود تصاویر در مسیر زیر قرار بگیرند:
docs/
└── screenshots/
├── dashboard.png
├── calendar.png
├── schedule.png
└── settings.png
سپس تصاویر در README نمایش داده شوند:
## 📸 تصاویر برنامه
### داشبورد

### تقویم

### برنامه نوبتها
اگر نسخه آنلاین یا ویدئوی معرفی پروژه در دسترس است، میتوان لینک آن را در این قسمت قرار داد.
Demo: YOUR_DEMO_URL
این بخش را بر اساس تکنولوژی واقعی پروژه تکمیل کنید.
برای مثال:
Frontend:
TypeScript / HTML / CSS
Framework:
Electron
Database:
...
Platform:
Windows / Android / Web
git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.gitسپس وارد پوشه پروژه شوید:
cd YOUR_REPOSITORYYOUR_INSTALL_COMMANDYOUR_RUN_COMMANDدستورات بالا باید بر اساس تکنولوژی و ساختار واقعی پروژه جایگزین شوند.
ساختار پروژه میتواند به شکل زیر باشد:
YOUR_REPOSITORY/
│
├── src/
│ ├── ...
│ └── ...
│
├── assets/
│ └── ...
│
├── docs/
│ └── screenshots/
│
├── README.md
├── LICENSE
└── ...
- ایجاد سیستم پایه نوبتدهی
- مدیریت افراد
- ایجاد برنامه نوبتی
- برنامهریزی بر اساس تاریخ
- برنامهریزی ماهانه
- برنامهریزی سالانه
- جابهجایی نوبت
- یادآوری نوبتها
- اعلانها
- گزارش آماری
- بهبود الگوریتم تقسیم نوبت
- بهبود رابط کاربری
- نسخه Android
- نسخه Web
- همگامسازی ابری
- حساب کاربری
- اشتراکگذاری برنامه
- خروجی Excel
- خروجی PDF
- اعلان از طریق پیامرسانها
- پشتیبانی کامل از تقویم شمسی
- پشتیبانی همزمان از تقویم شمسی و میلادی
- مدیریت گروههای مختلف
- گزارش میزان مشارکت هر فرد
- الگوریتم پیشرفته برای تقسیم عادلانه نوبتها
مشارکت در توسعه این پروژه آزاد است و از Pull Requestها، پیشنهادها و گزارشهای Bug استقبال میشود.
اگر ایدهای برای بهتر شدن پروژه دارید، میتوانید:
- یک Issue ایجاد کنید.
- مشکل یا پیشنهاد خود را توضیح دهید.
- در صورت امکان Pull Request ارسال کنید.
مشارکت در بخشهای زیر بسیار ارزشمند است:
- توسعه قابلیتهای جدید
- رفع Bug
- بهبود رابط کاربری
- بهینهسازی الگوریتم نوبتدهی
- بهبود عملکرد
- نوشتن مستندات
- ترجمه
- تست نرمافزار
اگر با مشکلی مواجه شدید، لطفاً یک Issue ایجاد کنید و تا حد امکان اطلاعات زیر را ارائه دهید:
شرح مشکل:
مراحل بازتولید:
رفتار مورد انتظار:
رفتار فعلی:
سیستمعامل:
نسخه برنامه:
تصویر یا ویدئو:
اطلاعات دقیقتر باعث میشود مشکل سریعتر بررسی و رفع شود.
اگر قابلیت یا ایدهای دارید که میتواند پروژه را بهتر کند، میتوانید آن را بهعنوان یک Issue پیشنهاد دهید.
پیشنهادهای مربوط به موارد زیر بهخصوص مورد استقبال هستند:
- تجربه کاربری
- تقویم
- الگوریتم نوبتدهی
- اعلانها
- گزارشها
- نسخه موبایل
- قابلیتهای گروهی
این پروژه برای من فقط یک پروژه نرمافزاری نیست.
همه چیز از یک مسئله کوچک در خانواده شروع شد.
یک فایل Excel برای پاسخ به یک سؤال ساده:
امروز چه کسی باید برای مادربزرگ غذا تهیه کند؟
اما همین مسئله کوچک باعث شد متوجه شوم که نوبتبندی، خودش یک مسئله مستقل است.
مسئلهای که در بسیاری از خانوادهها و گروهها وجود دارد.
از یک جدول ساده شروع کردم.
چند اسم.
چند تاریخ.
چند نوبت.
و در نهایت ایده ساخت یک نرمافزار شکل گرفت.
شاید شما هم برای یکی از اعضای خانواده نوبتبندی داشته باشید.
شاید چند نفر در یک خانه زندگی میکنند و باید کارهای خانه را تقسیم کنند.
شاید یک گروه نیاز به برنامه شیفت داشته باشد.
شاید چند نفر از یک باغ مراقبت میکنند.
شاید یک تیم نیاز به تقسیم وظایف دورهای داشته باشد.
در همه این موارد، مسئله تقریباً یکسان است:
چند نفر
+
چند مسئولیت
+
زمان مشخص
=
نیاز به برنامهریزی نوبت
این پروژه با هدف حل همین مسئله ساخته شده است.
اگر این پروژه برای شما مفید بود، میتوانید با دادن یک ⭐ به Repository از توسعه آن حمایت کنید.
اگر ایده، پیشنهاد یا تجربهای در زمینه برنامهریزی نوبتها دارید، خوشحال میشوم آن را با پروژه به اشتراک بگذارید.
این پروژه تحت شرایط مجوزی که در فایل LICENSE قرار گرفته است منتشر میشود.
لطفاً پیش از استفاده، تغییر، توزیع یا انتشار مجدد پروژه، شرایط License را مطالعه کنید.
ساخته شده با ❤️ از یک نیاز واقعی
گاهی یک نرمافزار خوب، از یک مسئله خیلی ساده شروع میشود.
- سریع و سبک
- نیازی به پیکربندی نیست
این پروژه تحت مجوزِMITمجوز.