This project is a static marketing, blog, and documentation site for Exceptionless, built with Eleventy (11ty) and custom Node.js scripts. Content is primarily managed in markdown and Nunjucks files under the content/ directory. The build system is highly customized with plugins and data transforms.
- Content Structure:
- All site content lives in
content/(pages, docs, news, assets, layouts, includes, data). - News/blog posts are in
content/news/{year}/as markdown files with YAML front matter. - Docs are in
content/docs/. - Data files (site metadata, computed data) are in
content/_data/.
- All site content lives in
- Build System:
- Uses Eleventy with extensive plugins (syntax highlight, navigation, RSS, image transforms, embed, etc.).
- Custom markdown-it configuration for advanced markdown features and link handling.
- Draft posts (with
draft: truein front matter) are excluded from production builds. - Custom script
m2json.jsgenerates JSON indexes for docs.
- Custom Scripts:
new_post.jsautomates creation of new blog/news posts with correct front matter and file naming.
- Output:
- Built site is output to
_site/.
- Built site is output to
- Install dependencies:
npm install
- Development server:
npm run devornpm start(runs Eleventy with live reload)
- Production build:
npm run build
- Create new post:
npm run new-post "Post Title"(generates a draft markdown file in the correct location)
- Debugging:
npm run debugornpm run debugstartfor verbose Eleventy logs
- Benchmarking:
npm run benchmark
- Markdown front matter: All content files require YAML front matter. News posts must include at least
title,date, anddraftfields. - Drafts: Any file with
draft: trueis excluded from collections and output unless in dev mode. - Navigation: Navigation structure is computed via
eleventyComputed.jsincontent/_data/. - Image handling: Images are optimized and output in multiple formats (avif, webp, etc.) via Eleventy plugins.
- Custom filters/shortcodes: See
eleventy.config.jsfor custom Nunjucks/markdown filters and shortcodes (e.g.,currentBuildDate). - Data merging: Deep merge is enabled for data files.
- External plugins: See
package.jsonfor Eleventy and markdown-it plugins. - Site metadata: Managed in
content/_data/site.json. - Custom doc indexing:
m2json.jsparses markdown docs to JSON for search/indexing.
- To add a new blog post:
npm run new-post "My Post Title"(createscontent/news/{year}/YYYY-MM-DD-my-post-title.md) - To add a new doc: Place a markdown file in
content/docs/with appropriate front matter.
eleventy.config.js— Eleventy build configuration and plugin setupcontent/— All site contentcontent/_data/— Site and computed datacontent/news/— Blog/news postscontent/docs/— Documentationnew_post.js— Script to generate new postsm2json.js— Script to index docs as JSONpackage.json— Scripts, dependencies, and plugin list
If you are unsure about a workflow or pattern, check the README or the scripts in the project root. When automating content or build changes, always follow the conventions in eleventy.config.js and content/_data/eleventyComputed.js.