Cari libur panjang tanpa nebak-nebak. An intelligent annual leave optimizer designed specifically for the Indonesian work calendar.
daysoff helps Indonesian workers maximize their continuous time off by strategically identifying "bridge days" ( hari kejepit) and long weekends. By analyzing national holidays and collective leave (cuti bersama), the application provides data-driven recommendations to make the most of your annual leave budget.
- Dynamic Optimization: Uses a dynamic programming algorithm to calculate the most efficient use of your leave budget, maximizing consecutive days off without overlaps.
- Work Week Support: Toggle between 5-day and 6-day work weeks to match your specific employment terms.
- Interactive Calendar: A year-at-a-glance view that highlights holidays, collective leave, and recommended leave days.
- Plan Comparison: Compare different leave "opportunities" and see the total efficiency of your annual plan.
- Reliable Data: Hybrid data strategy fetching from the Indonesian Holiday API with robust local fallbacks for 2024–2026.
- Node.js: 20.x or later
- npm: 10.x or later
-
Clone the repository:
git clone https://github.com/Lucu-lucuan-Lab/daysoff.git cd daysoff -
Install dependencies:
npm install
-
Start the development server:
npm run dev
The application will be available at http://localhost:3000.
- Select Year: Navigate through different years to see upcoming holiday patterns.
- Set Budget: Adjust your annual leave budget (e.g., 12 days) to see how the optimizer allocates them.
- Toggle Work Week: Switch between 5-day and 6-day work week modes to see how it affects long weekend opportunities.
- Review Plans: Click on recommended plans in the sidebar to highlight them on the main calendar.
src/
├── app/ # Next.js App Router (pages and layouts)
│ └── _components/ # Page-specific React components
├── components/ # Reusable UI primitives (Radix, Shadcn-like)
├── data/ # Static holiday data for offline fallbacks
└── lib/ # Core business logic (Optimization, Data Fetching)
The project uses the native Node.js test runner for unit testing core logic.
npm testnpm run lintCreate a production-ready build:
npm run buildContributions are welcome. Please ensure that your changes adhere to the following guidelines:
- Logic First: Keep complex date logic in
src/liband ensure it is covered by unit tests. - No Comments: We prefer self-documenting code. Use clear naming and structure instead of comments.
- Commit Style: Use the imperative mood (e.g.,
fix:,feat:,refactor:) and match the repository's existing style.
This project is private and for internal use within Lucu-lucuan Lab. Refer to the repository settings for licensing details.
