diff --git a/.changeset/export-build-file-routes.md b/.changeset/export-build-file-routes.md
new file mode 100644
index 0000000..a422334
--- /dev/null
+++ b/.changeset/export-build-file-routes.md
@@ -0,0 +1,12 @@
+---
+"@geajs/core": patch
+"@geajs/vite-plugin": patch
+---
+
+### @geajs/core (patch)
+
+- **Export buildFileRoutes**: `buildFileRoutes` is now exported from the public `@geajs/core` entry point, making it available for the `router.setPath()` build-time transform and for any user who needs to integrate file-based routing manually.
+
+### @geajs/vite-plugin (patch)
+
+- **router.setPath() transform**: Include `buildFileRoutes` export and `router.setPath()` integration — the plugin now rewrites `router.setPath('./pages')` calls into the expanded `router.setRoutes(buildFileRoutes(...))` form at build time.
diff --git a/examples/router-file-based/README.md b/examples/router-file-based/README.md
new file mode 100644
index 0000000..0203c8d
--- /dev/null
+++ b/examples/router-file-based/README.md
@@ -0,0 +1,28 @@
+# router-file-based
+
+Demonstrates **file-based routing** in Gea using `router.setPath('./pages')`.
+
+## Pages structure
+
+```
+src/pages/
+ layout.tsx # root layout — nav bar +
{router.error}
+ +
+ No route matched {router.path}.
+
+ This example demonstrates file-based routing in Gea. Instead of defining a route map
+ by hand, call {SETUP_CODE} once in your entry file and the Vite plugin
+ generates routes automatically from the file system.
+
page.tsx — page component for the routelayout.tsx — wraps all routes in the directory[param]/page.tsx — dynamic segment, becomes :param[...slug]/page.tsx — catch-all segment, becomes *
+ At build time the Vite plugin rewrites the setPath() call into
+ import.meta.glob statements. Layouts load eagerly; pages load lazily.
+
{
+`pages/
+ layout.tsx root layout (nav + Outlet)
+ page.tsx /
+ about/page.tsx /about
+ blog/page.tsx /blog
+ blog/[slug]/page.tsx /blog/:slug
+ users/page.tsx /users
+ users/[id]/page.tsx /users/:id
+ [...all]/page.tsx * (404 catch-all)`
+ }
+ No post with slug {slug}.
+ +{post.content}
+ The latest articles from the Gea team.
+{post.excerpt}
+ + ))} +
+ Welcome to the Gea file-based router example. Routes are automatically generated from
+ the pages/ directory — no manual route map required.
+
+ Each page.tsx file becomes a route, and layout.tsx files
+ wrap their directory's routes with a shared layout.
+
No user with id {id}.
+ +Click a user to view their profile.
+