Curvea

Core Concepts

Routing

Curvea uses file-based routing from src/pages.

Routes are generated from page file names and folder structure.

Static routes

src/pages/Home.csc        -> /
src/pages/About.csc       -> /about
src/pages/Contact.csc     -> /contact
src/pages/blog/Index.csc  -> /blog
src/pages/blog/About.csc  -> /blog/about

Home and Index behavior

At the project root:

src/pages/Home.csc -> /

Inside folders:

src/pages/blog/Index.csc -> /blog
src/pages/blog/Home.csc  -> /blog

Dynamic routes

Dynamic page files use square brackets.

src/pages/products/[slug].csc

Dynamic route files are resolved using page JSON data or Markdown content depending on structure.

Dynamic page JSON data

For dynamic page files, Curvea can use JSON files from src/data/pages.

The dynamic parameter name comes from the page file name.

Example:

src/pages/products/[slug].csc

The parameter name is:

slug

Content routes

Markdown content routes are based on matching page folder structure and src/content/<collection>.

Example:

src/pages/blog/[slug].csc
src/content/blog/my-post.md

Build output:

/blog/my-post

Pagination routes

Paginated pages generate:

/base-route
/base-route/page/2
/base-route/page/3

Output files

Each route writes:

dist/<route>/index.html