• Stars
    star
    13
  • Rank 1,462,983 (Top 30 %)
  • Language
    Python
  • License
    GNU Affero Genera...
  • Created almost 3 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

link aggregator community organised by tags (with no javascript)

[sic] link aggregator organised by tags AGPL-3.0 python3 django3 sqlite3

Public instance at https://sic.pm | Tor hidden service | IRC: #sic on Libera Chat | [sic] bot on Mastodon

frontpage screenshot frontpage on mobile screenshot

In a nutshell

  • No Javascript necessary. An HTML5 compliant browser is enough; it even runs on w3m, the text web browser.
  • Lightweight, requires only a python3 environment and stores its database in a sqlite3 file.
  • Can be deployed with WSGI compatible servers (Apache/NGINX) or even django's development server if need be.

✒️ Forum features

  • Posts can be text and/or URLs.
  • Posts can optionally have any number of tags.
  • Latest stories RSS and Atom feeds are provided.
  • Post and comment text content support commonmark Markdown syntax.
  • Posts and comments can only be upvoted. Support for flagging (downvoting) will be added soon.
  • Posts can be pinned to the top with a time limit or indefinitely.

🏷️ Tag and 🗂️ Aggregation system

  • Tags can optionally have any number of parent tags (but cycles are not allowed)
  • Tags can optionally be organised in Aggregations, which are collections of tags with a common theme. A user's frontpage can be either all stories or their subscribed aggregations' stories.
  • Aggregations can optionally be private, public or discoverable by other users.
  • Aggregations can be set as "default" by moderators. New users are subscribed to default aggregations.
  • Users can create their own aggregations at any time.
  • Tags, users and domains can be excluded from an Aggregation via exclude filters.

🔍 Search system

  • Comments and posts are automatically indexed in a separate sqlite database file using the fts5 (full text search) virtual table extension.
  • Posts with URLs can optionally have their remote content fetched and indexed with a django management command (e.g. from within a cron job).

🎛️ Permission and moderation system

  • Users can be inactive, active or banned.
  • Moderators can set the number of days for which an account is considered new. New accounts cannot add tags or perform other potentially destructive actions.
  • Public moderation log.

📨 Notification and email system

  • Mentioning other users in comments notifies them.
  • Users can choose when they receive each kind of notification via email
  • Users can optionally enable a weekly digest email.

👥 Account system

  • Users can either freely sign-up or have to be invited to.
  • Users can optionally request for an invitation (this feature can be turned off).
  • Users can save any story, comment to their bookmarks along with personal notes and export them at any time.
  • Users can add personal metadata in their profile, including an avatar.
  • Users can add "hats" to their account, which are decorations that can optionally be added to a comment. For example a moderator user wanting to comment as a moderator and not as a user would use a hat.
  • Users have a personalised Atom or RSS feed that shows only their subscriptions.

🌐 Web standards

Setup / Deployment

cp sic/local/secret_settings.py{.template,}
vim sic/local/secret_settings.py # REQUIRED: add secret token
vim sic/local/settings_local.py # OPTIONAL: local settings (SMTP etc)
python3 -m venv # OPTIONAL: setup virtual python enviroment in 'venv' directory
python3 -m pip install -r requirements.txt # Or 'pip3' install...
python3 manage.py migrate #sets up database
python3 manage.py createsuperuser #selfexplanatory
python3 manage.py runserver # run at 127.0.0.1:8000
python3 manage.py runserver 8001 # or run at 127.0.0.1:8001
python3 manage.py runserver 0.0.0.0:8000 # or run at public-ip:8000

For macos you will need to provide paths for headers and libraries like so:

$ python3 -m pip install pygraphviz
$ python3 -m pip install \
    --global-option=build_ext \
    --global-option="-I$(brew --prefix graphviz)/include/" \
    --global-option="-L$(brew --prefix graphviz)/lib/" \
    -r requirements.txt

See DEPLOY.md for deployment instructions.

Code style

See CODE_STYLE.md.

More Repositories

1

gerb

Graphical font editor (GTK + Rust)
Rust
312
star
2

bb

simple toy process viewer in rust https://crates.io/crates/bb
Rust
222
star
3

bibliothecula

document organizer with tags and full-text-search, in a simple and clean sqlite3 schema
Python
156
star
4

rsqlite3

sqlite3 Rewritten in RiiR Rust 🦀🦀🦀 /s
Rust
154
star
5

rlr

interactive pixel screen ruler and protractor
Rust
52
star
6

nntpserver.py

No-dependency, single file NNTP server library for developing modern, rfc3977-compliant (bridge) NNTP servers.
Python
51
star
7

bitmappers-companion

zine/book about bitmap drawing algorithms and math with code examples in Rust
Rust
44
star
8

vfsstat.rs

Example sqlite3 Dynamic Loadable Extension in Rust - vfs and vtab modules - port of vfsstat.c
Rust
33
star
9

buke

full text search manpages
Rust
28
star
10

tade

tade is a discussion/forum/link aggregator application. It provides three interfaces: a regular web page, a mailing list bridge and an NNTP server
Python
24
star
11

kitkat

Kit-kat clock utility rewritten in Rust using minifb
Rust
19
star
12

ocaml-prolog

prolog interpreter in ocaml
OCaml
7
star
13

ChaucerFont

A font based on William Morris' Chaucer typeface from the Kelmscott Chaucer edition
TeX
4
star
14

sqlite-carelink

An sqlite3 schema for glucose sensor readings from Medtronic Minimed Carelink
Python
3
star
15

anatomy-of-melancholy-latex

The 17th century book "The Anatomy Of Melancholy" by Robert Burton typeset with XeLaTeX.
TeX
3
star
16

libssg

static site generation library - make your own static site generator
Rust
2
star
17

scrcpy-input.py

scrcpy doesn't support non-ascii (unicode) key input. This tool copies your input to system clipboard and then synchronises it with android's clipboard and pastes it with Alt-v command. Obviously this will overwrite your clipboard contents. Make sure you focus on the text input on the scrcpy window before you attempt to paste. (see README for demo pics)
Python
1
star
18

iconbar

mirror of http://iconbar.sourceforge.net/
C
1
star
19

tony

Rust
1
star
20

fantastic-rust-gtk-adventure

Rust
1
star
21

qemu-virtio-snd

C
1
star