Readme

Knark

Knark is a version of Arc forked from Anarki and relicensed under Affero GPL . It comes with News, a Hacker News style app, which is extremely easy to set up as it comes with it’s own built-in web server and database.

What’s new in Knark?

Installation

First install a recent version of Racket, then:

text $ git clone https://notabug.org/hjek/knark # fetch knark $ cd knark # enter the knark directory $ ./news # run news server

To assign a user as admin, use the make-admin function on the repl:

text (make-admin 'alice 'bob) ; make alice and bob admins

Then go to your News site, click on login, and create the account with the username you set as admin. You should now be logged in as an admin!

To customize News, use the customize function:

text (customize "News" ; name "https://site.example.com" ; url "https://example.com" ; parent url "What this site is about." ; description "hn.css" ; theme "arc.png") ; logo url

If you’d like users to be able to reset their passwords if they forget them, you need to set up an email address to send out password recovery emails:

text (set-appemail "alice@example.com" ; from "smtp.example.com" ; smtp server "1234") ; password

Production-ready setup

Please follow these instructions for a production-ready News setup using Nginx and SystemD.

Windows support

Although this fork does aim to eliminate non-portable code, it doesn’t maintain any separate batch scripts for the non-free Windows operating system. Victims may however be able to start Knark with Bash for Windows.

Development

Documentation

If you’re new to Arc, or Lisp in general, a good starting point is the Tutorial and Paul Graham’s writings about Arc.

If you run into trouble, check:

Racket interop

Racket expressions can be evaluated with the ($ ...) syntax:

text ($ (string-append "foo" "bar" "baz")) "foobarbaz"

Racket has a well-documented standard library, which is well worth exploring if you haven’t already.

Arc doesn’t have a keyword type, so use kw-apply for calling Racket functions that take keyword arguments.

Tests

Q: What happened to every bug out there? A: it passed the type checker, and it passed all tests.

Todo