{"id":31017097,"url":"https://github.com/seebaermichi/nera","last_synced_at":"2025-09-13T07:47:53.156Z","repository":{"id":42211739,"uuid":"176945739","full_name":"seebaermichi/nera","owner":"seebaermichi","description":"A lightweight static site generator","archived":false,"fork":false,"pushed_at":"2025-07-23T18:02:09.000Z","size":1002,"stargazers_count":12,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-07-23T20:58:18.968Z","etag":null,"topics":["blog-engine","cms","markdown","node","static-site","static-site-generator"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/seebaermichi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["seebaermichi"],"ko_fi":"softwarembecker","custom":["https://www.paypal.com/paypalme/softwarembecker"]}},"created_at":"2019-03-21T13:02:33.000Z","updated_at":"2025-07-23T18:02:06.000Z","dependencies_parsed_at":"2025-07-14T23:10:37.092Z","dependency_job_id":"6a2db560-0bd6-433a-b042-b235f2774386","html_url":"https://github.com/seebaermichi/nera","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/seebaermichi/nera","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seebaermichi%2Fnera","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seebaermichi%2Fnera/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seebaermichi%2Fnera/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seebaermichi%2Fnera/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seebaermichi","download_url":"https://codeload.github.com/seebaermichi/nera/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seebaermichi%2Fnera/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274935975,"owners_count":25376835,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-13T02:00:10.085Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blog-engine","cms","markdown","node","static-site","static-site-generator"],"created_at":"2025-09-13T07:47:50.008Z","updated_at":"2025-09-13T07:47:53.148Z","avatar_url":"https://github.com/seebaermichi.png","language":"JavaScript","funding_links":["https://github.com/sponsors/seebaermichi","https://ko-fi.com/softwarembecker","https://www.paypal.com/paypalme/softwarembecker"],"categories":[],"sub_categories":[],"readme":"# Nera – a lightweight static site generator\n\n**Nera** is a minimal static site generator that transforms Markdown content into fast, clean HTML pages using [Pug](https://pugjs.org/) templates. It is designed to be simple to use, yet extendable with plugins.\n\n\u003e ⚠️ This project is under active development. Breaking changes may occur.\n\n---\n\n## 🚀 Getting Started\n\n```bash\nnpm install -g @nera-static/installer\n\n# Create a new project\nnera new my-nera-site\n\ncd my-nera-site\nnpm run dev        # Start dev server with live reload\nnpm run render     # Render the static site to /public\n```\n\nAlternatively, clone manually:\n\n```bash\ngit clone git@github.com:seebaermichi/nera.git\ncd nera\nrm -fr .git\nnpm install\nnpm run dev\n```\n\n---\n\n## 🗂️ Directory Structure\n\n```bash\nmy-nera-site/\n├── assets/              # CSS, JS, images, fonts – copied to /public\n├── config/\n│   └── app.yaml         # Global site config (name, lang, translations, etc.)\n├── pages/               # Markdown content with frontmatter metadata\n├── public/              # Rendered static site output\n├── src/\n│   ├── plugins/         # Local plugins (optional)\n│   ├── core.js\n│   ├── index.js\n│   ├── render.js\n│   └── setup-plugins.js\n├── views/               # Pug templates (layouts and partials)\n└── .neraignore          # List of asset files or folders to ignore during render\n```\n\n---\n\n## 📄 Page Content (`pages/`)\n\nEach Markdown file must define frontmatter metadata, e.g.:\n\n```markdown\n---\nlayout: pages/default.pug\ntitle: Homepage\n---\n# Welcome to Nera\n\nThis content will be injected into the layout file defined above.\n```\n\n\u003e All frontmatter values are accessible as the `meta` object in your Pug templates.\n\n---\n\n## 🎨 Templates (`views/`)\n\nNera uses [Pug](https://pugjs.org/) for layout rendering. You have access to:\n\n- `app`: values from `config/app.yaml`\n- `meta`: metadata from the current markdown page\n- `t(key)`: translation function\n\nExample:\n\n```pug\ndoctype html\nhtml(lang=app.lang)\n  head\n    title= meta.title\n    meta(name=\"description\", content=meta.description || t('app_description'))\n  body\n    h1= meta.title\n    != content\n```\n\n---\n\n## 🌍 Translations\n\nYou can define translations in `config/app.yaml`:\n\n```yaml\nlang: en\ntranslations:\n  en:\n    app_description: Nera is a simple static site generator.\n  de:\n    app_description: Nera ist ein einfacher Generator für statische Webseiten.\n```\n\nUse the `t` function in templates:\n\n```pug\nmeta(name=\"description\", content=t('app_description'))\n```\n\nIf the key or language is missing, the key itself is returned as fallback.\n\n---\n\n## 🔌 Plugins\n\nNera supports plugins that can:\n\n- Add data to the app or individual pages\n- Modify metadata\n- Inject routes or components\n- Extend rendering logic\n\nYou can place local plugins in `src/plugins/` or install official ones via npm:\n\n```bash\nnpm install @nera-static/plugin-navigation\n```\n\nFor a complete list of existing plugins, see [PLUGINS.md](https://github.com/seebaermichi/nera/blob/master/PLUGINS.md).\n\n### ⚙️ Plugin Execution Order\n\nTo control the **execution order** of plugins, you can define a `config/plugin-order.yaml` file like this:\n\n```yaml\nplugin-order:\n  - start:\n      - plugin-tags\n  - end:\n      - plugin-search\n```\n\n- `start`: plugins listed here will run first (in the order listed).\n- `end`: plugins listed here will run last (in the order listed).\n- Any other plugins not listed will be placed in the middle, sorted alphabetically.\n\nThis is especially useful when some plugins (like `plugin-search`) rely on metadata added by earlier ones.\n\n---\n\n## 📁 Asset Handling\n\nAll files in the `assets/` directory will be copied to `/public` during render. You can exclude files using `.neraignore`. Example:\n\n```\nignore.txt\ncss/dev-only.css\n```\n\nSupports nested paths relative to `assets/`.\n\n---\n\n## 🛠 Development Scripts\n\n```bash\nnpm run dev     # Starts local development server\nnpm run render  # Renders pages to /public\nnpm start       # Shortcut for dev mode\n```\n\n---\n\n## 📚 Further Reading\n\n- [How Nera is used to build its own website](https://medium.com/@micha.becker79/building-nera-website-with-nera-4b50ed5dbff2)\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseebaermichi%2Fnera","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseebaermichi%2Fnera","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseebaermichi%2Fnera/lists"}