Scope
shaduler is a resource × time grid with a bring-your-own philosophy.
shaduler is a resource × time grid — columns are resources (people, rooms, machines), rows are hours of a day or week. That's the whole job.
What you get
- Single file copy-paste, no NPM package to fight (
pnpm dlx shadcn add ...). - Inherits your shadcn theme automatically — no CSS overrides.
- Generic types preserve user-extended task data through render-prop closures.
- Headless interaction hooks (drag, resize, drag-to-create) are opt-in — display-only is the default.
- Built for React 19 + TS 5; modern function-component pattern.
Bring your own
shaduler stays small on purpose. A few things you'll handle at the data layer or with your own UI:
- Month / agenda / year views. shaduler renders one day or week at a time — anything zoomed-out is outside its scope.
- Recurring events. Expand the rule into concrete instances upstream and pass them in.
- Timezones & DST. Normalize timestamps before they reach the grid.
- Persistence, undo, conflict resolution. The grid emits events; what you do with them is yours.
Still to come
- Keyboard arrow navigation between cells (Tab through tasks already works).