A Disqus alternative https://posativ.org/isso/
Go to file
Martin Zimmermann b36e2fdb28 COMMIT ALL THE THINGS
* refactor JS (a lot)
* use a CSS framework (neat/bourbon), because CSS is hard
* up/downvote comments
* cleaner HTML
* HTML inclusion in JS
* SVG icons for reference, up and downvote
* basic i18n: english and german supported ootb
* lazy (because slow) client-side identicon generation (preview ability)
* removed website input field for no particular reason
* remove HTML.js in favour of a homebrew DOM manipulation tool
2013-10-01 14:47:01 +02:00
docs rewrite db backend 2013-09-19 18:44:37 +02:00
isso COMMIT ALL THE THINGS 2013-10-01 14:47:01 +02:00
specs COMMIT ALL THE THINGS 2013-10-01 14:47:01 +02:00
.gitignore add .gitignore 2013-09-13 18:03:35 +02:00
LICENSE re-license to MIT 2013-09-19 18:44:40 +02:00
MANIFEST.in add MANIFEST.in 2013-09-03 12:16:11 +02:00
README.md demo now available without SSL 2013-09-26 15:30:31 +02:00
setup.py add ipaddress to setup.py 2013-09-13 17:51:00 +02:00
tox.ini add tox.ini 2013-09-08 13:24:45 +02:00

Isso Ich schrei sonst

You love static blog generators (especially Acrylamid cough) and the only option to interact with the community is Disqus. There's nothing wrong with it, but if you care about the privacy of your audience you are better off with a comment system that is under your control. This is, were Isso comes into play.

Screenshot | Try Yourself! (in case it's not crashed ;-)

Features

  • CRUD comments
  • SQLite backend
  • client-side JS (currently 12.5kb minified and gzipped)

Roadmap

  • Ping/TrackBack™ support
  • simple admin interface
  • spam filtering

Installation

Requirements:

  • Python 2.6 or 2.7
  • NPM

For now (as long as there is no stable version), you need to manually build everything:

~> git clone https://github.com/posativ/isso.git
~> cd isso/
~> python setup.py develop

You can now either use the JS client as-is (using require.js, see below) or compile all JS into a single file:

~> cd isso/js
~> npm install -g requirejs uglifyjs
~> r.js -o build.embed.js
~> r.js -o build.count.js

Before you start, you may want to import comments from Disqus.com:

~> isso import ~/Downloads/user-2013-09-02T11_39_22.971478-all.xml
[100%]  53 threads, 192 comments

You start the server via (try to visit http://localhost:8080/static/post.html).

~> isso run

Webserver Configuration

This part is not fun, I know. I have prepared two possible setups for nginx, using Isso on the same domain as the blog, and on a different domain. Each setup has its own benefits.

Isso on a Sub URI

Let's assume you want Isso on /isso, use the following nginx snippet

server {
    listen       [::]:80;
    listen       [::]:443 ssl;
    server_name  example.tld;
    root         /var/www/example.tld;

    location /isso {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Script-Name /isso;
        proxy_pass http://localhost:8080;
    }
}

The Isso API endpoint is now example.tld/isso, check by curling the client JS located at http://example.tld/isso/js/embed.js.

Isso on a Dedicated Domain

...

Website Integration

Add the following two lines into your HTML header:

<link rel="stylesheet" href="http://example.tld/isso/static/isso.css" />
<script src="http://example.tld/isso/embed.min.js"></script>

To enable comments, add a <div id="#isso-thread"></div> below your post and let the magic happen :-)

To add comment count links to your index page, include count.min.js at the very bottom of your document. All links followed by #isso-thread, are updated with the current comment count.

This functionality is already included when you embed embed.min.js, do not mix embed.min.js and count.min.js in a single document.

Embed with require.js

This section is primarily for developers: The client-side JS is modularized and uses an AMD loader for execution. You can easily hack on the JS files, when using require.js:

<link rel="stylesheet" href="/static/isso.css" />
<script data-main="/js/embed" src="/js/require.js"></script>

API

See docs/API.md.

Alternatives