NodeBB Forum Software is powered by Node.js and supports either Redis, MongoDB, or a PostgreSQL database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB takes the best of the modern web: real-time streaming discussions, mobile responsiveness, and rich RESTful read/write APIs, while staying true to the original bulletin board/forum format → categorical hierarchies, local user accounts, and asynchronous messaging.
NodeBB by itself contains a "common core" of basic functionality, while additional functionality and integrations are enabled through the use of third-party plugins.
This repository is a forked version of the base NodeBB repository with various modifications to support curriculum use.
NodeBB's theming engine is highly flexible and does not restrict your design choices. This version of the repository has our minimalist "Persona" theme installed to get you started.
NodeBB's base theme utilizes Bootstrap 3 but themes can choose to use a different framework altogether.
Follow the installation instructions in the Project 1 Writeup on the course website.
For feature development, we highly recommend you install and use the suggested grunt-cli to enable file-watching and live refresh. We also highly recommend you use VSCode or similar for the development of this project.
When running in a development environment, you can find the API specs for NodeBB at http://localhost:4567/debug/spec/read and http://localhost:4567/debug/spec/write.
This codebase is in the process of being translated to TypeScript! During this intermediate stage, translated files will contain both a .ts
and .js
file in the repository. Translated files should be edited only in the .ts
file; corresponding .js
files will be automatically compiled and generated by the % npx tsc
command.
If using VSCode, you can remove duplicate files from your Explorer view by adding the following to your .vscode/settings.json
file:
{
"files.exclude": {
"**/*.js": { "when": "$(basename).ts" },
"**/**.js": { "when": "$(basename).tsx" }
}
}
VSCode can provide a lot of other assistance too, such as recommending package installs and providing typing information on hover.
This repository comes with tools for linting (ESLint), testing (Mocha), and coverage reporting (nyc). All of these tools can be run locally:
% npm run lint // Runs the linter
% npm run test // Runs test suite + generates coverage report
The first time you run the test command, it may fail and ask you to provide a configuration for a test database. Scroll up past the errors and, depending on your local database setup, follow the provided instructions to add a test database configuration to config.json
and re-run the testing command.
After running the test suite, you can find the coverage report generated in the coverage
directory. This can be viewed in the browser by opening the index.html
file in this directory.
If you want to directly run the linting and testing commands with specific configurations (i.e. only running the test suite on specific files, using --fix
with ESLint), you can find the underlying commands are in the package.json
file.
NodeBB is licensed under the GNU General Public License v3 (GPL-3) (http://www.gnu.org/copyleft/gpl.html).