ContentApp.custom(
// Load pages from multiple sources
loaders: [
FilesystemLoader(directory: 'content'),
GithubLoader(owner: 'org', repo: 'docs'),
],
// Custom configuration per route
configResolver: (route) {
if (route.startsWith('/blog')) {
return PageConfig(
layout: BlogLayout(),
extensions: [TableOfContentsExtension()],
);
}
return PageConfig.defaults();
},
// Data loaders for frontmatter
dataLoaders: [
FilesystemDataLoader(directory: 'content/_data'),
],
// Template preprocessing
templateEngine: MustacheTemplateEngine(),
// Content parsers
parsers: [
MarkdownParser(),
HtmlParser(),
],
// Post-processing extensions
extensions: [
HeadingAnchorsExtension(),
TableOfContentsExtension(),
],
// Custom components
components: [
Callout(),
Tabs(),
MyCustomComponent(),
],
// Page layouts
layouts: [
DocsLayout(),
BlogLayout(),
],
// Site theme
theme: ContentTheme.defaults(),
// Eager loading for collections
eagerlyLoadAllPages: false,
)