Web forum using Racket/SQLite.

Pelle Hjek 38537d0e0c fix db init 9 months ago
htdocs af1cb48e92 Remove dependency on external markdown package 9 months ago
.gitignore 540951291f Work in progress! 11 months ago
COPYING 540951291f Work in progress! 11 months ago
IDEAS.md 91a62d70f6 Feature checklist 10 months ago
README.md af1cb48e92 Remove dependency on external markdown package 9 months ago
bazar.rkt 97c7ac9e3a Unvote 10 months ago
login.rkt af1cb48e92 Remove dependency on external markdown package 9 months ago
markdown.rkt 97c7ac9e3a Unvote 10 months ago
model.rkt 38537d0e0c fix db init 9 months ago
page.rkt af1cb48e92 Remove dependency on external markdown package 9 months ago
post.rkt af1cb48e92 Remove dependency on external markdown package 9 months ago
search.rkt af1cb48e92 Remove dependency on external markdown package 9 months ago
serve.rkt af1cb48e92 Remove dependency on external markdown package 9 months ago
undebatable.rkt eaa6bd538d Remove shell scripts 10 months ago
upload.rkt af1cb48e92 Remove dependency on external markdown package 9 months ago
user.rkt af1cb48e92 Remove dependency on external markdown package 9 months ago
vote.rkt af1cb48e92 Remove dependency on external markdown package 9 months ago

README.md

Undebatable

A HN-like written in Racket.

Not yet stable! But feel free to try it out.

How to run

  • install Racket version >= 7.0
  • in the undebatable folder run ./undebatable.rkt

Feature development

Need

  • site admin
  • change password
  • friendly error messages
  • correct redirection after action
  • collapsible comments
  • post deletion
  • search
  • threads participated in
  • notification on reply
  • limit login tries
  • unvoting
  • password recovery
  • file upload
  • download user data in machine readable format (GDPR)
  • "forget me" / profile deletion (GDPR)
  • pagination
  • graceful degredation (js not required)
  • sockpuppet detection
  • spam filter
  • bazar / shop, but without paypal
  • event planner (doodle-like)
  • title length limit

Want

  • dupe detection
  • zero-config install
  • easy backup (all state in one file)
  • a general way of listing items. (DRY)
  • proper ranking algorithm
  • tags
  • provide rss feeds
  • user profiles
  • upload expiriy
  • anonymous file upload (with shorter expiry times, perhaps)
  • multimedia gallery
  • closed threads (via password or via user list? probably user list)

Like

  • advanced search
  • optional filter bubble view, e.g. things similar to what you have upvoted before (or dissimilar to downvoted items)
  • avoid PLOP
  • numbered pagination
  • user styles
  • feed reader
  • geographical blogging

Security

  • use prepared SQL statements to prevent injection
  • escape user input before displayed
  • use POST requests for state change (is login relevant here?)
  • require auth tokens in every POST request to prevent CSRF

Code style

  • use SQL as much as possible (be declarative)
  • use currying when applying general functions for more specific purposes
  • use keyword arguments when there are too many of them
  • use pattern matching as much as possible