Projects & Workspace | Cine Power Planner

Projects & Workspace

Core project management — create, organize, and manage gear lists for productions

Overview

The Projects feature is the central hub of Cine Power Planner. Each project represents a production with its own gear list, metadata, crew assignments, schedule, and export settings. The workspace provides a multi-tab interface for managing all aspects of a production.

Requirements

Functional Requirements

IDRequirementAcceptance CriteriaPrioritySource
REQ-PRJ-001The system shall support CRUD operations on projects with name, description, production metadata (resolution, codec, framerate, aspect ratio)Create → project appears in dashboard; Update → changes persist after reload; Delete → project removed from IndexedDB; Read → all fields display correctlyMustuseProjectsProvider
REQ-PRJ-002The system shall display a multi-project dashboard with search, filter (active/completed/archived), and sort capabilitiesFilter by each status returns only matching projects; fuzzy search matches partial names; sort toggles asc/descMustProjectDashboard
REQ-PRJ-003The system shall provide a tabbed workspace whose sections are the 18 entries of ALL_PROJECT_TABS, of which only General and Gear List are always presentEvery enabled tab renders without error; tab state preserves on navigation; deep links open the correct tab; a disabled tab is absent from the strip and its deep link redirectsMustapp/src/data/schema/projectTabs.js
REQ-PRJ-004The system shall support drag-and-drop reordering of items and categories within the gear listDrag item between categories → item moves; drag category → order changes; order persists after reloadMustProjectWorkspaceContainer
REQ-PRJ-004aItems inside a gear-set group can be reordered with drag-and-drop, constrained to remain inside their setDrag a set item up/down → reorders within the set's contiguous range; drag outside the set → snaps back. Reorder is project-local (shared GearSet definition is unaffected). Visible nested SortableContext per set.MustSetItemGroup.jsx, useCategoryDnD.js
REQ-PRJ-004bEach gear-list item shows its owned-gear components as an indented sub-list below the rowWhen an item resolves to an owned-gear record with a non-empty components array, a • name × quantity sub-list renders beneath the item. Hides when the parent set group is collapsed. Live lookup; no schema change.MustComponentSubList.jsx, resolveItemComponents.js
REQ-PRJ-004cEach gear-list item MAY carry an optional alternative item + reason, shown as an inline Option A / Option B comparison beneath the row (and a PDF sub-line) when setEdit modal (single mode) exposes Alternative item + Reason fields; setting an alternative renders the two-column comparison under the row and an indented sub-line in the PDF; persists on reload + Supabase; no schema change (#203)ShouldAlternativeItemRow.jsx, useEditItemModal.js
REQ-PRJ-005The system shall support adding items from the Device Library or as custom entries with name, category, quantity, notes, and attributesAdd library item → attributes auto-fill; add custom item → only name required; item appears in correct categoryMustProjectWorkspaceContainer
REQ-PRJ-006The system shall support bulk operations: select multiple items, bulk delete, bulk category move, bulk provider assignSelect 3+ items → bulk toolbar appears; bulk delete removes all; bulk move changes category for all; changes persistMustuseItemSelection
REQ-PRJ-007The system shall support project duplication (deep copy of all items and settings)Duplicate creates new project with "(Copy)" suffix; all items, categories, metadata cloned; IDs regeneratedMustuseProjectsProvider
REQ-PRJ-008The system shall support project archiving/unarchiving to declutter the dashboardArchive → project moves to "Archived" filter; unarchive → returns to "Active"; archived projects not in default viewMustuseProjectsProvider
REQ-PRJ-009The system shall generate professional PDF exports with project metadata, categorized gear lists, and provider informationExport → PDF downloads with correct filename; PDF contains all items grouped by category; provider badges presentMustuseExportLogic
REQ-PRJ-010The system shall display a Camera Package connection diagram with interactive node positioningDiagram renders camera, monitor, wireless, battery nodes; drag repositions nodes; positions persist with projectShoulduseCameraPackage
REQ-PRJ-011The system shall support crew member assignment with role, contact link, and departmentAdd crew → member appears in Crew tab; link to Contact resolves; department displayed; remove crew → member removedMustProjectWorkspaceContainer
REQ-PRJ-012The system shall enforce project limits per tier: Free (2 projects1), Pro (unlimited)Free user creating 3rd project → paywall modal; Pro user → no limit; upgrade → restriction lifted immediatelyMustusePaywallModel
REQ-PRJ-013The system shall support structured shoot schedules with per-day shooting details, travel days, and wrap daysAdd day → appears in schedule; set type (shoot/travel/wrap) → displays correctly; dates persistMustuseShootSchedule
REQ-PRJ-014The system shall support project-level location management with address, coordinates, and notesAdd location → appears in locations list; map pin shows coordinates; editable and deletableShoulduseProjectLocations
REQ-PRJ-015The system shall display weather forecasts for project shoot locations using project dates and coordinatesSet location + dates → weather forecast appears; icons and temps displayed; refreshableShoulduseProjectWeather
REQ-PRJ-016The system shall support a rental workflow state machine: Draft → Requested → Confirmed → Picked Up → ReturnedTransition states → status badge updates; invalid transitions blocked; history trackedShoulduseRentalWorkflow
REQ-PRJ-017The system shall support a gear return checklist to verify all rented items are returnedGenerate checklist → all rented items listed; check/uncheck items; summary shows outstanding itemsShoulduseReturnChecklist
REQ-PRJ-018The system shall check equipment availability across overlapping project datesCheck → shows conflicts if device booked on same dates; warning displayed; suggestion to resolveShoulduseProjectAvailability
REQ-PRJ-019The system shall calculate project-level budget totals including per-item costs, provider subtotals, and grand totalAdd items with prices → totals update; change quantity → recalculates; export includes budget summaryMustuseProjectTotals
REQ-PRJ-020The system shall support sharing project read-only views via unique share linksGenerate link → URL created; recipient opens link → project visible read-only; revoke → link invalidShouldShareRoute

Non-Functional Requirements

IDRequirementMetricPriority
NFR-PRJ-001Dashboard shall render ≤100 projects within 200msTime-to-interactiveShould
NFR-PRJ-002All project interactions shall be keyboard-navigableWCAG 2.1 AAMust
NFR-PRJ-003PDF export shall complete within 3 seconds for projects with ≤500 itemsExport latencyShould
NFR-PRJ-004Drag-and-drop shall provide visual feedback within 16ms (one frame)Perceived responsivenessShould

Data Requirements

  • Project fields: { id, name, description, resolution, codec, framerate, aspectRatio, shootDates, crew, gearList, categories, version, baseline, providers, ... }
  • Gear list items: { id, name, category, quantity, notes, providerId, attributes, status }
  • Persistence: IndexedDB → cloud sync via storageService
  • Categories: User-defined, drag-to-reorder, with nested items

Constraints & Limits

  • Free tier: 2 projects maximum1
  • Pro tier: Unlimited projects
  • No hard limit on items per project (practical limit governed by browser memory)
  • Category names must be non-empty strings

Offline Behavior

  • Fully available offline — all project CRUD, item management, and PDF export work without network
  • Projects sync to cloud when connectivity is restored
  • Camera Package diagram positions persist locally

Dependencies

  • Requires: Authentication (REQ-AUTH-001) for cloud sync and tier enforcement
  • Requires: Device Library (REQ-DEV-001) for browsing and adding catalog items
  • Required by: Collaboration (REQ-COL-001) — shared projects depend on project CRUD
  • Required by: Templates (REQ-TPL-003) — save-as-template depends on project data
  • Required by: Analytics (REQ-ANA-001) — analytics aggregates project cost data
  • Required by: Versioning (REQ-VER-001) — baseline tracking per project

Accessing Projects

Click All Projects in the sidebar (under Projects) to see all projects, or click a project name to open its workspace. The page it opens is headed "Project dashboard", which is not the Production Dashboard — that is a separate rental/production overview with its own sidebar entry.

Creating a Project

  1. Click "New Project" or the "+" button in the sidebar
  2. Enter project name and optional details:
    • Description, client name
    • Production metadata (resolution, codec, framerate, aspect ratio)
    • Shoot dates
  3. Optionally select a template to pre-populate the gear list
  4. Click "Create Project"

The Project Workspace

The workspace opens in a tabbed layout:

TabDefaultPurpose
GeneralAlways onProject metadata, client info, technical specs
Camera PackageOnInteractive diagram for camera configurations
Power SummaryOnPower consumption and battery requirement math
Project RequirementsOnOutline requirements for the project equipment — incl. transportation vehicles, each picked from preset van/truck classes or entered as a custom free-text vehicle (v0.442.0, #248)
Auto GearOnAutomated rule-based gear suggestion generator
Gear ListAlways onMain equipment lists divided by departments
CrewOnTeam members with roles and contacts
ContractsOffCrew agreements with compensation, tariffs, clauses and a digital-signature flow. Per-user by design: each collaborator sees only their own; the owner and producer see all
CalendarOnPer-project event timeline and global schedule
PreproductionOnScript, shot list, floor plans, schedule, location scouting — and Call Sheets as its farthest-right sub-tab
DocumentsOnFile storage and reference document library
BudgetOnBudget planning with an external-spend actual model (v0.441.0, #280): external provider rows take the rental house's real quote as an editable actual (the system estimate is an apply-able hint), own gear and own-labour crew count as Eigenleistung inside the margin (never as spend), and insurance derives from each policy's annual premium pro-rated over the shoot period — plus catering calculator (people × days × rate), vehicle costs from transportation requirements, linked sub-rental actuals, %-of-crew overtime provision, and overtime conditions synced with time tracking + contracts
InsuranceOffInsurance coverage, valuation gaps, and policy tracking for project gear
RentalOnPrep checklists, sub-rental return tracking, and scratch sheets
CarnetOffATA Carnet logistics, case packing, and export to the German IHK eATA format
Camera LogsOnPer-take camera reports: scene, slate, take, lens, stop, timecode, circle takes
Daily Shooting ReportOffPer-day camera & sound report: cameras, cards + codecs, colour space, resolution, framerates, timecode, sound rolls & tracks
ActivityOnPer-project audit trail of edits and member actions

Only General and Gear List are always present. Every other tab is switched on or off per project — see Choosing which tabs appear below — and four of them (Contracts, Insurance, Carnet, Daily Shooting Report) start off, so a new project does not show them until you enable them.

Call Sheets is not a tab of its own. Since v0.496.0 (#338) it is the farthest-right sub-tab of Preproduction, immediately after Schedule — so Preproduction has to be enabled to reach it. This page listed Call Sheets as a top-level workspace tab until 2026-09-07. Old /call-sheets links still resolve; they redirect to the sub-tab.

Choosing which tabs appear

A production rarely needs all 18 sections. Which ones a project shows is a per-project setting, reachable from three places — all three write the same value:

  • the Choose Your Tabs panel in the new-project form, when you create the project;
  • the open project's menu → Configure Tabs;
  • the project card's menu on the dashboard → Configure Tabs.

General and Gear List have no switch — they are always available. Everything else can be turned off, and a tab you switch off disappears from the tab strip, from the mobile section board, and from the Export dialog, and a deep link naming it lands on General instead — the workspace bounces any ?tab= value that is not currently visible.

The setting travels with the project, so a collaborator sees the same set of tabs you do. It is not a per-device preference — unlike the Crew tab’s Tiles / List choice, which is.

Card colour

The optional accent stripe across the top of a project's dashboard card. It has three entry points, and all three write the same value:

  • the colour row in the new-project form, when you create the project;
  • the card's menu → Change Color, from the dashboard;
  • the colour row on the General tab, beside the project name, once the project is open (v0.727.0, #616). Until then the colour could only be changed from the dashboard — an open project had no way to set it.

Clicking the swatch that is already selected removes the colour, as does the crossed-out swatch at the end of the row. A project with no colour simply has no stripe.

Below 1024 px the tab strip is replaced by a section board — every section of the project as a tile, on one screen, with a line telling you what is in it.

  • The board — one tile per section, sized so they all fit without scrolling. On a tablet the tiles are grouped by production phase (Plan, Gear, People, Money, Shoot) and carry a value line; on a phone they are compact, which is what buys the extra row.
  • Tile colour — a tile is tinted only when something is outstanding. A quiet board means a healthy project.
  • The value line — the scale of the section, then what needs you: 128 items · 12 unassigned. Eight sections carry a number today; the rest show name and icon only, because no honest count exists for them yet. A launcher that shows a confident but invented number is worse than one that stays quiet.
  • The status line — days to the shoot, and how many sections need attention.
  • The section switcher — the one nav row inside a section. The grid button on the left returns to the board; the button beside it names the section you are in and opens a list of all of them, each with its description. On a viewport shorter than 700 px the switcher rides inside the header row rather than taking one of its own.
  • Where a project opens — the board the first time, and the section you were last in after that. That memory is per project, lives on the device, and is never synced.
  • A shared link always wins. Opening ?tab=crew lands on Crew whatever this device remembers.

Sections switched off in Configure Tabs never appear on the board, and neither do sections a collaborator is not permitted to see — the board reads the same visibility rules as the tab strip.

At 1024 px and wider nothing changes. The tab strip and its keyboard navigation (←/→ between tabs, Home/End to the ends) are exactly as they were.

Gear List Tab

The primary equipment management area organized into main sub-tabs (Camera, Lighting, Grip, Audio):

  • Sub-Tabs: Navigate quickly between major camera, lighting, grip, and audio departments, as well as an exclusive Special Setups tab for per-shoot-day car rig, crane, or underwater configurations.
  • Add items from the Device Library or create custom entries
    • Smart Suggestions: The typeahead input provides category-contextual and favorited item suggestions, complete with category badges, brand labels, and matched text highlighting.

    • How much of it is free: a suggestion you own carries a green 1/2 free badge — units available for these shoot dates over units owned. It turns red at 0/2 and names the projects holding the rest ("All in use — Night Shoot"). The Add multiple picker shows the same answer as an Owned 1/2 chip, so both ways in agree.

      The count is availability, not inventory: two C-Stands you own but have already committed to an overlapping shoot read 0/2, where they used to read "2 owned". Nothing is blocked — the suggestion stays selectable and you can add more than you own on purpose.

  • Organize items into nested categories with drag-and-drop
  • Edit quantity, notes, provider, and status inline
  • Bulk select for mass operations
  • Change tracking shows diffs since last export

"N crew-provided item(s) not yet requested"

A banner above the gear list counts rows assigned to a connected crew member for which no sub-rental request has been sent, and points you at each row's provider menu.

It reads the row's own status as well, because plenty of gear is arranged by phone, by text, or on the last job — no in-app request exists, and none needs to. A row at Requested, Approved or Picked up is not counted; neither is a Cancelled one. Only rows still at Needed are the ones nobody has been asked about, which is what the banner is for.

So there are two ways to clear it: send the request from the row's provider menu, or move the row's status to match what you already arranged. Note the per-row provider badge is a narrower thing — it reflects the in-app request only, so an Approved row you settled by phone shows no badge and is still, correctly, absent from the banner.

On a phone (below 640 px)

The gear list drops its nested cards below sm. A category becomes a full-width block separated from the next by a single line, and every item row sits flush against it — the borders, corner radius and side padding of two stacked cards cost about 31 px per side at 375 px, and that width goes to the item name instead.

  • One category header line — drag handle, name, item count, notes bubble and a button. Scan QR to add, Add Set, Add multiple, Import and Remove category all live inside that menu, each with its written label.
  • Quantity is a narrow centred field sized for up to four digits, not a full-width control.
  • Notes leave the row. A row with a note shows it read-only under the item name; tap it (or the pencil) to edit it in the Edit Device modal. A row without a note shows no notes control at all.
  • Status and provider render one size down from the row's primary controls.
  • A gear set keeps its coloured rail beside its members, and its package price takes its own line under the set name.

From 640 px up the cards, the inline action row and the inline notes field are unchanged.

Alternative options

Any item can carry an alternative — the backup choice if the primary item is unavailable — plus the reason for it. Open an item's edit modal (single item) and fill in Alternative item and Reason for alternative (e.g. Sony FX9 — if the FX6 is unavailable).

When an alternative is set, the gear list shows a clear two-column comparison directly beneath that item: Option A (the main item) and Option B (the alternative + reason). Items without an alternative are unchanged. Alternatives also appear as an indented sub-line under the item in the exported gear-list PDF, and are saved/synced like every other item field.

Camera Package Tab

A visual diagram showing how camera components connect:

  • Select camera body, monitor, wireless video, battery, and lens control
  • Connection lines auto-generate showing power, video, and data paths
  • Drag nodes to rearrange; positions save with the project
  • Gimbal Payload Validation: Automatically calculates the total weight of the mounted camera, lens, cage, and accessories, warning you if it exceeds the selected gimbal's maximum payload capacity.

Multiple Camera Packages

Projects can have multiple independent camera packages (e.g., A Cam, B Cam, C Cam):

  • Each package has its own camera body, monitor, wireless video, battery mount, and lens control configuration
  • Horizontal sub-tabs let you switch between packages within the Camera Package and Power Summary tabs
  • Power draw calculations and summaries are scoped per camera package
  • Auto-gear rules receive merged context from all packages, ensuring smart suggestions account for the full setup
  • Add packages via the "Add Camera Package" button; remove with the delete icon

Temporary Camera Packages

A camera package needed only for part of the shoot (a rental B-cam for a few days, a specialty rig for one setup) can be made temporary with its own rental period:

  • Switch the Camera Package tab to the Temporary view (or use Move to Temporary Gear on a permanent package and set its start/end dates).
  • In the Temporary view, a Rental period section lets you set the package's start and end date directly.
  • All devices in that package are consolidated into one dated card on the Temporary view of the Gear List — named after the package and organized internally by category (Camera, Camera Support, Monitoring, FIZ, Camera Batteries, Camera Accessories). Two temporary packages produce two independent dated cards.
  • The card stays in sync automatically: change the period and the card follows; move the package back to the entire period (or remove it) and its card is cleaned up.
  • The package label is carried through to the PDF logistics card, rental summary, and call sheets (e.g. "B Cam · Camera") so the block is clear when several packages overlap.

Duplicating a temporary gear card for another date

Recurring kit — the slider package on every outdoor day, the same rain covers for each exterior block — does not have to be re-entered each time. The copy button in a temporary gear card's header duplicates the whole card:

  1. Click the copy icon (between the reorder arrows and the delete button) on any temporary gear card.
  2. A dialog asks for the new period. It opens on the same date mode the original uses — a date range, or specific shoot days.
  3. In range mode, pick a start date and the end date fills in to match the original's length (a 3-day booking stays 3 days). Edit the end date yourself and the auto-fill stops.
  4. Confirm. The copy appears directly below the original with every item, quantity, provider, camera assignment, status and gear set carried over — then adjust whatever differs.

Details worth knowing:

  • The copy never inherits the original's dates. Confirm stays disabled until you set a valid period, so two cards can't silently double-book the same days in availability checks, budget or the PDF.
  • The copy is independent. It gets its own item ids and its own gear-set grouping, so editing, ungrouping or deleting one card never touches the other. Comments stay with the original booking.
  • Sync-owned cards have no copy button. The Time Tracking category and temporary camera-package cards are regenerated by their producer; duplicate the underlying package instead.
  • The whole duplicate is one action — a single undo (Ctrl+Z) removes the copy.

Crew Tab

Four rosters behind one pill switcher — Permanent, Temporary, Matrix (availability across the shoot dates) and Prep & Return — plus, on the permanent roster, a second Tiles / List switch that chooses how that roster is drawn.

LayoutWhat it isWhat it is for
TilesOne card per crew member with every field spelled out.Building a crew — adding people, linking contacts, filling in day rates.
ListA compact table: name, role, contact link, email, phone, day rate, one row per member, name column pinned left.Auditing a crew — who is still missing a phone number, whose role is blank, who is over budget.

Both views edit the same roster, and both are fully editable: the list's cells write through the same handlers the cards do, so a correction spotted while scanning the table is typed in the table. The chevron at the end of a row (or on a card) opens that person's unavailable periods and dietary needs. Drag-and-drop reorder works in both, and both draw the one order that carries to call sheets and PDF exports.

The layout choice is remembered per project and per device. It describes a screen, not the shoot, so it is never synced — switching to the table on a laptop does not re-paint a collaborator's phone. A four-person commercial usually reads better as tiles; a forty-person series is far quicker to audit as a list.

The list view scrolls sideways on a narrow screen. That is deliberate — a data table is the documented exception to the app's no-horizontal-scroll rule — and the name column stays pinned so a row is never a set of attributes belonging to nobody.

Arranging the columns. This is the one part of the table that is carried between your devices — the Tiles / List choice above describes a screen, the column arrangement describes how you read a roster. In list view a Columns button appears beside the Tiles / List switch. Drag a row in its panel to reorder the table, untick a column to take it out and tick it to bring it back; hidden columns stay listed so you can always find one to restore, and the last remaining one cannot be unticked. Widths are dragged on the right-hand edge of a column header in the table — with that edge focused, ← and → step the width and Shift + ← / → take a bigger step. Resizing is a pointer and keyboard affordance on tablet and desktop; on a phone the table scrolls sideways instead. Five columns are arrangeable — role, contact link, email, phone and day rate. The pinned name, the drag handle, the availability chevron and the delete button stay put: the first is what tells you whose row this is, and the chevron is the only way to open the detail row beneath it.

The arrangement is kept with your account, not with the project: the layout you set on a laptop is the one your tablet opens on, it survives a reload even offline, and a collaborator hiding a column never hides it for you. It is remembered per project, because column sets differ per production. Reset columns appears as soon as the arrangement differs from the default and restores the original order, the default set of columns and the original widths.

Budget Tab

Budget planning, actuals, the per-item cost breakdown, linked invoices and quotes, and the billing settings — all on one scrolling surface. Two switches at the top frame everything below them:

  • Budget view modePlanning is the calculation view for building a quote (actuals hidden); Actual tracks planned against real spend.
  • Budget modelFixed budget is a ceiling you plan against; Rate-based has no ceiling and follows rate × shoot length.

They are separate questions, so they are separate switches — but they now sit side by side in one strip at the top of the panel, rather than one under the header and the other buried below the summary cards.

On a phone (below 640 px)

The Budget tab drops its card chrome below sm. Each block — the panel header, the two switches, the summary, the budget sections, the item cost breakdown, linked invoices and quotes, billing settings — becomes a full-width block separated from the next by a single line. The tab's cards were nested two deep (the item cost card sat inside the budget panel card), and their borders and side padding cost about 40 px per side at 375 px.

  • Both switches fill the width in equal halves. Planning ⇄ Actual used to stretch its grey tray across the screen while its two labels stayed small in the left corner.
  • Item cost rows restack. Below 1280 px an item's name takes its own line and its Rental, Purchase, Insurance and Total cells fall into a labelled 2 × 2 block. The five-column table needs 320 px of fixed numeric columns before the name gets anything — at 375 px Insurance and Total used to render outside the card, clipped and unreachable, and at 1024 px the name itself was cut to ARRI ALEX….
  • The info callout keeps its tint, because that tint is what makes it a callout.

From 640 px up the cards, their padding and the panel order are unchanged; the item cost table returns at 1280 px.

Project Dashboard

The dashboard lists all projects with:

  • Project name and color badge (see § Card colour for the three places it can be set)
  • Progress bar — a visual indicator of production readiness
  • Status (Active, Completed, Archived)
  • Item count and last modified date
  • Quick actions: Open, Duplicate, Export, Archive

Progress Bars

Each project tile displays a progress bar that reflects how production-ready the project is. Progress is calculated across four dimensions, each weighted equally:

DimensionWhat it measures
ScheduleShoot dates and schedule completeness
AssignmentCrew roles filled vs. required
RatePer-item budgeting and pricing coverage
ChecklistPrep checklists and task completion

Only active dimensions (those with at least one relevant entry) count toward the overall percentage. The progress bar in the workspace header uses the same engine.

Deleting a Project

Delete lives in the menu on each project card. It takes two clicks:

  1. Delete — the item changes to Confirm? and a Cancel item appears beneath it. Nothing has happened yet.
  2. Confirm? — the project moves to Trash.

The armed Confirm? state waits indefinitely; it does not expire while you decide. Back out with Cancel, the Escape key, or a click outside the menu. Until v0.787.1 the confirmation reset itself after three seconds, so a pause longer than that silently disarmed the button and the next click re-armed it instead of deleting — the action looked inert.

Deleting is reversible twice over: the toast that follows offers Undo, and the project sits in Trash until you delete it permanently from there.

On phones the same confirmation is reachable by swiping a card left, which reveals Delete and then asks Confirm? / Yes / No.

Filtering & Sorting

  • Filter by status: Active / Completed / Archived / All
  • Search: Fuzzy search by project name
  • Sort: By name, date created, or last modified

Export

One Export button in the workspace toolbar opens a tabbed dialog — one tab per document type:

TabProduces
Gear ListThe gear-list PDF (project metadata, categorized items, quantities, notes, provider badges), plus CSV, label printing, and a preview. Department + provider filters, an optional Gear Status column, and the baseline/version controls live here.
Project BriefingThe crew briefing sheet — see below.
Crew ListA printable crew PDF and/or a .vcf contacts file. See Crew list export.
PreproductionSub-tabs: Documents (script, shotlist, schedule, breakdown, floor plan, floor plan + shotlist — with orientation, grouping and column options), Locations (scout report, all or one), Moodboard (per scene, or the project board).
Budget ReportThe budget PDF (per-item breakdown, category totals, budget vs actuals, cost distribution) or the budget CSV. The figures are the Budget tab's own.
Camera LogThe camera report PDF, or CSV / ALE / JSON, for all days or one shoot day.
CarnetThe ATA Carnet ZIP — General List PDF, German IHK eATA CSV, per-item text and photos.
Project BackupA complete, re-importable copy of the project (ZIP with images; JSON fallback). This is the action that used to be its own header button.

Tabs you switched off in the project workspace do not appear here. The dialog reads the same tab configuration as the workspace tab strip, so a project with Carnet disabled has no Carnet export tab. Collaborators without budget access see no Budget Report tab.

Exporting the gear list also bumps the project's version counter and sets a baseline for change tracking.

Crew list export

The Crew List tab produces either a PDF, a .vcf contacts file, or both.

  • The PDF lists name and role, with optional phone/email columns and optional day rates.
  • Every contact in the .vcf is named Name — Function (Project), and the project name is also appended to the surname field. That is deliberate: crew you work with repeatedly are already in your address book, and a plain name would merge the new card into the old one. The on-set function is also written to the contact's job-title field, and the project to its organisation field.

Briefing PDF

The Project Briefing tab of the export dialog produces the sheet the camera crew reads on the day. It is assembled from the project itself, so it is only ever as complete as the data behind it — an empty card is omitted rather than printed blank.

Page 1 — overview

  • Project facts — client, production company and address, production contact, rental house, primary location, project version.
  • Schedule — prep / shoot / return periods and travel days, plus the shoot locations each period is pinned to (from Production Hub). A set reads as Master · Set.
  • Crew — the contact sheet, grouped under department headings once more than one department is on the roster.
  • Delivery specifications — delivery resolution, aspect, codec, base frame rate, colour space.
  • Camera packages — every package at a glance: letter badge, body, label, battery plate and pack, total draw and packs per shoot day.
  • Lens package — every selected lens with focal length, T-stop and mount, plus front diameter, close focus, length, weight and image circle resolved from the device catalog, and colour badges showing which camera packages each lens is linked to.

One page per camera package

Devices roster · Format (including slow motion) · Power (total draw, current at the mount's high/low voltage, battery and usable capacity, runtime per pack, packs per 10-hour day, a per-device breakdown, and any pin / D-Tap / hot-swap limit worth checking) · Rigging · Camera support · Tripod config · Storage & media with the recording plan (target hours + spares) · Mattebox & filters · Monitoring · Video transmission · User buttons · Special setups with their contents · Transitions · Connection diagram.

Logistics page

ATA carnet · Equipment weight · Transportation · Pickup appointments · Carts & accessories · Temporary gear · Crew schedule (confirmed / tentative / unavailable days per member, collapsed into date ranges) · Notes.

Lens and device specs are matched against the device catalog by name. A renamed device still resolves — matching ignores case, spacing and punctuation, and follows catalog aliases — but a fully custom name has no catalog entry and therefore shows no specs. The Power figures are the same numbers as the project's Power Summary tab.

Tips

  1. Name clearly: Include client name and date (e.g., "Acme Inc — March 2026")
  2. Use categories: Keep long lists scannable
  3. Add notes: Record serial numbers, special requirements
  4. Archive when done: Keep the dashboard focused on active work
  5. Use templates: Pre-populate recurring setups

Scan-to-add (v0.216.0)

Every category in the project gear list has a Scan to add button next to Add Gear Set. Tap it and the device camera opens; scanning a QR code triggers one of three flows:

QR typeBehaviour
Owned-gear item QR (/owned-gear?item=…)The item is added directly to the active category as a new row. Toast confirms the add. No modal.
Gear-set QR (/scan?type=set&id=…)A confirmation modal opens with a per-row diff (new, already present, not in inventory, partial — N of M). Confirming adds only the eligible rows. Duplicates skipped.
Unknown / not in this project's inventoryToast: "No matching item or set in this project." No-op.

Cold landing from outside the app

Scanning a printed Set-QR with your phone's camera (outside the app) opens the URL in Safari/Chrome. After sign-in, the app:

  1. Routes you to your most recently-opened project.
  2. Surfaces a hint: "Tap a category's Scan button to add: <set name>."
  3. The next category's Scan button you tap skips the camera and opens the confirm modal directly for the requested set.

If you don't have a recent project, an error page appears with shortcuts to "Open a project" or "View set in inventory".

Collaboration

A collaborator on someone else's project can scan the project owner's printed Set-QR — the lookup goes through the same shared-gear-set channel that powers the Add Gear Set popover. If the owner hasn't shared the set with you, the scan returns "not found" (see the toast).

Why the QR doesn't change

The URL only contains the set's id — there's no version hash. This means:

  • One physical label per set, printed once, valid forever.
  • Editing the set after printing is always safe.
  • Every scan resolves to the current state of the set's items, not the snapshot from when the label was printed.

Leaving Components Out of a Line

An item's component list describes the asset. A gear-list row or a sub-rental line describes one handover — and the two disagree constantly: the rental house is not sending the clamp this time; the camera ships without its matte box because production already has one.

Tick components off per line instead of editing the item:

SurfaceHow
Gear listThe Components section in the item's edit modal.
Sub-rentalComponents… in the row's ⋯ menu. A badge shows how many are excluded.

An excluded component is left out of the gear-list row, the gear-list PDF, the pickup list, the sub-rental note, the priced-items table, and the per-unit condition grids on delivery and return notes — it is treated as not part of that handover at all.

The item in Owned Gear is never changed. This is per-line and fully reversible; clearing it restores the component everywhere. If the sub-rental is linked to a project gear list, the setting carries across in both directions.

Once the delivery note is finalized the selection locks, and the frozen record keeps exactly what was handed over. If every component of a line is excluded, the notes fall back to the simple single-row layout rather than printing an empty condition grid.


Last Updated: 2026-09-10 Version: 0.790.2

Footnotes

  1. Source of truth: FREE_PROJECT_LIMIT = 2 in app/src/data/user/paywallLimits.js, alongside the other three paywall limits. usePaywallModel.js imports it and exposes it as paywall.freeProjectLimit. This footnote named usePaywallModel.js line 18 until 2026-09-07 — that file only imports the constant, and its line 18 is readTimeTrackingProjectCount. 2