Eleventy setup Corrected
Here's a refactored, cleaned-up, and properly structured Markdown version of your Eleventy guide. I've fixed formatting inconsistencies, corrected syntax errors, improved readability, and ensured all code blocks are properly fenced and syntax-highlighted. I also removed redundant/conflicting script definitions and clarified ambiguous sections.
🛠️ Refined Eleventy Notes Project Guide
This is an optimized, production-ready setup for an Eleventy-based personal notes site. It improves configuration efficiency, local development workflow, semantic correctness, and deployment robustness.
📁 Recommended Repo Layout
No changes needed — this structure is clean and logical.
my-notes/
site/
assets/ # Static assets (images, fonts, etc.)
style.css
notes/ # Markdown notes
note1.md
note2.md
...
layouts/
base.njk
note.njk
index.njk
local.njk # NEW: Local-only dashboard for all notes
.eleventy.js
package.json
netlify.toml
README.md
⚙️ .eleventy.js (Refined Configuration)
Key improvements:
- Cleaner passthrough copy rules.
- Two collections:
published(for live site) andallNotes(for local dev). - Proper directory structure and template engine setup.
module.exports = function(eleventyConfig) {
// Passthrough static assets
eleventyConfig.addPassthroughCopy("style.css");
eleventyConfig.addPassthroughCopy("assets");
// Collection: Only published notes (for live site)
eleventyConfig.addCollection("published", function(collectionApi) {
return collectionApi.getFilteredByGlob("notes/**/*.md")
.filter(item => item.data.publish === true)
.sort((a, b) => b.date - a.date); // Newest first
});
// Collection: All notes (for local development)
eleventyConfig.addCollection("allNotes", function(collectionApi) {
return collectionApi.getFilteredByGlob("notes/**/*.md")
.sort((a, b) => b.date - a.date); // Newest first
});
return {
dir: {
input: "site",
output: "public",
includes: "layouts",
data: "_data"
},
markdownTemplateEngine: "njk",
htmlTemplateEngine: "njk"
};
};
📦 package.json (Optimized Scripts)
Removed redundant npx calls. Added dev:all is unnecessary — we'll use local.njk instead.
✅ Final, clean version:
{
"name": "my-notes",
"version": "1.0.0",
"private": true,
"scripts": {
"dev": "eleventy --serve --quiet",
"build": "eleventy --quiet",
"clean": "rimraf public"
},
"devDependencies": {
"@11ty/eleventy": "^2.0.1",
"rimraf": "^5.0.5"
}
}
💡 Tip: Run
npm installto install dependencies.
🌐 netlify.toml (Robust For Cli & CI)
Ensures netlify dev serves the correct output directory.
[build]
command = "npm run build"
publish = "public"
[dev]
command = "npm run dev"
publish = "public"
🧱 Layout Files
site/layouts/note.njk — Corrected Semantics
Uses htmlDateString for machine-readable datetime.
---
layout: base.njk
---
<article>
<h1>{{ title }}</h1>
{% if date %}
<time datetime="{{ date | htmlDateString }}">
{{ date | date("DDD") }}
</time>
{% endif %}
<section>
{{ content | safe }}
</section>
</article>
📅
date("DDD")= Luxon format for "Sep 19, 2025". Customize as needed.
site/index.njk — Published Notes Index
No changes needed. Filters by collections.published.
---
layout: base.njk
title: "Published Notes"
permalink: /index.html
---
<h1>Notes</h1>
<ul>
{% for item in collections.published %}
<li>
<a href="{{ item.url }}">{{ item.data.title or item.fileSlug }}</a>
{% if item.date %}
<time datetime="{{ item.date | htmlDateString }}"> - {{ item.date | date("DDD") }}</time>
{% endif %}
</li>
{% endfor %}
</ul>
site/local.njk — New: Local Dashboard for All Notes
Lists all notes (published + drafts), styled for local use only.
---
layout: base.njk
title: "All Notes (Local View)"
permalink: /local/index.html
eleventyExcludeFromCollections: true
---
<h1>All Notes (Including Drafts)</h1>
<p style="background: #fffbe6; border: 1px solid #ffe58f; padding: 1em;">
✅ This is a local-only view. Not linked from main site.
</p>
<ul>
{% for item in collections.allNotes %}
<li>
<a href="{{ item.url }}">{{ item.data.title or item.fileSlug }}</a>
<span style="font-size: 0.8em; color: {% if item.data.publish %}green{% else %}orange{% endif %};">
— {% if item.data.publish %}Published{% else %}Draft{% endif %}
</span>
</li>
{% endfor %}
</ul>
🔄 Updated Workflow
1. Preview Live Site (Published Only)
npm run dev
→ Visit: http://localhost:8080
Only notes with publish: true appear.
2. View All Notes Locally (Including Drafts)
Same command:
npm run dev
→ Visit: **http://localhost:8080/local/**
Lists all notes, color-coded by publish status.
3. Deploy to Netlify
- Commit and push to your repo.
- Netlify runs
npm run build→ outputs topublic/. - Only
publishedcollection is visible on live site. /local/page is built but not linked, so it's hidden from public view.
✅ Summary of Improvements
| Area | Improvement |
|---|---|
| Configuration | Cleaner passthroughs, dual collections |
| Local Dev | /local/ dashboard for all notes |
| Semantics | Correct datetime format in <time> |
| Scripts | Removed redundant npx, simplified dev:all |
| Netlify | Added publish key for CLI compatibility |
Let me know if you'd like this exported as a downloadable .md file, or if you want to generate starter templates for each file!