Skip to content

feat(catalog): add tool showcase carousels#104

Merged
jal-co merged 1 commit into
mainfrom
feat/tool-showcase-carousel
Jul 15, 2026
Merged

feat(catalog): add tool showcase carousels#104
jal-co merged 1 commit into
mainfrom
feat/tool-showcase-carousel

Conversation

@jal-co

@jal-co jal-co commented Jul 15, 2026

Copy link
Copy Markdown
Collaborator

What

  • require 1–6 creator-uploaded site thumbnails for new tool/site submissions
  • add accessible screenshot carousels to catalog, detail, dashboard, and curator-review surfaces
  • add descriptive external pricing: Free, Freemium, or Paid
  • add a top-level Tools catalog category while preserving each listing’s specific subcategory
  • update the tool review standard to tool-alpha-2

Why

Tool listings need creator-controlled presentation rather than relying on fragile Open Graph images. They also need catalog-native discovery and pricing context without implying that Modulora handles checkout.

How

Uploads use the existing Modulora R2 media binding. Submission accepts only immutable image URLs under the signed-in user’s exact R2 prefix, validates UUID-shaped object paths, and confirms every object exists before creating a review version. Existing approved tool listings remain compatible and use their mirrored Open Graph image or domain fallback until resubmitted.

Pricing is display/filter metadata only; visits and checkout remain external. Tools appear in the top-level Tools category and retain subcategories such as Utilities.

Tour

  1. packages/db/src/schema.ts and migration 0034_many_longshot.sql add showcase URLs and pricing metadata. The large snapshot is generated Drizzle metadata.
  2. apps/web/src/routes/api/upload-tool-image.ts, lib/tool-showcase.ts, and lib/tool-listings.ts implement authenticated storage and fail-closed ownership/existence validation.
  3. components/tool-listing-editor.tsx adds upload, ordering, removal, and pricing controls.
  4. components/tool-image-carousel.tsx provides the reusable accessible carousel; catalog/detail/dashboard/review surfaces consume it.
  5. routes/components.index.tsx adds Tools and Freemium filters plus tool pricing labels.
  6. Docs and tool-alpha-2 describe the updated submission/review contract.

Testing

  • pnpm --filter @modulora/db typecheck
  • pnpm --filter web typecheck
  • pnpm --filter web test (82 passed, 9 credentialed integration tests skipped)
  • pnpm --filter web build
  • pnpm --filter web build-storybook
  • git diff --check
  • drizzle-kit push --force; confirmed both production columns exist
  • browser-tested authenticated R2 upload without submission
  • browser-tested Tools filtering, pricing labels, card navigation, responsive overflow, 44px carousel controls, and live slide announcements

Screenshots

  • Upload and pricing editor: /tmp/tool-showcase-editor.png
  • Tools category and pricing card: /tmp/tool-category-pricing-card.png
  • Carousel Storybook state: /tmp/tool-carousel-final.png

Signed-off-by: Justin Levine <20596508+jal-co@users.noreply.github.com>
@jal-co
jal-co requested a review from a team as a code owner July 15, 2026 22:25
@jal-co
jal-co merged commit 94a2623 into main Jul 15, 2026
2 checks passed
@jal-co
jal-co deleted the feat/tool-showcase-carousel branch July 15, 2026 22:27
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