npm.io
0.1.7 • Published 6d ago

react-editable-calendar

Licence
MIT
Version
0.1.7
Deps
0
Size
177 kB
Vulns
1
Weekly
0
Install scriptsThis package runs scripts during installation (preinstall/install/postinstall)

schedulaforge

Smart, editable calendar scheduling engine for JavaScript. Headless, zero runtime dependencies, with recurrence, conflict resolution, drag-resize semantics, and slot suggestions.

Use it in Node.js backends, React/Vue/Angular frontends, or any environment that needs a programmable schedule layer beneath your calendar UI.

Features

  • Headless core (no UI lock-in)
  • Editable move / resize / split / merge
  • Recurrence expansion
  • Conflict and buffer detection
  • Auto-resolve overlaps
  • Smart slot suggestions
  • Month / week / day / agenda grids
  • Resource lanes and capacity
  • Working-hours constraints
  • JSON import/export
  • Zero dependencies

Install

npm install schedulaforge

Quick start

import { SchedulaForge } from "schedulaforge";

const forge = new SchedulaForge({
  constraints: {
    snapMinutes: 15,
    bufferMinutes: 5,
    workingHours: {
      byWeekday: {
        1: [[540, 1020]],
        2: [[540, 1020]],
        3: [[540, 1020]],
        4: [[540, 1020]],
        5: [[540, 1020]],
      },
    },
  },
  resources: [
    { id: "room-a", label: "Conference A", capacity: 1 },
    { id: "room-b", label: "Conference B", capacity: 1 },
  ],
});

forge.addEvent({
  id: "standup",
  title: "Team standup",
  start: "2026-06-26T09:00:00.000Z",
  end: "2026-06-26T09:30:00.000Z",
  resourceId: "room-a",
});

forge.dragEvent("standup", { deltaMs: 60 * 60 * 1000 });

const grid = forge.getCalendarGrid("month", "2026-06-26T00:00:00.000Z");
const slots = forge.suggestSlots(45, "2026-06-26T08:00:00.000Z", "2026-06-26T18:00:00.000Z", "room-a");

Publishing to npm

cd schedulaforge
npm login
npm publish --access public

License

MIT