{"id":26066516,"url":"https://github.com/8bitprodigy/nerc","last_synced_at":"2026-03-12T14:18:45.729Z","repository":{"id":280240886,"uuid":"941389921","full_name":"8bitprodigy/nerc","owner":"8bitprodigy","description":"Anti-web anti-framework static site generator written in Nim","archived":false,"fork":false,"pushed_at":"2025-12-24T12:18:44.000Z","size":135,"stargazers_count":14,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-26T02:23:32.025Z","etag":null,"topics":["filesystem-as-a-database","github-pages","github-pages-website","html","nim-lang","static-site","static-site-generator","static-website","website"],"latest_commit_sha":null,"homepage":"","language":"Nim","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/8bitprodigy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-03-02T07:01:00.000Z","updated_at":"2025-12-24T12:18:47.000Z","dependencies_parsed_at":"2025-03-02T08:18:52.293Z","dependency_job_id":"878f823b-4bca-4e61-93fb-c1bb5982bcec","html_url":"https://github.com/8bitprodigy/nerc","commit_stats":null,"previous_names":["8bitprodigy/nerc"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/8bitprodigy/nerc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8bitprodigy%2Fnerc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8bitprodigy%2Fnerc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8bitprodigy%2Fnerc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8bitprodigy%2Fnerc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/8bitprodigy","download_url":"https://codeload.github.com/8bitprodigy/nerc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/8bitprodigy%2Fnerc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30428036,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-12T14:00:25.264Z","status":"ssl_error","status_checked_at":"2026-03-12T13:59:52.690Z","response_time":114,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["filesystem-as-a-database","github-pages","github-pages-website","html","nim-lang","static-site","static-site-generator","static-website","website"],"created_at":"2025-03-08T20:52:29.856Z","updated_at":"2026-03-12T14:18:45.689Z","avatar_url":"https://github.com/8bitprodigy.png","language":"Nim","readme":"# nerc\n\nAnti-web anti-framework in Nim.\n\n## Rationale\n\nToo many web frameworks are written in slow, heavy, bloated interpreted languages, reflective of most of web technologies, so this is an *anti*-web *anti*-framework written in a fast, lightweight, and *nim*ble compiled language.\n\n## Function\n\nConverts markdown files into html files on a directory basis.\n\n## Usage\n\nNavigate to your directory you wish to be the root of your website and run:\n\n```\nnerc\n```\n\nThen upload the contents of that directory to the root of your website's hosting directory.\n\n### Things to note\n\n- `readme.md`(case insensitive) files will become `index.htm` files so you can use github hosting for your website, and people visiting the repo will get more or less the same experience.\n\n- File and directory names become page titles with underscores turned into spaces, so `My_Portfolio.md` will be given the page name `My Portfolio` when linked in the sidebar and after the site title in the browser titebar/tab.\n\n- Files and directories starting with a `.` or `_` will be ignored for linkage to ensure directories like `.git/` don't get scanned.\n\n- Directories that don't contain a `readme.md` will not be linkified in the sidebar, but any `.md` documents they contain will be.\n\n- You can add your own html pages you made, but they will only be linkified if they end in `.html`.\n\n## Options\n\nOptions can be overridden on a per-directory basis. Each directory can have its own `config.json`, `styles.css`, and `template.html`, overriding one or more of a parent directory's  settings.\n\n### config.json\n\nYou'll likely first wish to create your own `config.json` file to override the default settings built in to `nerc`.\nThis is a list of the various config options:\n\n| **Key**          | **Value Type**                                                                                                                                                       | **Description**                                                                                                                                                                                                |\n| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `\"index\"`        | string (default: `\"$readme\"`): `\"newest\"` to use the newest created file, to select a specific file name (excluding file extension), make the first character a `$`. | Sets what document gets converted into `index.htm`.                                                                                                                                                            |\n| `\"sort\"`         | string (default: `\"alphabetical\"`): `\"alphabetical\"` to sort alphabetically, `\"newest\"` to sort by newest                                                            | Sets how page links are sorted in the sidebar.                                                                                                                                                                 |\n| `\"page title\"`   | string                                                                                                                                                               | Sets the page's title tag (in the browser window titlebar/tab).                                                                                                                                                |\n| `\"links\"`        | array of JSON objects: `{\"label\": [string to hyperlink], \"link\":[string of URL to link to]}`                                                                         | Sets the links that appear at the top of the page. Spacers can be inserted by inserting the following JSON object: `{\"label\": \"\", \"link\": \"SPACER\"}`                                                           |\n| `\"site title\"`   | string                                                                                                                                                               | Sets the title at the top of each page, below the links row.                                                                                                                                                   |\n| `\"subtitle\"`     | string                                                                                                                                                               | Sets the subtitle for the site that appears next to the title.                                                                                                                                                 |\n| `\"upper nav\"`    | bool (default: `false`)                                                                                                                                              | If true inserts previous/next navigation links at the top of the document to navigate to other documents within the current directory                                                                          |\n| `\"doc title\"`    | bool (default: `true`)                                                                                                                                               | If true, inserts the document's formatted file name (underscores and file extension removed) into the top of the document in a `\u003ch1\u003e` tag.                                                                     |\n| `\"lower nav\"`    | bool (default: `false`)                                                                                                                                              | If true inserts previous/next navigation links at the bottom of the document to navigate to other documents within the current directory                                                                       |\n| `\"footer right\"` | string                                                                                                                                                               | Sets the text string that is inserted into the footer at the bottom of the page on the right. You can insert HTML into this portion for formatting effects, or if you'd like to add a search bar or something. |\n\nOnly defined config options will be overridden, so any settings not defined in a directory's `config.json` file will be inherited either from their parent's directory, or from the default settings defined in `nerc`.\n\n### styles.css\n\nIf one is not present in the root directory, a `styles.css` file will be generated and linked to by all pages in the directory and any child directories. If you wish to define your own style for your site, it is recommended to allow `nerc` to generate the `styles.css` file and modify that to set global style settings.\n\nStyles are overridden by including each `styles.css` along the path to whatever page is being generated, so if a page is in `/places/America/Maryland/`, and `/`, `America`, and `Maryland` each has their own style, they'd be included as such:\n\n```html\n...\n\u003cstyle\u003e \n    @import url(\"/styles.css\");\n    @import url(\"/places/America/styles.css\");\n    @import url(\"/places/America/Maryland/styles.css\");\n\u003c/style\u003e\n...\n```\n\nSo as to allow individual styles to be overridden on a per-directory basis.\nHere are a list of classes and IDs which can be styled:\n\n| **Class/ID** | ** Description**                                                                            |\n| ------------ | ------------------------------------------------------------------------------------------- |\n| `.spacer`    | Styles spacers used to separate links and the left and right text in the footer.            |\n| `.nerc`      | Styles shared by every element that generated content gets inserted to in the visible page. |\n| `#container` | Element containing all the elements of the page.                                            |\n| `#links`     | Element containing links at the top of the page.                                            |\n| `#header`    | Element containing the Page Title and Subtitle.                                             |\n| `#body`      | Element containing Sidebar and Content.                                                     |\n| `#sidebar`   | Element containing an unordered list linking to different pages and directories.            |\n| `#content`   | Element containing the contents of the document, rendered as HTML                           |\n| `#foote`     | Element containing the footer contents.                                                     |\n\n### template.html\n\nLike `config.json`, pages in a directory will use the last defined template up the chain of directories back to the root. Unlike `config.json` and `styles.css`,  however, `template.html` overrides the whole page, so if you wish to override it, you'll have to define the whole page layout.\nIn order for content to be inserted into the page during generation, you'll need to declare the following tokens in your template:\n\n| **Tag**               | **Description**                                                                                                                   |\n| --------------------- | --------------------------------------------------------------------------------------------------------------------------------- |\n| `\u003c!--page title--\u003e`   | Inserts the string defined by `\"page title\"` in `config.json`.                                                                    |\n| `\u003c!--styles--\u003e`       | Inserts the chain of `styles.css` files that apply to the current directory.                                                      |\n| `\u003c!--links--\u003e`        | Inserts a series of `\u003ca\u003e` tags and spacers defined by `\"links\"` in `config.json`.                                                 |\n| `\u003c!--site title--\u003e`   | Inserts the string defined by `\"site title\"` in `config.json`.                                                                    |\n| `\u003c!--subtitle--\u003e`     | Inserts the string defined by `\"subtitle\"` in `config.json`.                                                                      |\n| `\u003c!--sidebar--\u003e`      | Inserts an unordered list representing the directory structure of the website and all its generated/discovered pages/directories. |\n| `\u003c!--content--\u003e`      | Inserts the contents of the markdown document, rendered as HMTL elements.                                                         |\n| `\u003c!--footer left--\u003e`  | Inserts the string defined by \"footer left\" in `config.json`.                                                                     |\n| `\u003c!--footer right--\u003e` | Inserts the string defined by \"footer right\" in `config.json`.                                                                    |\n\n## Building\n\nBe sure to have [Nim-markdown](https://github.com/soasme/nim-markdown) installed first:\n\n```shell\nnimble install markdown\n```\n\nThen:\n\n```shell\ngit clone https://github.com/8bitprodigy/nerc \ncd nerc\nnimble build\n```\n\n## \n\n## Installation\n\n```shell\ninstall nerc /usr/local/bin\n```\n\n Or:\n\n```shell\ninstall nerc ~/.local/bin\n```\n\n## \n\n## License:\n\nThis code is dedicated to the public domain, but is also made available under the terms of the 0-clause BSD license, as some jurisdictions do not recognize the public domain.\n\nThe terms of the 0-clause BSD license are thus:Copyright (C) 2025 Christopher DeBoy \u003cchrisxdeboy@gmail.com\u003e\n\nPermission to use, copy, modify, and/or distribute this software for  \nany purpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL  \nWARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES  \nOF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE  \nFOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY  \nDAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN  \nAN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT  \nOF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F8bitprodigy%2Fnerc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F8bitprodigy%2Fnerc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F8bitprodigy%2Fnerc/lists"}