Skip to content

feat: export products as CSV or JSON - #349

Merged
simonvanlierde merged 6 commits into
mainfrom
feat/product-export
Sep 28, 2026
Merged

simonvanlierde merged 6 commits into
mainfrom
feat/product-export

Conversation

@simonvanlierde

Copy link
Copy Markdown
Contributor

Products can be exported from the product page, or as the current filtered results from the list, as CSV or JSON. The backend adds GET /v1/products/export (the list's filters, capped at 100 base products plus their components) and GET /v1/products/{id}/export, with a stricter rate limit. The owner appears only when their profile is public, as on the product page. Bulk data stays with the dataset release; downloading everything you contributed is #343.

  • Also fixes an intermittent failure when deleting a product with components (separate commit).

Closes #115

@simonvanlierde simonvanlierde mentioned this pull request Sep 28, 2026
25 of 35 tasks
Deleting a product walks each component's parent at flush time. Whether an
unloaded parent was still cached depended on garbage collection, so the delete
could fail on the raise-on-lazy-load guard. Load it explicitly.
- add GET /v1/products/export with the list filters and GET /v1/products/{id}/export, capped at 100 base products with their components
- write CSV rows per product and component with release column names, owner usernames only for public profiles, and guarded formula cells
- rate-limit exports more strictly than reads, and accept text/csv on export routes
- add an export menu to the product page and the filtered product list
@codecov

codecov Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

📢 Thoughts on this report? Let us know!

simonvanlierde and others added 4 commits September 28, 2026 13:48
- cap component trees at 20 levels on create and export, and exports at 5,000 components, sharing one level walk between tree loaders
- keep the validation-error schema on the export 422 responses
- hide native "My products" export until exports save on the device
- return focus from the export menu and failure dialog, mark the export button busy, and confirm a finished download
- release the web download URL after the click
- cover the CSV formula guard, nested deletes, authenticated export and search filters in tests
- document the export size limits
… at 10

- return 400 for exports past the product, component or depth limits, and for too-deep component creation, so the 422 schema stays the validation error
- lower the component depth limit to 10 levels
- type the vendored button ref as its Pressable instance and attach the export menu ref directly
@simonvanlierde
simonvanlierde merged commit 72f7c9e into main Sep 28, 2026
25 checks passed
@simonvanlierde
simonvanlierde deleted the feat/product-export branch September 28, 2026 12:04
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.

feature request: Export products in frontend (CSV/JSON)

1 participant