nimforum is a free, open source community platforms project written in Nim and released under MIT. It has 785 GitHub stars, 70 forks and 129 open issues, and was last pushed 3 months ago. On this registry it ranks #11 of 14 tracked projects in Community Platforms, with 5 head-to-head comparisons available.

What is nimforum?

What it is

NimForum is a lightweight forum implementation written in the Nim programming language and positioned as an alternative to Discourse. It provides a single-page application built with the Karax and Jester frameworks, while using SQLite as its database, and it is used by the Nim community at forum.nim-lang.org.

The project solves the problem of running a web forum with a lighter setup than Discourse-style platforms. It gives operators a forum with post formatting, search, moderation tools, and interface customization, while keeping setup focused on SQLite and Nim-based components.

Key capabilities

  • The forum runs as a single-page application developed with Karax and Jester, so the interface and backend are tied to Nim-based web frameworks.
  • It stores forum data in SQLite, which reduces the need for a separate database server during setup.
  • It supports post formatting through reStructuredText enriched by Markdown, giving users a text-based writing model for forum posts.
  • It provides search through SQLite's full-text search, allowing forum content to be queried without an external search engine.
  • It includes new user sandboxing and moderator tools for spam blocking, giving operators mechanisms to control early user behavior.
  • It supports context-aware replies, last visit tracking, and Gravatar support, adding common forum interaction features.
  • It can be customized through SASS, allowing operators to change the appearance through stylesheet sources.

Who uses it and how

  • The Nim community uses it as a public discussion venue, as shown by the live example at forum.nim-lang.org.
  • Self-hosted forum operators can deploy it with Docker by building and starting the provided docker-compose configuration, then accessing it on localhost port 5000.
  • Developers can work locally by cloning the repository, updating submodules, creating a development database with nimble devdb, building the frontend with nimble frontend, and running the backend with nimble backend.
  • Moderators can use the sandboxing and moderator tools to manage new users and spam-related behavior.
  • Contributors can test the project with the provided Nimble tasks, which include frontend, backend, database, and test workflows.

Getting started

Typical installation uses either the Nim toolchain and Nimble tasks or Docker with docker-compose. The documented local workflow creates a development database, builds the frontend, and starts the backend at localhost:5000.

When to use it — and when not to

NimForum fits teams that want a Nim-based forum with SQLite storage and a lighter alternative to Discourse, especially when they can work with command-line setup and SASS customization. Self-hosters must operate the application, its SQLite database, build dependencies such as libsass, SQLite, and pcre, and deployment details such as changing the default port when localhost:5000 conflicts with local services. The provided metadata shows 129 open issues and no contributor count, so teams should evaluate maintenance status before adoption.

project readme (upstream, from github) — read inline

nimforum

NimForum is a light-weight forum implementation with many similarities to Discourse. It is implemented in the Nim programming language and uses SQLite for its database.

Examples in the wild

forum.nim-lang.org

forum.nim-lang.org

Features

  • Efficient, type safe and clean single-page application developed using the Karax and Jester frameworks.
  • Utilizes SQLite making set up much easier.
  • Endlessly customizable using SASS.
  • Spam blocking via new user sandboxing with great tools for moderators.
  • reStructuredText enriched by Markdown to make formatting your posts a breeze.
  • Search powered by SQLite's full-text search.
  • Context-aware replies.
  • Last visit tracking.
  • Gravatar support.
  • And much more!

Setup

See this document.

Dependencies

The following lists the dependencies which you may need to install manually in order to get NimForum running, compiled*, or tested†.

  • libsass
  • SQLite
  • pcre
  • Nim (and the Nimble package manager)*
  • geckodriver
    • Firefox†

[*] Build time dependencies

[†] Test time dependencies

Development

Check out the tasks defined by this project's nimforum.nimble file by running nimble tasks, as of writing they are:

backend              Compiles and runs the forum backend
runbackend           Runs the forum backend
frontend             Builds the necessary JS frontend (with CSS)
minify               Minifies the JS using Google's closure compiler
testdb               Creates a test DB (with admin account!)
devdb                Creates a test DB (with admin account!)
blankdb              Creates a blank DB
test                 Runs tester
fasttest             Runs tester without recompiling backend

To get up and running:

git clone https://github.com/nim-lang/nimforum
cd nimforum
git submodule update --init --recursive

# Setup the db with user: admin, pass: admin and some other users
nimble devdb

# Run this again if frontend code changes
nimble frontend

# Will start a server at localhost:5000
# MacOS users should note that port 5000 is reserved for AirPlay
# Set the entry "port" in forum.json to change the default
nimble backend

Development typically involves running nimble devdb which sets up the database for development and testing, then nimble backend which compiles and runs the forum's backend, and nimble frontend separately to build the frontend. When making changes to the frontend it should be enough to simply run nimble frontend again to rebuild. This command will also build the SASS nimforum.scss file in the public/css directory.

With docker

You can easily launch site on localhost if you have docker and docker-compose. You don't have to setup dependencies (libsass, sglite, pcre, etc...) on you host PC.

To get up and running:

cd docker
docker-compose build
docker-compose up

And you can access local NimForum site. Open http://localhost:5000 .

Troubleshooting

You might have to run nimble install karax@#5f21dcd, if setup fails with:

andinus@circinus ~/projects/forks/nimforum> nimble --verbose devdb
[...]
 Installing karax@#5f21dcd
       Tip: 24 messages have been suppressed, use --verbose to show them.
     Error: No binaries built, did you specify a valid binary name?
[...]
     Error: Exception raised during nimble script execution

The hash needs to be replaced with the one specified in output.

Copyright

Copyright (c) 2012-2018 Andreas Rumpf, Dominik Picheta.

All rights reserved.

License

NimForum is licensed under the MIT license.

Frequently asked questions

Is nimforum free to use?

nimforum is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does nimforum do?

Lightweight alternative to Discourse written in Nim

What is nimforum written in?

nimforum is primarily written in Nim. Its source is publicly available at https://github.com/nim-lang/nimforum, and it has 785 GitHub stars.