Skip to content

content: quantity-tracked assets & consumables (#2337) + duplicate-booking dates (#2667) - #184

Merged
carlosvirreira merged 1 commit into
mainfrom
content-update/pr-2337-quantity-tracked-assets
Jun 30, 2026
Merged

content: quantity-tracked assets & consumables (#2337) + duplicate-booking dates (#2667)#184
carlosvirreira merged 1 commit into
mainfrom
content-update/pr-2337-quantity-tracked-assets

Conversation

@carlosvirreira

@carlosvirreira carlosvirreira commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Triggered by

  • shelf.nu PR #2337: feat: Quantitative AssetsView PR (MAJOR)
  • shelf.nu PR #2667: feat(bookings): set start/end dates in the duplicate dialogView PR

Product change summary

Quantitative Assets (#2337) introduces a per-asset tracking method: assets are either Individually tracked (one record = one item, as before) or Tracked by quantity (one record = a pool of identical units). Quantity-tracked assets add a quantity, unit of measure, optional low-stock threshold, and a consumption type (Used up / Returnable). Quantity flows through custody (portions per person), bookings (reserve a quantity from available stock), restocking, low-stock email alerts to admins, and asset models. Verified live against main source (schema enums AssetType/ConsumptionType, the TrackingMethodCards + quantity fields in the asset form, quantity custody / adjust-quantity / booking-quantity routes, and the low-stock alert email).

Duplicate-booking dates (#2667) lets users pick the new booking's start/end date+time in the duplicate dialog (previously a one-click copy to a fixed now-to-tomorrow window), validated by the same rules as the new-booking form.

Content changes

New content

  • `content/knowledge-base/quantity-tracked-assets-and-consumables.mdx` — new how-to covering tracking methods, creating a quantity-tracked asset, consumption types, quantity-aware custody, quantity in bookings, low-stock alerts, and asset models
  • `content/glossary/quantity-tracked-assets.mdx` — new term (defines quantity-tracked vs individually-tracked, and consumables) for SEO / AI comprehension
  • `content/updates/quantity-tracked-assets.mdx` — changelog entry for the launch (links to the KB)
  • `content/updates/duplicate-booking-dates.mdx` — changelog entry for #2667

Factual corrections / enhancements

  • `content/knowledge-base/adding-new-assets.mdx` — the create flow now includes a tracking method choice; added the step + a pointer to the new article
  • `content/features/asset-pages.mdx` — Availability Status now notes quantity-tracked assets show available vs total stock and unit of measure

Screenshots still needed (manual capture required)

  • `content/knowledge-base/quantity-tracked-assets-and-consumables.mdx` — one TODO for the New-asset form with Tracked by quantity selected. Not auto-captured: Quantitative Assets merged ~24h ago (2026-06-29) with follow-up fixes still landing, so its deployment state on app.shelf.nu is unconfirmed. Capture once the feature is confirmed live.

Deferred (needs human / CTO direction — not a cop-out)

These are deliberately not in this PR. Honest reasons:

  1. 22 alternatives comparison pages. Quantity / stock / consumables tracking is parity, not a clean Shelf win against several competitors (Sortly, EZOfficeInventory, Asset Panda, Wasp all market quantity tracking). Shelf is closing a known gap. Honest repositioning across 22 pages is a strategic call; overclaiming would make the comparison pages inaccurate. Recommend a focused positioning pass with direction on framing.
  2. New `/features/quantity-tracking` greenfield page + navbar / `features.ts` icon. A new top-level marketing surface is a positioning decision, and the feature is CTO-owned and <48h old. Recommend sign-off before adding it to the Features mega-menu.
  3. `src/data/pricing.features.ts` / pricing pages. Plan gating is unverified — no feature flag in `apps/webapp/app/utils/env.ts` and no obvious permission gate found. Per "don't fabricate plan gates," deferred until gating is confirmed against the route loader.
  4. Solutions / industries pages. Best done with the positioning pass once framing (1) is decided.

Review notes

Impact scope

  • End users affected: anyone managing supplies/consumables; everyone creating assets (new step); anyone duplicating bookings
  • Prospects affected: evaluators comparing inventory / stock / consumables tracking
  • Pages created: 4
  • Pages modified: 2
  • Pages flagged for review: alternatives ×22, pricing, new feature page, solutions/industries (see Deferred)

Generated by Shelf Content Intelligence — PR→Website Sync

Summary by CodeRabbit

  • New Features

    • Added support for quantity-tracked assets and consumables, including quantity, unit of measure, low-stock thresholds, and consumption types.
    • Booking duplication now lets you choose the new booking’s dates up front, with validation matching the standard booking flow.
  • Documentation

    • Added new guides and glossary content for quantity-tracked assets.
    • Updated asset setup and feature pages to reflect the new tracking options and related behaviors.

…booking dates (#2667)

Triggered by:
- Shelf-nu/shelf.nu#2337 (feat: Quantitative Assets)
- Shelf-nu/shelf.nu#2667 (feat: duplicate booking dates)

New KB article, glossary term, and changelog for quantity-tracked assets;
updated asset-creation KB and asset-pages feature; changelog for the
booking duplicate-dialog date picker.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

Preview deployment

https://64b77ff0.shelf-nu.pages.dev

@coderabbitai

coderabbitai Bot commented Jun 30, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

Adds a new glossary page and knowledge-base article for quantity-tracked assets and consumables, updates the asset-pages feature doc and adding-new-assets article to reference the new content, and adds two update announcement pages: one for quantity-tracked assets and one for booking duplication date selection.

Changes

Quantity-Tracked Assets Documentation

Layer / File(s) Summary
Glossary entry
content/glossary/quantity-tracked-assets.mdx
New glossary page with definition, individually-tracked vs quantity-tracked comparison table, consumables section, why-it-matters rationale, and related terms links.
Knowledge-base article
content/knowledge-base/quantity-tracked-assets-and-consumables.mdx
New article covering creation workflow, consumption types (used-up vs returnable), quantity-aware custody, booking reservation formula, low-stock alerts, asset models, and tracking method guidance.
Feature page and adding-assets updates
content/features/asset-pages.mdx, content/knowledge-base/adding-new-assets.mdx
Availability Status section updated for quantity-tracked display; adding-assets workflow gains a tracking method step and link to the new article; related articles list extended.
Update announcement: quantity-tracked assets
content/updates/quantity-tracked-assets.mdx
New update page announcing quantity-tracked asset feature with link to the setup article.

Duplicate Booking Dates Update Page

Layer / File(s) Summary
Duplicate booking dates page
content/updates/duplicate-booking-dates.mdx
New update page documenting the booking duplication dialog that now collects start/end date and time upfront, with the same validation rules as the new-booking form.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately reflects the two main content updates in the pull request.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch content-update/pr-2337-quantity-tracked-assets

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@content/glossary/quantity-tracked-assets.mdx`:
- Around line 16-19: The glossary page frontmatter is placing the social preview
image under seo.image, but src/lib/seo.ts only reads a top-level image field, so
the custom OG image is ignored. Move the image value out of the seo block and
into the top-level frontmatter for this MDX file, keeping the rest of the seo
metadata unchanged.

In `@content/updates/duplicate-booking-dates.mdx`:
- Line 9: The copy in duplicate-booking-dates.mdx uses the British spelling
“afterwards”; update the wording to American English by changing it to
“afterward” in the duplicate booking description. Keep the surrounding sentence
structure the same and adjust only the affected text in the booking duplication
copy.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 4b16e3d5-e07f-4ff4-b89e-03e0b257367f

📥 Commits

Reviewing files that changed from the base of the PR and between 11195d4 and 7310448.

📒 Files selected for processing (6)
  • content/features/asset-pages.mdx
  • content/glossary/quantity-tracked-assets.mdx
  • content/knowledge-base/adding-new-assets.mdx
  • content/knowledge-base/quantity-tracked-assets-and-consumables.mdx
  • content/updates/duplicate-booking-dates.mdx
  • content/updates/quantity-tracked-assets.mdx

Comment on lines +16 to +19
seo:
title: "What Are Quantity-Tracked Assets? | Definition & Examples"
description: "Quantity-tracked assets are fungible items managed by count rather than individual identity — supplies, cables, and consumables. Learn how they differ from individually-tracked assets."
image: "/images/og/glossary-quantity-tracked-assets.png"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Move the OG image to top-level frontmatter.

src/lib/seo.ts reads frontmatter.image, not seo.image, so the custom image here is ignored and this page will fall back to the default social preview image. Put this value on a top-level image key instead.

Suggested fix
 seo:
   title: "What Are Quantity-Tracked Assets? | Definition & Examples"
   description: "Quantity-tracked assets are fungible items managed by count rather than individual identity — supplies, cables, and consumables. Learn how they differ from individually-tracked assets."
-  image: "/images/og/glossary-quantity-tracked-assets.png"
+image: "/images/og/glossary-quantity-tracked-assets.png"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
seo:
title: "What Are Quantity-Tracked Assets? | Definition & Examples"
description: "Quantity-tracked assets are fungible items managed by count rather than individual identity — supplies, cables, and consumables. Learn how they differ from individually-tracked assets."
image: "/images/og/glossary-quantity-tracked-assets.png"
seo:
title: "What Are Quantity-Tracked Assets? | Definition & Examples"
description: "Quantity-tracked assets are fungible items managed by count rather than individual identity — supplies, cables, and consumables. Learn how they differ from individually-tracked assets."
image: "/images/og/glossary-quantity-tracked-assets.png"
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/glossary/quantity-tracked-assets.mdx` around lines 16 - 19, The
glossary page frontmatter is placing the social preview image under seo.image,
but src/lib/seo.ts only reads a top-level image field, so the custom OG image is
ignored. Move the image value out of the seo block and into the top-level
frontmatter for this MDX file, keeping the rest of the seo metadata unchanged.

layout: "update"
---

Duplicating a booking used to be a one-click confirm that always created the copy with a default "now to tomorrow" window, leaving you to edit the dates afterwards. Now the duplicate dialog asks for the new booking's **start and end date and time** up front, defaulting to the next valid working slot.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Use American English "afterward" instead of "afterwards".

In American English, "afterward" is the preferred variant. "Afterwards" is more commonly used in British English and other dialects.

📝 Proposed fix
-..." window, leaving you to edit the dates afterwards. Now the duplicate dialog asks for the ...
+..." window, leaving you to edit the dates afterward. Now the duplicate dialog asks for the ...
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Duplicating a booking used to be a one-click confirm that always created the copy with a default "now to tomorrow" window, leaving you to edit the dates afterwards. Now the duplicate dialog asks for the new booking's **start and end date and time** up front, defaulting to the next valid working slot.
Duplicating a booking used to be a one-click confirm that always created the copy with a default "now to tomorrow" window, leaving you to edit the dates afterward. Now the duplicate dialog asks for the new booking's **start and end date and time** up front, defaulting to the next valid working slot.
🧰 Tools
🪛 LanguageTool

[locale-violation] ~9-~9: In American English, ‘afterward’ is the preferred variant. ‘Afterwards’ is more commonly used in British English and other dialects.
Context: ..." window, leaving you to edit the dates afterwards. Now the duplicate dialog asks for the ...

(AFTERWARDS_US)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@content/updates/duplicate-booking-dates.mdx` at line 9, The copy in
duplicate-booking-dates.mdx uses the British spelling “afterwards”; update the
wording to American English by changing it to “afterward” in the duplicate
booking description. Keep the surrounding sentence structure the same and adjust
only the affected text in the booking duplication copy.

Source: Linters/SAST tools

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant