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

Overview

tade - web/mailing list/nntp discussions

AGPL-3.0 python3 django3 sqlite3

frontpage screenshot frontpage on mobile screenshot

[tade] † ‡ is a discussion/forum/link aggregator application. It provides three interfaces: a regular web page, a mailing list bridge and an NNTP server.

†. pronounced tA-de, ta- as in tally and -de as in the
‡. τάδε is a Greek pronoun meaning this

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

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.

🏷️ 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

You can use this repository as is by modifying the tade package to fit your needs, or install it with pip as a Django app.

Using it directly

cp tade/local/secret_settings.py{.template,}
vim tade/local/secret_settings.py # REQUIRED: add secret token
vim tade/local/settings_local.py # OPTIONAL: local settings (SMTP etc)
python3 -m venv 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 customization options look at the TadeAppConfig class in tade/apps.py, style.css in tade/static and the templates in tade/templates.

Installing with pip

See DEPLOY.md.

Code style

See CODE_STYLE.md.

Owner
Manos Pitsidianakis
Electrical and Computer Engineering
Manos Pitsidianakis
A python tool give n number of inputs and parallelly you will get a output by separetely

http-status-finder Hello Everyone!! This is kavisurya, In this tool you can give n number of inputs and parallelly you will get a output by separetely

KAVISURYA V 3 Dec 05, 2021
Software to help automate collecting crowdsourced annotations using Mechanical Turk.

Video Crowdsourcing Software to help automate collecting crowdsourced annotations using Mechanical Turk. The goal of this project is to enable crowdso

Mike Peven 1 Oct 25, 2021
MicroMIUI - Script to optimize miui and not only

MicroMIUI - Script to optimize miui and not only

Groiznyi-Studio 1 Nov 02, 2021
A work in progress box containing various Python utilities

python-wipbox A set of modern Python libraries under development to simplify the execution of reusable routines by different projects. Table of Conten

Deepnox 2 Jan 20, 2022
Writing Alfred copy/paste scripts in Python

Writing Alfred copy/paste scripts in Python This repository shows how to create Alfred scripts in Python. It assumes that you using pyenv for Python v

Will Fitzgerald 2 Oct 26, 2021
Patch the pclntable from Go binaries

Pretrain and Fine-tune a T5 model with Flax on GCP This tutorial details how pretrain and fine-tune a FlaxT5 model from HuggingFace using a TPU VM ava

6 Oct 05, 2022
Finger is a function symbol recognition engine for binary programs

Finger is a function symbol recognition engine for binary programs

332 Jan 01, 2023
Aurin - A quick AUR installer for Arch Linux. Install packages from AUR website in a click.

Aurin - A quick AUR installer for Arch Linux. Install packages from AUR website in a click.

Suleman 51 Nov 04, 2022
Entropy-controlled contexts in Python

Python module ordered ordered module is the opposite to random - it maintains order in the program. import random x = 5 def increase(): global x

HyperC 36 Nov 03, 2022
Simple script to export contacts from telegram into vCard file

Telegram Contacts Exporter Simple script to export contacts from telegram into vCard file Getting Started Prerequisites You must to put your Telegram

Pere Antoni 1 Oct 17, 2021
A python module to update the console without flashing.

A python module to update the console without flashing.

Matthias 112 Dec 19, 2022
ticktock is a minimalist library to view Python time performance of Python code.

ticktock is a minimalist library to view Python time performance of Python code.

Victor Benichoux 30 Sep 28, 2022
✨ Voici un code en Python par moi, et en français qui permet d'exécuter du Javascript en Python.

JavaScript In Python ❗ Voici un code en Python par moi, et en français qui permet d'exécuter du Javascript en Python. 🔮 Une vidéo pour vous expliquer

MrGabin 4 Mar 28, 2022
osqueryIR is an artifact collection tool for Linux systems.

osqueryIR osqueryIR is an artifact collection tool for Linux systems. It provides the following capabilities: Execute osquery SQL queries Collect file

AbdulRhman Alfaifi 7 Nov 02, 2022
Make some improvements in the Pizza class and pizzashop file by refactoring.

Make some improvements in the Pizza class and pizzashop file by refactoring.

James Brucker 1 Oct 18, 2021
Export watched content from Tautulli to the Letterboxd CSV Import Format

Export watched content from Tautulli to the Letterboxd CSV Import Format

Evan J 5 Aug 31, 2022
Compute the fair market value (FMV) of staking rewards at time of receipt.

tendermint-tax A tool to help calculate the tax liability of staking rewards on Tendermint chains. Specifically, this tool calculates the fair market

5 Jan 07, 2022
A meme error handler for python

Pwython OwO what's this? Pwython is project aiming to fill in one of the biggest problems with python, which is that it is slow lacks owoified text. N

SystematicError 23 Jan 15, 2022
Dynamic key remapper for Wayland Window System, especially for Sway

wayremap Dynamic keyboard remapper for Wayland. It works on both X Window Manager and Wayland, but focused on Wayland as it intercepts evdev input and

Kay Gosho 50 Nov 29, 2022
A collection of custom scripts for working with Quake assets.

Custom Quake Tools A collection of custom scripts for working with Quake assets. Features Script to list all BSP files in a Quake mod

Jason Brownlee 3 Jul 05, 2022