A bare-bones academic wiki with LaTeX and (multi)markdown support
Switch branches/tags
Nothing to show
Clone or download
mattmight Merge pull request #1 from gatlin/master
The Makefile references `res/` but it's actually `resources/`
Latest commit 028fa47 Jun 25, 2015
Type Name Latest commit message Commit time
Failed to load latest commit information.
resources Initial import. Jun 13, 2015
LICENSE.md GPL'd Jun 14, 2015
Makefile corrected paths to database and resources/ Jun 24, 2015
README.md Updated readme to point to web programming article. Jun 14, 2015
config.rkt.default ugh git Jun 24, 2015
mime.types Initial import. Jun 13, 2015
uiki.rkt Added note about using web-server/dispatch. Jun 15, 2015


Uiki: A simple academic wiki

Uiki (wee-kee) is a simple academic wiki which supports:

  • MathJax for LaTeX formatting
  • multimarkdown for markdown formatting
  • git for page versioning/offline editing
  • prettify for syntax highlighting
  • htpasswd-style files for user authentication
  • SSL-encrypted connections

To enable remote checkouts/editing and to avoid the risk of losing data due to upgrades, all uiki pages are stored in (markdown-formatted) plaintext.

For a page <name>, the content for that page will be (by default) in:


which is also easily editable by a text editor on the server.

This program serves as the motivation for my article on web programming in Racket.


  • racket
  • git
  • multimarkdown
  • sed
  • htpasswd (bundled with Apache)
  • openssl (if generating a key and cert)


There is no installation. Uiki runs in place.


To run uiki, use:

make run

or directly with:

racket uiki.rkt

By default, it will be on port 8080, and the main page is /wiki/main.

After you start it, set your browser to:



Configuration parameters are in config.rkt.

By default, authentication is on, but SSL is off.

To generate config.rkt, run make config.rkt.

The first time the server runs, it will create a passwd file and ask you to create an admin account.

Adding users

You can add users with htpasswd by modifying passwd, but users must use SHA1-hashed passwords.

For example, in the application directory:

htpasswd -s passwd john

Enabling SSL

Run make certs to generate a private key and a self-signed certificate in the directory certs.

Then, modify the approriate entries in global.rkt to point to these, and set use-ssl? to #t.

Wiki syntax

You can link to new pages by enclosing their name in [[ and ]].

You can use the pipe [[target|text]] notation to redirect a within-wiki link.

Markdown syntax

Markdown syntax is supported by multimarkdown.

LaTeX syntax

Inline LaTeX syntax is supported with $-notation, as in $f(x)$.

Equation blocks are supported by surrounding LaTeX with \\[ and \\], as in:

 Z = \int_0^\infty g(x)d(x)

Syntax highlighting

You can render code with syntax highlighting in a fenced block by specifying the language, as in:

function main () {
   printf("Running some code.")


Uiki: A simple academic wiki.

Copyright (©) 2015 Matthew Might

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.