EventLay is a visual drag-and-drop event layout tool that lets event professionals place production elements on a venue photo and see real-time pricing — no CAD skills required.
Event planners and production teams currently use one of three broken workflows to plan event layouts:
None of these work in a live client conversation where you need to show a layout, adjust it in real time, and produce a budget — all in the same screen.
EventLay collapses layout design, visualization, and pricing into a single fast interface. Upload a photo of the venue, drag in your stage, LED walls, seating, and production gear — and watch the budget calculate itself. Close deals faster. Look professional instantly.
Goal: Close deals faster by showing clients a visual layout with pricing during the initial meeting.
Pain: Currently bounces between Vectorworks (slow), spreadsheets (ugly), and verbal descriptions (imprecise). Loses deals because clients can't visualize the setup.
Fit: Opens EventLay on a laptop during a client call. Drops in a stage, LED wall, and seating. Client sees it live. Budget appears instantly. Proposal sent before they leave the room.
Goal: Plan internal events (town halls, galas, conferences) without needing a production team for the layout phase.
Pain: No technical training. Can't use CAD. Relies on vendors to mock up layouts — adds days to the cycle.
Fit: Picks a template ballroom, drags in chairs and a stage, exports a visual + budget to send to leadership for approval — all in 15 minutes.
Goal: Quickly spec out and price a gig for a client who asked "how much for a stage and sound in this room?"
Pain: Uses mental math and a text message to quote. Looks unprofessional. Underquotes regularly.
Fit: Snaps a photo of the venue, uploads to EventLay, places gear, sends a branded visual quote in 10 minutes.
Goal: Build and iterate on layouts live during a sales call to maximize upsell.
Pain: Currently says "I'll send you a proposal next week." By then, the client has 3 other quotes. Speed wins.
Fit: Screen-shares EventLay during a Zoom call. Builds the layout live. Client says "add another LED panel." Price updates. Deal closes on the call.
Ruthlessly scoped. If it doesn't help close a deal or build a layout in under 10 minutes, it's cut.
┌──────────────────────────────────────────────────────────────┐
│ TOP BAR: Logo | Project Name | Save | Undo/Redo | Share │
├──────────┬────────────────────────────────┬─────────────────┤
│ │ │ │
│ ASSET │ │ PRICING │
│ LIBRARY │ CANVAS │ PANEL │
│ │ (venue photo + │ │
│ Stage │ placed elements) │ Line items │
│ AV │ │ Quantities │
│ Seating │ │ Unit prices │
│ Prod │ │ Subtotals │
│ │ │ │
│ │ │ ─────────── │
│ │ │ TOTAL: $XX,XXX │
│ │ │ │
├──────────┴────────────────────────────────┴─────────────────┤
│ STATUS BAR: Zoom % | Grid toggle | Canvas dimensions │
└──────────────────────────────────────────────────────────────┘
| Breakpoint | Behavior |
|---|---|
| Desktop (≥1024px) | Three-panel layout. Full experience. |
| Tablet (768–1023px) | Left panel collapses to icon-only. Pricing panel becomes bottom drawer. |
| Mobile (<768px) | View-only share links work. Editing disabled with prompt: "Open on desktop to edit." |
| Feature | MVP | Details |
|---|---|---|
| Move | ✅ | Free-position on canvas via drag |
| Resize | ✅ | 8-point handles, shift for aspect lock |
| Rotate | ✅ | Free rotation via handle, snap at 0°/90°/180°/270° |
| Delete | ✅ | Keyboard (Del/Backspace) + context menu |
| Layer order | ⏳ | Nice-to-have. Default: newest on top. |
| Group | ❌ | V2 |
| Undo / Redo | ⏳ | Nice-to-have. Command stack with Ctrl+Z/Y |
Optimized for: ship fast, stay cheap, scale later. No premature infrastructure.
| Layer | Choice | Rationale |
|---|---|---|
| Frontend | Next.js 14 (App Router) + TypeScript | SSR for share pages, file-based routing, massive ecosystem, Vercel-native |
| Canvas / Rendering | Konva.js (via react-konva) | Purpose-built for 2D canvas apps. Handles drag/drop, resize, rotate, layering, hit detection out of the box. Used by Canva, Crello. Far simpler than raw Canvas/WebGL. |
| State Management | Zustand | Lightweight, no boilerplate. Perfect for canvas state + pricing state sync. |
| Styling | Tailwind CSS | Rapid UI development. Consistent design tokens. No CSS overhead. |
| Backend / API | Supabase (Postgres + Auth + Storage + Edge Functions) | Eliminates need for custom backend. Auth, DB, file storage, and serverless functions in one platform. Generous free tier. |
| Database | Supabase Postgres | Relational. Projects → LayoutItems. Clean joins for pricing. Row-level security for permissions. |
| File Storage | Supabase Storage | Venue photo uploads. Signed URLs for access control. CDN-backed. |
| Image Export | Konva .toDataURL() (client-side) | No server needed. Canvas rendered to PNG in-browser. |
| Hosting | Vercel | Zero-config Next.js hosting. Edge network. Free tier sufficient for MVP. Auto-deploys from Git. |
| Domain | eventlay.automatedworx.com (subdomain) | Lives under AutomatedWorx brand. Easy DNS setup. |
Browser (Next.js SPA)
│
├── react-konva → 2D Canvas rendering
├── Zustand → Local state (layout + pricing)
│
├── Supabase Client SDK
│ ├── Auth (email/Google)
│ ├── Postgres (projects, items, catalog)
│ ├── Storage (venue photos)
│ └── Edge Functions (share link generation)
│
└── Vercel (hosting + SSR for share pages)
{
id: uuid (PK, from Supabase Auth)
email: string
full_name: string
company_name: string | null
avatar_url: string | null
tax_rate: decimal (default: 0) // user's default tax %
created_at: timestamp
}
{
id: uuid (PK)
user_id: uuid (FK → User)
name: string
venue_image_url: string | null // uploaded photo
venue_template_id: string | null // or template key
canvas_width: int
canvas_height: int
share_token: string (unique, for view-only link)
is_shared: boolean (default: false)
created_at: timestamp
updated_at: timestamp
}
{
id: uuid (PK)
project_id: uuid (FK → Project)
catalog_item_id: uuid (FK → CatalogItem)
x: float // position on canvas
y: float
width: float
height: float
rotation: float (degrees)
quantity: int (default: 1)
z_index: int
created_at: timestamp
updated_at: timestamp
}
{
id: uuid (PK)
name: string // "LED Wall 10x8"
category: enum [stage, av, seating, production, decor]
icon_url: string // SVG or PNG thumbnail
default_width: float
default_height: float
base_price: decimal // e.g., 1500.00
price_unit: string // "per unit", "per linear ft", "per day"
description: string | null
sort_order: int
is_active: boolean
}
{
id: uuid (PK)
name: string // "Grand Ballroom"
image_url: string
category: string // "indoor", "outdoor"
canvas_width: int
canvas_height: int
sort_order: int
}
User 1──∞ Project
Project 1──∞ LayoutItem
LayoutItem ∞──1 CatalogItem
Project ∞──0..1 VenueTemplate
For each LayoutItem in project:
line_total = catalog_item.base_price × layout_item.quantity
subtotal = SUM(all line_totals)
tax = subtotal × (user.tax_rate / 100)
grand_total = subtotal + tax
| Item | Qty | Unit Price | Line Total |
|---|---|---|---|
| Stage 16×24 | 1 | $3,500 | $3,500 |
| LED Wall 10×8 | 2 | $2,200 | $4,400 |
| Line Array Speaker | 4 | $800 | $3,200 |
| Round Table (60") | 20 | $45 | $900 |
| Chiavari Chair | 200 | $8 | $1,600 |
| Lighting Truss 10ft | 6 | $350 | $2,100 |
| Podium | 1 | $250 | $250 |
Subtotal: $15,950.00
Tax (8.25%): $1,315.88
─────────────────────────
Grand Total: $17,265.88
quantity field on LayoutItem controls pricing. If a user drags 3 separate chair elements, each has its own quantity. Pricing panel aggregates by catalog item.Client-side only. All pricing is computed in the Zustand store from layout items + catalog data. No server round-trip needed. This keeps the UI instant and eliminates latency, which is critical for the live-meeting use case.
For the live-meeting scenario, the MVP does NOT need real-time sync. Here's why:
Screen share IS the collaboration layer for MVP.
2D top-down view — not 3D.
Reasoning: 3D requires WebGL, complex camera controls, 3D model assets, and dramatically increases engineering time (3–6 months). 2D top-down using Konva.js ships in weeks, is intuitive for non-technical users, and matches how event planners already think (floor plans). 3D is a V3 "wow factor" feature, not an MVP need.
Tradeoff: Less visual "wow" in demos. Mitigated by polished 2D icons + venue photo backgrounds that add depth.
No video upload in MVP.
Reasoning: Video frames as backgrounds add storage cost, transcoding complexity (ffmpeg), and minimal UX value over a photo. A user can screenshot a video and upload the JPEG.
Tradeoff: Slightly more manual step for users with video-only venue content. Acceptable.
No built-in video calls.
Reasoning: WebRTC is a product unto itself. Users already have Zoom/Teams. Building video into EventLay adds months of work for marginal value. Screen-sharing EventLay inside an existing call achieves the same outcome.
Tradeoff: Less "all-in-one" feel. Acceptable at MVP — users won't miss it.
No real-time collaboration in MVP.
Reasoning: Real-time sync (multiplayer cursors, live edits) requires WebSocket infrastructure, conflict resolution, and extensive testing. The screen-share workflow covers the live-meeting use case. Real-time collab is a V2 feature gated on user demand.
Tradeoff: Two people can't edit the same layout simultaneously. Not a real blocker — one person drives the layout in meetings.
Yes — template venues included.
Reasoning: Critical for onboarding and zero-friction first experience. A new user with no venue photo can still start immediately. Templates also serve as demo content for marketing. 6–8 high-quality venue images sourced from royalty-free stock (Unsplash).
Tradeoff: Minimal — just curated stock images + seed data.
Desktop-first, not mobile-first.
Reasoning: Canvas-based drag-and-drop editing is fundamentally a desktop/laptop interaction. Precision placement requires a mouse or trackpad. Mobile gets view-only share links. Tablet gets a functional but compressed editor.
Tradeoff: Mobile users can view but not edit. Acceptable — no one builds event layouts on a phone.
Risk: Large venue photos + many elements (200+ chairs) could cause lag on lower-end machines.
Mitigation: Konva.js supports layer caching and viewport culling. Represent bulk items (200 chairs) as a single block with a count label, not 200 individual objects. Limit canvas to 4000×3000px max.
Risk: Users upload 50MB raw DSLR photos, causing slow loads.
Mitigation: Client-side image compression before upload (browser-image-compression library). Max 5MB after compression. Resize to max 3000px on longest edge.
Risk: Users expect spatial accuracy. A photo-based layout is not dimensionally accurate.
Mitigation: Explicit disclaimer: "Layouts are for visualization and pricing — not to scale." Position this as a feature, not a bug: "Skip the CAD. Focus on the vision." Scale tools are a V2 feature.
Risk: Catalog prices don't match user's actual costs. Users lose trust.
Mitigation: Allow admin to customize catalog prices. In V2, allow per-user custom pricing. Frame MVP prices as "estimates" with a disclaimer. Users will still find directional pricing valuable.
Risk: Power users dismiss EventLay as too simple.
Mitigation: Don't target Vectorworks power users. Target the 80% who DON'T use Vectorworks because it's too complex. Position as "the tool for client conversations" not "a replacement for CAD."
Risk: Users need items not in the catalog → product feels incomplete.
Mitigation: Launch with 25–30 common items covering 80% of use cases. Add a "Request an item" feedback button. V2: custom item uploads.
Deliverables: Figma file, initialized repo, seeded database, asset icons
Deliverables: Functional editor with pricing. End-to-end flow works.
Deliverables: Shareable, exportable, polished product.
Deliverables: Live, public, launch-ready MVP.
A user can:
That's it. This is the atomic unit of value. Everything else is additive.
EventLay is a browser-based visual layout tool for event professionals. Users upload a venue photo (or pick a template), drag-and-drop production elements (stages, LED walls, seating, AV gear), and see real-time pricing as they build. Layouts can be saved, exported as images, and shared via link. Built for speed in live client conversations — not as a CAD replacement, but as the tool that makes CAD unnecessary for 80% of events.
We're building the Canva of event production. Right now, event planners choose between expensive CAD software they can't use, or hacky PowerPoint mockups that look unprofessional. EventLay lets you upload a photo of any venue, drag in stages, LED walls, and seating, and see the budget calculate in real time. It's designed to be used during a client meeting — build the layout live, share a professional visual quote, and close the deal before you leave the room. No training. No CAD license. No waiting for a production team to send back a render.
The global events industry is $800B+ and growing, yet event production teams still plan layouts in Vectorworks ($3K/seat), PowerPoint, or on paper. EventLay is a vertical SaaS tool that collapses visual layout, pricing, and client presentation into one fast browser-based editor. Our wedge: real-time visual quoting during client meetings — a workflow no existing tool supports. The product is lightweight (Next.js + Supabase), the market is massive and underserved, and the pricing model (per-seat subscription) scales with team adoption. We're starting with independent event production companies and expanding to venues, planners, and rental houses.
Design event layouts. Price them instantly. Close deals faster.
Upload a venue photo, drag in your stage and production elements, and watch the budget build itself. EventLay is the visual layout builder made for event professionals — not CAD engineers.
Stack: Next.js 14 (App Router) + TypeScript + Tailwind + react-konva + Zustand + Supabase (Auth, Postgres, Storage)
Core deliverable: A canvas editor where users place 2D elements (from a fixed catalog) onto a venue photo background, with a live-updating pricing sidebar. Projects save to Supabase. Share via unique URL (SSR page).
Key libraries: react-konva (canvas), zustand (state), browser-image-compression (upload), @supabase/supabase-js (backend)
Critical path: Canvas drag/drop + pricing sync. Get this right first. Everything else is standard CRUD.
Deploy: Vercel. Subdomain: eventlay.automatedworx.com
Timeline: 8–10 weeks to launch-ready MVP with one full-stack developer.
Aesthetic: Dark theme. Professional. Clean. Think Linear meets Figma — minimal chrome, maximum canvas.
Key screens:
Asset icons: 25–30 clean, monoline SVG icons for event elements: stage, LED wall, speaker, truss, table (round/rect), chair, podium, DJ booth, barricade, camera riser, projector, screen, pipe & drape, dance floor, generator, tent.
Typography: Inter or Geist. Two weights: 400 (body), 700 (headings).
Interactions: Smooth drag/drop, subtle scale on hover, pulse on drop, slide-in panels. No heavy animations.