Every release to the DirectoryLaunch boilerplate, newest first. Lifetime updates are included with every license.
Catalogue search now matches full product descriptions
Improved
The projects/catalogue API now searches the full description of each item, not just its name and short description — so buyers find products by details buried in the long copy. The endpoint also accepts a q query param as an alias for search.
Details
GET /api/projects matching now spans name, short_description, andfull_description (case-insensitive), widening recall for detail-heavy listings.
The endpoint reads ?q= first and falls back to ?search=, so either query param works — handy for search UIs that standardise on q.
Length and content validation on the search term is unchanged, so existing 4xx behaviour is preserved.
Auto-fulfil print-on-demand orders with Printful
New
Sell physical products with zero inventory: connect Printful, sync your catalogue, and every paid order is submitted for print and shipping automatically — with tracking flowing back to the buyer.
Details
Connect Printful with a store-scoped PRINTFUL_API_KEY and click Sync Printful products in the admin — your catalogue imports into the storefront as products with prices and variants (product_source: 'printful').
Fulfilment runs inside the verified Stripe webhook: when a POD order is paid, the platform records the order, decrements stock, and submits a Printful v2 order from the buyer's shipping address — you never call Printful yourself.
Safe by default: paid orders land in Printful as drafts you confirm manually. Flip PRINTFUL_AUTO_CONFIRM=true when you're ready to send them straight to production.
Never silently lost: if Printful is unconfigured or a call fails, the order is still saved with a fulfillment_error so it surfaces in the admin Orders screen.
Shipment tracking flows back via a Printful webhook at /api/webhooks/printful — the buyer gets a Track shipment link in their account.
Full setup — token, sync, the paid-order flow, auto-confirm and tracking — is documented in Store & Fulfillment. Rides on the existing 0002_add_store_commerce.sql migration.
Customer account hub & Save for later
Improved
Shoppers get a real account area — track orders, manage the cart, and save shipping addresses — plus Save for later in the cart so they can park items without losing them.
Details
New account area with Orders, Cart and Addresses tabs — buyers can review past orders, edit their cart, and store shipping addresses for faster checkout.
Save for later: move an item out of the active cart without deleting it, then push it back with Move to cart — line-item selection means the subtotal only counts what's actually selected for checkout.
The You might also like recommendations now appear in both the cart drawer and the account cart, surfacing related products at the point of purchase.
Builds on the existing store cart — no schema changes; saved items and addresses persist per shopper.
Full-screen promo interstitial
New
A new full-screen promotion placement that greets visitors with a rich, dismissible modal — image, headline, benefit bullets and a call-to-action — on top of the existing banner and card ads.
Details
New interstitial placement alongside the top banner and catalog/detail cards — a centred modal with a cover image, headline, description, benefit bullets and a primary CTA.
Respects the visitor: it's dismissible (with a clear "No thanks" opt-out) and shown once per session rather than on every page view.
Wired through the same promotions system as the other placements, so the copy and CTA are editable in the admin and on the public /promote form.
Search-engine-friendly catalog & filters
Improved
The browse catalog now lives in the URL and renders on the server, so Google can crawl every page and category — not just the first one.
Details
Page number, category, pricing, sort and search now live in the URL and are server-rendered, so each state has a real, shareable, crawlable address.
Pagination renders proper <a href> links that Googlebot can follow, and every page sets its own canonical tag; out-of-range pages return a 404 instead of an empty list.
Category pages render all of their listings server-side and are self-canonical, while in-category sort and search still run instantly on the client.
The sitemap now emits a real /categories/{slug} URL for every category that has a live listing, instead of pointing everything back at the homepage.
Catalog queries are consolidated into a shared, cached data layer reused by the homepage, category pages and the projects API — no schema changes required.
Edit sponsor cards in the admin
Improved
Sponsor cards are editable now — the same in-place editing we added for promotions, applied to the sponsors panel.
Details
Each sponsor row gets an Edit button that prefills the form and saves changes in place — the sponsor dialog was previously create-only.
Wired straight to the existing sponsors API, so no backend or schema changes are needed.
Edit promotions & per-placement ad copy
Improved
Promotions are now editable from the admin, and you can write placement-specific ad text for the top banner and the catalog/detail cards.
Details
Promotions are editable now: each row gets an Edit button that prefills the form and saves changes in place — the admin form was previously create-only.
Two new optional copy fields — a short banner text (≤50 chars) and a longer catalog/detail text (≤100 chars) — let you tailor the message to where the ad runs.
The fields surface in both the admin and the public /promote form, revealed based on the selected placement, and are validated and saved through the promotion APIs.
Ads fall back to the listing's short description when a field is left empty, so existing promotions keep rendering unchanged.
Backed by new banner_text / catalog_detail_text columns; run migration 0004_add_promotion_placement_text.sql to enable it.
Run your directory as a marketplace
New
Flip one config value and the whole site becomes a single-owner store — product pages with a gallery and buy box, a persistent cart, and native Stripe checkout.
Details
New store format: set vertical: 'store' in platform.config.ts and turn on the store feature flag — the catalog, cards, detail pages and CTAs switch from "visit" to "buy".
Image-forward product pages: a multi-image gallery next to a sticky buy box with price (and compare-at), rating, variant picker, quantity stepper, and Add to cart / Buy now.
A persistent cart drawer (saved in the browser) with quantity controls, remove, subtotal, and a You might also like block that surfaces related products.
A Commerce step in the submit & edit forms to set price, currency, inventory, product type and variants — money is entered in normal units and stored safely as minor units.
Native one-time Stripe Checkout: prices are validated server-side, every sale is recorded as an order, and stock is decremented atomically on payment.
A new admin Orders screen lists every sale with its status, total and line items.
Backed by new commerce columns on the items table plus orders / order_items; run migration 0002_add_store_commerce.sql to enable it.
Write blog posts right in the admin
New
A full blog editor lives in the admin panel now — compose posts with a rich-text editor, schedule them, and they appear on your /blog alongside the existing AI feed.
Details
New Blog section in the admin: a searchable, filterable list of posts with row selection, bulk delete, and one-click duplicate.
A Tiptap-powered rich-text editor with a full toolbar — headings, bold/italic/strikethrough, lists, quotes, code blocks, links, tables, and inline image upload.
Edit dialog splits Content and Settings into tabs, with scheduling (draft, scheduled, published) and an optional featured image.
Hand-written posts merge with the existing SEObot feed on the public /blog — local posts win on slug conflicts — and read-time is calculated automatically.
Backed by a new blog_posts table with row-level security; run migration 0003_add_blog_posts.sql to enable it.
SEO for admin blog posts
Improved
Posts written in the admin are now fully crawlable — sitemap entries, rich-result structured data, and cached-but-fresh article pages.
Details
Every live post now appears in the sitemap at /blog/<slug>, with its featured image, using the same published/scheduled liveness gate as the public feed.
Article pages emit BlogPosting JSON-LD (headline, dates, author, image, publisher) so they're eligible for rich results in search.
Article pages moved from no-store to ISR (30-min revalidate), and the admin revalidates /blog and the affected post on create, update and delete — so changes go live immediately while crawlers still get a fast, cached page.
Put your listings on the map
New
Add a location to any item and let visitors explore your directory on an interactive map — or a fullscreen globe that lights up with the time of day.
Details
New Map view next to Grid, with clustered logo markers and a quick detail card per listing.
Fullscreen globe experience: filter rail, live search, and dawn → day → dusk → night lighting that follows each visitor's local time.
Submit & edit forms gain an optional Location section with address autocomplete that auto-fills city, country and coordinates (drag the pin to fine-tune).
Admins choose the default look — flat map or globe, automatic or fixed lighting — in Design → Map.
Fully optional: toggle it on in settings, add a Mapbox token, and you're live.
Free submissions with badge verification
New
Launch on the free plan by adding our badge to your site — verify the link and submit instantly.
Details
Add the "Featured on Directory Launch" badge to your homepage, then hit Verify.
We check for a dofollow link back to us and unlock the Submit button once it's confirmed.
App-wide design refresh
Improved
A cleaner, more polished look with smoother motion and better dark mode across the whole app.
Details
Redesigned the project page with a new ratings & reviews block and an improved screenshot gallery.
Refreshed the dashboard, profile, settings, and submission & advertising flows.
Polished the entire admin panel and fixed several dark-mode contrast issues.
Configurable card & page layouts
New
Decide exactly how your listings look — logo, cover image, both, or neither — across the catalog and project pages, all from a new Design panel.
Details
The admin Theme tab grew into a full Design panel — colors and typography now sit alongside layout controls.
Toggle the logo and cover image independently for catalog cards and the item page: text-only, logo-only, image-only, or the full treatment.
Turning the image on switches cards to a vertical, cover-on-top layout — the cover is pulled straight from the project's first screenshot, with a graceful fallback when none exists.
A live card preview in the panel reflects every toggle before you hit save, and changes apply across the site instantly.
The submission form now adapts to your choices — contributors are only asked to upload the media you actually use.
Refined theme editor
Improved
The color editor got a cleaner, more legible pass with smoother interactions.
Details
Redesigned color rows with proper swatches and aligned light/dark columns, replacing the cramped raw inputs.
Fixed the active-tab highlight that wasn't tracking after the Base UI migration.
The auto-submit banner is now fully configurable from the admin panel and renders cleanly in any theme.
What's changed?
No more empty gaps: Every banner block (title, description, learn-more link, CTA, dismiss) only renders when its admin field is filled — empty fields no longer leave blank spaces.
Strikethrough pricing: Add an optional original price (shown struck-through next to the CTA) and a savings note (e.g. "Save 20% — early adopter price") to highlight a discount.
Editable trigger button: The homepage button that opens the popup can now be renamed from the admin panel.
Fixed dark-mode popup: The popup now matches the site background color exactly, and its backdrop dims dark instead of washing out white in dark themes.
Smoother loading & admin navigation
Improved
Catalog and admin pages now load with skeleton placeholders, and moving around the admin panel feels instant and fluid.
What's changed?
Shape-stable skeletons: The homepage catalog, category pages, and every admin section now render placeholders that match the real cards and rows — no more blank screens or generic grey blocks while data loads.
Sliding active indicator: Clicking a sidebar item smoothly glides the highlight from the old item to the new one, instead of snapping.
Instant page titles: The new section's heading and its action buttons appear the moment you click — before the content finishes loading — so navigation never feels stalled.
Consistent everywhere: Listings, Categories, Users, Sponsors, Promotions, and the Dashboard all share the same polished loading state.
Respects reduced motion: All animations automatically turn off when the OS "reduce motion" setting is enabled.
Rebuilt the UI on Base UI
Improved
We migrated every interface primitive from Radix UI to Base UI — the successor library from the original Radix, Floating UI, and Material UI authors — for a more modern, composable, and accessible foundation.
What's changed?
All 17 interactive primitives (Dialog, Select, Dropdown Menu, Popover, Tooltip, Alert Dialog, Sheet, Tabs, Checkbox, Switch, Collapsible, Scroll Area, and more) now run on Base UI under the hood.
The component API stayed the same, so nothing changed in how pages are built — the upgrade is entirely internal.
Polymorphic composition (rendering a button as a link, etc.) now uses Base UI's render mechanism instead of the old asChild slot.
Removed all legacy Radix dependencies, trimming the bundle and consolidating on a single, actively maintained primitive library.
Accessibility (focus management, keyboard navigation, ARIA) follows Base UI's WAI-ARIA patterns across every overlay and form control.
Microanimations across the interface
New
We added subtle, tasteful motion throughout the product using Motion — small touches that make the UI feel more responsive without getting in the way.
What's new?
Dialogs, popovers, menus, selects, and tooltips now animate in and out with smooth, interruptible transitions.
Checkboxes pop on toggle, switches glide, and tabs slide their active highlight between options.
Cards lift gently on hover, and directory grids fade in with a staggered entrance.
Buttons have a light press feedback for a more tactile feel.
Every animation respects the system "reduce motion" setting, so it stays accessible for everyone.
Fixes and polish
Fixed
A handful of fixes that came out of the Base UI upgrade.
What's fixed?
Header blur no longer flickers: opening a dropdown previously reset the page scroll state, which briefly removed the sticky header's background blur and let content show through. The header now keeps its state while a menu is open.
Filter and analytics dropdowns open downward: selects now consistently drop down from their input instead of overlaying the trigger, matching expected behavior in both the directory filters and the admin dashboard.
General consistency pass on overlay positioning and animation timing across the app.
Supabase setup & project conventions
Improved
A hardened Supabase connection and a full set of conventions that keep contributors — and AI assistants — on the rails.
Supabase connection: Centralized environment handling in a single lib/supabase/env.ts and refactored the client so every API route validates configuration the same way — a fresh clone fails loudly on missing keys instead of breaking silently.
Project guardrails: Added a pre-commit hook (lint-staged), /verify and /check-console commands, Cursor rules for API routes, components and the Supabase layer, Copilot and Claude instructions, and an AGENTS.md architecture overview — so AI assistants follow the codebase's conventions when you customize it.
Ratings & reviews
New
The comment system on listings grew into full reviews, with a reworked screenshot uploader.
Reviews & comments: Expanded the comment system on project detail pages into richer reviews, with reworked comment API handling.
Screenshot uploader: Overhauled the screenshot upload component used across submission and admin forms.
Promotions hardening & fixes
Fixed
Sold-out states, discount coupons, and upload rate limiting make the paid-promotion flow production-ready — plus a round of smaller fixes.
Reliability work on monetization and the admin area, with several smaller fixes folded in.
What's changed?
Sold-out placements: The promotions API checks placement availability and the UI reflects sold-out slots, so a placement can't be oversold.
Discount coupons: Added coupon configuration for promotion checkout.
Upload rate limiting: Tightened rate limits on uploads to guard against abuse.
Live theme editor: Theme changes broadcast via a CustomEvent, so edits apply across the app instantly.
Fixes & polish: Hardened the payment webhook and auth-callback routes, clearer admin API error handling, and a new DirectoryLaunch badge with logo and preview assets.
Live demo mode
New
Ship a public, read-only demo of your directory — authentication is bypassed and a demo banner adapts the layout.
Demo mode: A configurable demo mode bypasses authentication and admin checks so anyone can explore the app safely.
Demo banner: The admin header and sidebar adjust their positioning to a dynamic banner height via CSS variables.
Collapsed logo: The logo supports an icon-only mode for the collapsed sidebar.
Admin dashboard analytics
Improved
The admin dashboard gained revenue and visits charts with period-over-period comparison and a time-range selector.
Charts: Revenue and visits charts now include a previous-period comparison.
Time range: Replaced tabs with a select for choosing the reporting window.
Layout: Minimum chart heights and improved spacing for a cleaner dashboard.
Social proof, ads & AutoSubmit
Improved
Social-proof avatars, ad banners with sensible fallbacks, and a centralized AutoSubmit configuration.
Marketing and growth surfaces got more robust, with graceful fallbacks when there's no real data yet.
Social proof: Admin-selectable avatars with automatic fallback avatars when no real users exist yet.
Ad banner: Reworked the ad banner and social-proof styling with configurable ad text, link, and icon.
AutoSubmit: Refactored the AutoSubmit feature onto a centralized, typed configuration.
SEO & docs: The sitemap now uses screenshots for image data; README and quick-start docs improved.
AI-powered submissions
New
Generate listing descriptions and category suggestions with AI, and prep CSV imports with an LLM helper.
AI descriptions: One-click AI-generated descriptions during project submission.
Category suggestions: AI suggests the most relevant categories for a listing.
CSV prep helper: A built-in LLM prompt helps you shape data for the CSV importer.
Provider config: New environment settings to plug in your AI provider, plus i18n locale detection in middleware.
Paid promotions & ads
New
Monetize your directory with paid promotions, pricing plans, and ad placements out of the box.
Paid promotions: Pricing plans and ad placements with promotion subscriptions.
CSV import: Bulk-import listings straight from the admin panel.
Sponsor emails: Email templates updated to include sponsor information.
Categories, spheres & auto-logos
Improved
Group categories into spheres with drag-and-drop, and fetch listing logos automatically by domain.
Spheres: Organize categories into spheres, managed in the admin with cross-sphere drag-and-drop.
Auto logos: Logo.dev integration fetches listing logos by domain, with graceful placeholders.
Theme-aware logo: Simplified logo rendering with an SVG and better accessibility.