Skip to content

Screenshots manifest ​

Not linked in the sidebar. This is the shot list for the real captures that replace the grey placeholder PNGs currently under apps/docs/img/guide/. Every row lists the file, the in-app URL to visit, what should be on screen when you capture it, and crop guidance. Capture at a normal desktop width (~1440px) unless noted "mobile" β€” several of the no-login surfaces are meant to be shown as they actually appear on a phone.

Sections marked shots to take have no file on disk yet. The guide pages they belong to deliberately reference no image at all rather than linking a missing one, so shooting a row here also means adding the ![]() line to the page it's listed under.

index.md ​

FileURLState to showCrop
dashboard-home.png/homeSigned in as an Owner/Admin on a workspace with real data β€” today's operations, overdue & due today, at least one found report, and system health widgets all populated (not empty states)Full widget grid, top to bottom; can be a tall screenshot
sidebar-full.png/assets (or any authenticated page)Sidebar expanded, showing the "Asset management", "Scheduling" and "Organization" label groups with their full childrenCrop tightly to just the sidebar column

getting-started.md ​

FileURLState to showCrop
onboarding-wizard-step2.png/onboarding (step "outfit" β€” a brand-new Owner's first sign-in)Step 2 of 6, "What kind of outfit is this?" with the option cards and the whyWeAsk line visible under the questionFull wizard card, centred
onboarding-checklist.png/home (a workspace that just finished setup)The first-run checklist widget, at least 2 tasks complete and 2-3 still open, so both states are visibleJust the checklist widget
settings-printers-add-relay.png/settings/printersThe "Add relay" dialog open, showing the one-time key in a copy box and the pre-filled install commandThe dialog only

assets-and-labels.md ​

FileURLState to showCrop
assets-index.png/assetsA populated list (10+ rows) with category/location/status columns visible, one or two Shelf-code chips showingTable area, header row included
asset-detail-overview.png/assets/:assetIdAn asset with a title, photo, category, location and a custom field or two β€” general overview state, not a special tabTop of the overview page including the header actions
label-preview-12stack.pngAsset detail β†’ "Print label…" dialog, 12-stack preset selectedLive label preview showing QR, stacked Shelf code lines, barcode, and found-host stripThe preview canvas + preset picker
qr-scanner.png/scannerCamera view active, ready to scan (a real device or a browser with camera permission granted)Full page β€” this is meant to look like a phone screen; capture on a narrow viewport if possible

bookings.md ​

FileURLState to showCrop
bookings-index.png/bookingsList with a mix of statuses (DRAFT, RESERVED, ONGOING, at least one OVERDUE badge)Table area
booking-detail-overview.png/bookings/:bookingId (overview tab)A RESERVED or ONGOING booking with several assets/kits added, custodian and dates visibleTop of the page through the gear list
calendar-view.png/calendarA week with 4-5 bookings visible, different status coloursFull calendar grid

signing-in.md ​

None of these exist yet β€” both are shots to take.

FileURLState to showCrop
login-page.png/login (signed out)The full sign-in surface: "Continue with Google" above the divider, email and password below it, and the one-time-password option underneathFull card β€” capture on a narrow viewport too if it's cheap
settings-team-invite.png/settings/team/users β†’ Invite a userThe invite dialog with an email filled in and the role picker open, showing Administrator / Base / Self serviceThe dialog only

kits-and-custody.md ​

None of these exist yet β€” all three are shots to take.

FileURLState to showCrop
kit-detail-overview.png/kits/:kitIdA kit with 6+ member assets (at least one quantity-tracked slice), its location and status badge visibleTop of the page through the member list
assign-custody-dialog.pngAn asset's detail page β†’ Assign custodyThe custodian picker open, with at least one non-registered member visible in the list so the "no login needed" point is legibleThe dialog only
custody-booking-warning.pngAssign custody on an asset that is already on a RESERVED bookingThe amber warning box naming the upcoming booking, with its linkThe warning box plus the dialog's action buttons

audits.md ​

None of these exist yet β€” all four are shots to take. Until they are, the audits page carries no images at all rather than linking placeholders.

FileURLState to showCrop
audits-index.png/auditsA list with a mix of statuses β€” at least one PENDING, one ACTIVE and one COMPLETED, plus one carrying an overdue badgeTable area, header row included
audit-start-from-location.png/locations/:locationId β†’ Start an auditThe dialog with name, description, due date and assignee filled in, and the asset count for the location visibleThe dialog only
audit-scan-drawer.png/audits/:auditId/scanMid-audit on a phone: camera live, drawer showing several found rows, one unexpected row, and the running expected/found/missing countsFull page β€” mobile viewport
audit-completed-summary.png/audits/:auditId (a COMPLETED audit)The four counts (expected, found, missing, unexpected) and the completion note, with a couple of MISSING rows belowTop of the overview through the first few asset rows

reports.md ​

None of these exist yet β€” both are shots to take.

FileURLState to showCrop
reports-index.png/reportsThe full grid of reports grouped by category (Bookings, Assets, Custody)Full page
report-overdue-items.png/reports/overdue-itemsPopulated: KPI tiles showing a non-zero overdue count and a value at risk, table beneath with a mix of duration badgesHero tiles plus the first few table rows

barcodes-and-codes.md ​

None of these exist yet β€” both are shots to take.

FileURLState to showCrop
code-display-preference.png/settings/generalThe code display selector open, showing all the options with their example chips (QR Code ID, SAM ID, Shelf code, and the barcode types)The selector popover only
asset-barcodes-field.png/assets/:assetId/editThe barcodes section with two barcodes added of different types, showing the type pickerJust the barcodes section

printing-labels.md ​

settings-printers-add-relay.png and label-preview-12stack.png are already listed above. The rest are shots to take.

FileURLState to showCrop
settings-printers-list.png/settings/printersBoth tables populated: a relay with a recent "last seen", and printers showing a mix of Online and Offline-since badges, with the "Find printer" button visibleBoth tables
settings-labels-presets.png/settings/labelsThe preset gallery with the brand picker above it, and at least one category showing a pinned presetThe gallery plus the brand picker
calibration-print.pngA physical photo, not a screen captureThe printed calibration label on 25mm tape with a ruler alongside it, ticks and the 10mm square both readableClose crop on the tape and the ruler

lost-and-found.md ​

FileURLState to showCrop
found-portal-landing.pngfound.artgrp.au (or the equivalent brand host in a non-prod environment)The landing page with the manual code-entry field, no code entered yetFull page β€” mobile viewport
found-portal-report-form.pngfound.artgrp.au/{code} for a linked assetItem title/category shown, report form below it with name/contact/message fieldsFull page β€” mobile viewport
found-reports-dashboard.png/homeThe Found Reports widget with 2-3 recent reports, each linking to an assetJust the widget

reminders.md ​

None of these exist yet β€” both are shots to take.

FileURLState to showCrop
reminders-index.png/remindersA populated list with a mix of near-future and overdue reminders across several assetsTable area
set-reminder-dialog.pngAn asset's Reminders tab β†’ Set reminderThe dialog filled in: name, message, a future date/time, and at least one team member selectedThe dialog only

organising-your-gear.md ​

None of these exist yet β€” all three are shots to take.

FileURLState to showCrop
custom-field-form.png/settings/custom-fields/newThe form with a type selected (e.g. Date), help text filled in, and "Use for select categories" switched on with a couple of categories pickedThe form, top to bottom
asset-model-new.png/settings/asset-models/newA model filled in with name, category, default valuation and a cover photoThe form only
bulk-create-from-model.png/assets/new?bulk=1 with a model selectedThe Batch row showing a name template with {i}, a count, and the live preview of the generated namesThe Asset Model and Batch rows together

workspace-settings.md ​

None of these exist yet β€” all three are shots to take.

FileURLState to showCrop
settings-bookings-overview.png/settings/bookingsThe full settings page scrolled to show at least the Automation and Booking time restrictions cardsA tall screenshot covering several cards
working-hours-schedule.png/settings/bookings (working hours enabled)The weekly schedule grid with a mix of open/closed days, plus one date override listed below itThe working hours card and the overrides list
settings-qr-codes-pool.png/settings/qr-codesBoth lists populated: unprinted pool codes and printed-awaiting-link codes, with the generate-batch control visibleBoth lists

Notes for whoever shoots these ​

  • Use a workspace seeded with realistic production-company data (via the setup wizard or the onboarding seed plan), not an empty dev database β€” several shots specifically need non-empty states to be useful as documentation.
  • Where a page has both a staff (logged-in) view and a public (no-login) view, the public ones are called out above as "mobile viewport preferred" β€” they're genuinely meant to be opened on a phone by people with no Shelf account.
  • Redact or use placeholder data for anything that looks like a real client's contact details, a real crew member's ABN/TFN, or real banking details before these ship in the public docs.

Everything on this site is written by Artefact Group for our own installation. Shelf is a fork of the AGPL-3.0 licensed Shelf.nu project β€” for upstream’s own documentation, see docs.shelf.nu.