| name | new-page |
| description | Scaffold a new merjs page. Use when the user wants to create a new page, route, or view. |
| argument-hint | [page-name] |
| disable-model-invocation | true |
Create a new merjs page
Scaffold a new page at app/$ARGUMENTS.zig that follows the merjs conventions.
Steps
- Create
app/$ARGUMENTS.zig with this template:
const mer = @import("mer");
const h = mer.h;
pub const meta: mer.Meta = .{
.title = "PAGE_TITLE",
.description = "PAGE_DESCRIPTION",
};
const page_node = page();
pub fn render(req: mer.Request) mer.Response {
return mer.render(req.allocator, page_node);
}
fn page() h.Node {
return h.div(.{ .class = "page" }, .{
h.h1(.{}, "PAGE_TITLE"),
});
}
- Replace PAGE_TITLE and PAGE_DESCRIPTION with sensible values derived from the page name
- Run
zig build codegen to regenerate routes
- Confirm the new route appears in
src/generated/routes.zig
- Tell the user the route is available at the mapped URL path
Conventions
- Every app/ page MUST export
pub const meta: mer.Meta
- Every page MUST export
pub fn render(req: mer.Request) mer.Response
- Use the
h DSL (mer.h) for HTML — prefer comptime nodes
- For dynamic routes, use bracket syntax:
app/users/[id].zig → /users/:id
app/index.zig maps to /
app/foo/index.zig maps to /foo
- Add
pub const prerender = true; for static pages that don't need request data