Content Management
The Next.js project mixes Markdown content and TypeScript data files.
Markdown collections
Two sections are file-based:
data/blog/for blog postsdata/use-cases/for use-case pages
These files are loaded from disk by:
utils/getMarkDownData.tsfor lists and sortingutils/getMarkDownContent.tsfor a single page by slug
How slugs work
The slug comes from the Markdown filename.
Example:
data/blog/what-makes-an-ai-voiceover-sound-human.md
This becomes:
/blog/what-makes-an-ai-voiceover-sound-human
The same pattern applies to data/use-cases/*.md.
Sorting
The collection loader supports sorting by a frontmatter field. In the current app, the dynamic blog and use-case pages read collections using order as the sort key, so it is best to keep an order value in your frontmatter when manual ordering matters.
Add a new blog or use case
Create the Markdown file
Add a new .md file inside data/blog/ or data/use-cases/.
Add frontmatter
Use the same fields already used by the existing files, such as:
titledescriptionimageorder- any additional fields required by the matching UI
Write the content
The page body is rendered from Markdown content below the frontmatter.
Verify the route
Visit the generated route:
/blog/<slug>/use-case/<slug>
TypeScript data files
Some content is maintained as arrays and objects in .ts files instead of Markdown.
Common examples:
data/pricing.tsfor pricing cardsdata/integrations.tsfor integration cardsdata/clone-voices.tsfor voice sample listingsdata/testimonials.tsfor testimonialsdata/mobile-menu.tsfor grouped mobile navigation
Use these files when the content is strongly tied to a component structure or repeated card layout.
Important note about template flows
The current login, signup, and contact experiences are presentational template flows. Their forms call event.preventDefault() and do not submit to a backend by default. If you need real auth, CRM, or email delivery, wire those forms to your own services.