{"id":13468722,"url":"https://github.com/schn4ck/schnack","last_synced_at":"2026-01-12T02:25:05.371Z","repository":{"id":25701286,"uuid":"105789365","full_name":"schn4ck/schnack","owner":"schn4ck","description":"🗣️ Simple self-hosted node app for Disqus-like drop-in commenting on static websites ","archived":false,"fork":false,"pushed_at":"2023-03-03T07:38:46.000Z","size":1849,"stargazers_count":1823,"open_issues_count":46,"forks_count":82,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-08-24T15:11:39.174Z","etag":null,"topics":["commenting","disqus","disqus-clone","nodejs","schnack"],"latest_commit_sha":null,"homepage":"https://schnack.cool/","language":"JavaScript","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/schn4ck.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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}},"created_at":"2017-10-04T16:09:58.000Z","updated_at":"2025-08-07T11:54:20.000Z","dependencies_parsed_at":"2024-01-14T09:00:31.228Z","dependency_job_id":null,"html_url":"https://github.com/schn4ck/schnack","commit_stats":null,"previous_names":["gka/schnack"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/schn4ck/schnack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schn4ck%2Fschnack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schn4ck%2Fschnack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schn4ck%2Fschnack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schn4ck%2Fschnack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schn4ck","download_url":"https://codeload.github.com/schn4ck/schnack/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schn4ck%2Fschnack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28332319,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T00:36:25.062Z","status":"online","status_checked_at":"2026-01-12T02:00:08.677Z","response_time":98,"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":["commenting","disqus","disqus-clone","nodejs","schnack"],"created_at":"2024-07-31T15:01:17.472Z","updated_at":"2026-01-12T02:25:05.346Z","avatar_url":"https://github.com/schn4ck.png","language":"JavaScript","readme":"# schnack.js\n\n[Schnack](https://dict.leo.org/englisch-deutsch/schnack) is a simple Disqus-like drop-in commenting system written in JavaScript.\n\n-   [Documentation](https://schnack.cool/)\n-   [Say hello to Schnack.js](https://www.vis4.net/blog/2017/10/hello-schnack/)\n-   Follow [@schnackjs](https://twitter.com/schnackjs) on Twitter\n\n## What the schnack?\n\nFeatures:\n\n-   Tiny! It takes only ~**8 KB!!!** to embed Schnack.\n-   **Open source** and **self-hosted**.\n-   Ad-free and Tracking-free. Schnack will **not disturb your users**.\n-   It's simpy to moderate, with a **minimal** and **slick UI** to allow/reject comments or trust/block users.\n-   **[webpush protocol](https://tools.ietf.org/html/draft-ietf-webpush-protocol-12) to notify the site owner** about new comments awaiting for moderation.\n-   **Third party providers for authentication** like Github, Twitter, Google and Facebook. Users are not required to register a new account on your system and you don't need to manage a user management system.\n\n### Quickstart\n\n*Note: If you are updating Schnack from a 0.x version check out the separate [upgrade instructions](docs/migrating-to-schnack-1.md).*\n\nThis is the fastest way to setup _schnack_.\n\n**Requirements**:\n\n-   Node.js (\u003e= v8)\n-   npm (\u003e= v6)\n\nCreate a new folder for schnack and change into it:\n\n```bash\nmkdir schnack\ncd schnack\nnpm init schnack\n```\n\nif there is no `schnack.json` in this folder, the init script copied over the default config and ask you if you want to configure your server interactively.\n\nalternatively you can just edit the config file according to [configuration](https://schnack.cool/#configuration) section:\n\n```bash\nvim schnack.json                 # or open with any editor of your choice\n```\n\nFinally, run `npm init schnack` again to finish installation:\n\n```bash\nnpm init schnack\n```\n\nRun the server:\n\n```bash\nnpm start\n```\n\nIf you want to try out Schnack on localhost (without authentication), run\n\n```bash\nnpm start -- --dev\n```\n\nEmbed in your HTML page:\n\n```html\n\u003cdiv class=\"comments-go-here\"\u003e\u003c/div\u003e\n\u003cscript\n    src=\"https://comments.example.com/embed.js\"\n    data-schnack-slug=\"post-slug\"\n    data-schnack-target=\".comments-go-here\"\n\u003e\u003c/script\u003e\n```\n\n**or** initialize _schnack_ programmatically:\n\n```html\n\u003cdiv class=\"comments-go-here\"\u003e\u003c/div\u003e\n\n\u003cscript src=\"http://comments.example.com/client.js\"\u003e\u003c/script\u003e\n\u003cscript\u003e\n    new Schnack({\n        target: '.comments-go-here',\n        slug: 'post-slug',\n        host: 'http://comments.example.com'\n    });\n\u003c/script\u003e\n```\n\nYou will find further information on the [schnack page](https://schnack.cool/).\n\n### Plugins\n\nAuthentication and notification providers can be added via plugins.\n\n```sh\nnpm install @schnack/plugin-auth-github  @schnack/plugin-auth-google @schnack/plugin-notify-slack\n```\n\nTo enable the plugins you need to add them to the `plugins` section of your `schnack.json`:\n\n```js\n{\n    // ...\n    \"plugins\": {\n        \"auth-github\": {\n            \"client_id\": \"xxxxx\",\n            \"client_secret\": \"xxxxx\"\n        },\n        \"auth-google\": {\n            \"client_id\": \"xxxxx\",\n            \"client_secret\": \"xxxxx\"\n        },\n        \"notify-slack\": {\n            \"webhook_url\": \"xxxxx\"\n        }\n    }\n}\n```\n\nif you want to write your own plugins you need to install them and specify their package name in the `schnack.json`. Otherwise Schnack would try to load as from `@schnack/plugin-my-plugin`.\n\n```js\n{\n    // ...\n    \"plugins\": {\n        \"my-plugin\": {\n            \"pkg\": \"my-schnack-plugin\",\n            // ...\n        }\n    }\n}\n```\n\nFeel free to open a PR on [schnack-plugins](https://github.com/schn4ck/schnack-plugins) with your plugin if you want to add it to the \"official\" repository.\n\n### Who is behind Schnack?\n\nSchnack is [yet another](https://github.com/gka/canvid/) happy collaboration between [Webkid](https://webkid.io/) and [Gregor Aisch](https://www.vis4.net), with amazing contributions from:\n\n* [Jerram Digital](https://jerram.co.uk/)\n* [Levi Wheatcroft](https://github.com/leviwheatcroft)\n\n### Who is using Schnack?\n\nSchnack will never track who is using it, so we don't know! If you are a Schnack user, [let us know](https://twitter.com/schnackjs) and we'll add your website here. So far Schnack is being used on:\n\n-   https://schnack.cool (scroll all the day down)\n-   https://vis4.net/blog\n-   https://blog.datawrapper.de\n-   https://blog.webkid.io\n\n### Related projects\n\nThis is not a new idea, so there are a few projects that are doing almost the same thing:\n\n-   [CoralProject Talk](https://github.com/coralproject/talk) - Node + MongoDB + Redis\n-   [Discourse](https://github.com/discourse/discourse) - Ruby on Rails + PostgreSQL + Redis\n-   [Commento](https://github.com/adtac/commento) - Go + Node\n-   [Isso](https://github.com/posativ/isso/) - Python + SQLite3\n-   [Mouthful](https://mouthful.dizzy.zone) – Go + Preact\n\n### Developer notes\n\nIf you want to run your Schnack server on https on localhost, add the following section to your `schnack.json`:\n\n```js\n{\n    \"ssl\": {\n        \"certificate_path\": \"./certs/local.crt\",\n        \"certificate_key\": \"./certs/local.key\"\n    }\n}\n```\n\nTo test changes on the `embed.js` and `client.js` templates you can open a local test server with minimal styles and by-passed authentication using\n\n```bash\nnpm run dev\n```\n\nWe're veIf you want to contribute additional **plugins**, check out the source code for the existing plugins first. We happily accept pull requests on [schnack-plugins](https://github.com/schn4ck/schnack-plugins).\n\nThis project used [Conventional Commits](https://www.conventionalcommits.org/).","funding_links":[],"categories":["JavaScript","Software","nodejs","Self hosted alternatives"],"sub_categories":["Communication - Social Networks and Forums"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschn4ck%2Fschnack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschn4ck%2Fschnack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschn4ck%2Fschnack/lists"}