Directories
Dynamic sitemap architecture
Build a Next.js sitemap from published slugs only. Pending directory listings and unpaid jobs do not belong in it.
A dynamic sitemap is a query, not a file you edit by hand. For the Directory Starter, the query is listings whose status is published. Pending is the default, so a new submission stays out until you change that column.
Each URL should be the public slug path. Use createdAt when you want a lastmod. Do not emit the database id.
The Job Board Starter needs the same idea with a stricter filter: paid is true and status is not pending. Otherwise the sitemap advertises a job the board does not show. See SEO for job boards.
Category index URLs can be included when the category has at least one published child. An empty category is a thin page.
The directory metadata rules are in SEO architecture for large Next.js directories. The columns you filter on are in the directory schema.