A browser-based technical event planner with a precise 2D workspace, synchronized 3D preview, automatic bill of materials, and cable length recommendations.
npm install
npm run devOpen http://localhost:3400/plan/. Projects autosave in the browser. Use Project to download a portable .eventplan file and the upload icon to open one.
- Add equipment from the library; click and drag items to position them on the 100 mm snapping grid. The built-in truss library includes Global Truss F34 straight sections from 0.29 m through 5 m, with manufacturer dimensions and weights. Product and official DWG bundle links are available in the inspector. F34 2-way and 3-way corners plus the ST-UJB-12 universal junction box expose direction-aware connection faces for magnetic truss snapping. With nothing selected, use the venue inspector to set the plan width and depth or quickly add parametric walls, podests, ramps, stairs, and grandstands. Select a structure to edit its individual width, depth, and height.
- Edit exact X/Y/Z coordinates and X/Y/Z rotation angles in the inspector. Z is the plan rotation; X and Y tilt the object in 3D. Use Mounted on to attach equipment to another object. Mounted objects use host-relative offsets and inherit the host's movement, elevation, and rotation; mounting can be nested.
- Select Route cable, then click the route's start and end points. The cable schedule calculates the three-dimensional route, applies 10% slack plus 0.5 m at each end, and recommends the next manufactured length.
- Use Layers to show or hide venue, equipment categories, and cables.
- Switch to 3D View to inspect placement and elevation.
- Export a PDF plan, BOM CSV, or cable schedule CSV.
Image floor plans can be imported as translucent underlays. PDF pages should currently be converted to PNG or JPEG first.
npm test
npm run buildWhen hosted under the same origin at /plan/, EventRent opens an attached project with /plan/?rentalCaseId=&resourceId=. The existing EventRent staff session authorizes loading and saving; no credentials are passed in URLs.
- Save or Ctrl/Cmd+S writes a new immutable file version back to its rental case.
- The EventRent tab loads active physical catalog articles, including internal products, with search and category tree. The original library stays available.
- Product model assignments are configured in EventRent using this app's /plan/integration/models.json manifest (also emitted in production builds).
- Product dimensions override template defaults; replacement dimensions and missing weight/power are marked. Saved definitions only change through the explicit Models update action.
- Transfer to quote saves first and opens a server-generated preview in EventRent. Only linked product placements count, not ordinary structures or cable routes. Warehouse users can plan, but only planners/admins can edit quotes.
- Quote transfer prefers an existing editor for the same user and rental case via
the same-origin
eventrent:quote-plan:v1BroadcastChannel. It refreshes only the preview, retaining unsaved quote edits and the existing edit lock. Switch back to the quote tab if the browser cannot focus it automatically. Busy editors require a retry. Without a responder after three seconds (or channel support), a new editor opens subject to normal locking. An acknowledged handoff that fails or times out does not open another editor. Confirm the preview and save the quote explicitly. Deploy/reload both applications together. - EventRent can create a new empty attachment directly. On opening a fully empty project, eventPlan adds its standard library locally; Save persists it as the next version. Existing project definitions are never replaced by this step.
- Project still downloads a local copy. Existing standalone local autosave remains unchanged when neither integration parameter is supplied.
- Local recovery is isolated by user, case, attachment and browser tab. It is not a server backup. Archived files must be restored in EventRent before saving.
- A stale revision is rejected rather than overwriting another employee's work. Download local changes, reload the current server version, then merge deliberately.
- If the session expires, sign in again through EventRent in another tab and retry.
- Unknown project extension fields are preserved; integrated mode does not refresh stored equipment definitions from the shipped catalog.
The deployment and HTTP contract are documented in ../EventRent/docs/EVENTPLAN.md. The reverse proxy must send /plan/ (including development WebSockets) to eventPlan, and /api/ to EventRent. Production serves this project's built dist/ at /plan/; do not expose a Vite development server in production.