Profile
Back to NewsBack
GitHub Trending 3 min
Reader Mode
Trustroots/trustroots: Travellers' community for sharing, hosting and getting people together.

Trustroots/trustroots: Travellers' community for sharing, hosting and getting people together.

12 hours ago



Trustroots

Travellers' community. Sharing, hosting and getting people together.

Current development

Tests</a>

_Out of maintenance mode_

As of June 2026, Trustroots is no longer in maintenance mode. The project was mostly in maintenance mode from 2022 until June 2026, and development work is welcome again.

Priorities:

  • Simplify old code and reduce duplication.
  • Upgrade dependencies and improve the development setup, including Docker.
  • Continue the React transition where it makes sense.
  • Work on Nostr/Nostroots integration. The basics are in place for NIP-5 and NIP-7.
  • Make Trustroots easier to fork and run independently.
See
CONTRIBUTING.md for contribution guidelines and tests. See team.trustroots.org for more ways to help.

Medium term plans

Our medium term plan is decentralisation through the Nostr protocol. See https://github.com/Trustroots/nostroots.

We are also open to improvements that make trustroots forkable.

nvm & npm

We're using nvm to manage node versions.

It's important to use the latest version of npm v7 and not later.

To be able to install dependencies on macOS / apple silicon, the following dependencies are required:

  • brew install pkg-config cairo pango libpng jpeg giflib librsvg python-setuptools
Installing mmmagic expects python to be a valid binary, which it is not. This can be solved by adding a symlink from python to python3 like so:
  • ln -s "$(brew --prefix)/bin/python"{3,}
If you're running on apple silicon, you also need to run this command:
  • sed -i '' 's/"rU"/"r"/' ~/.nvm/versions/node/v16.20.2/lib/node_modules/npm/node_modules/node-gyp/gyp/pylib/gyp/input.py
You might also need to run the linux equivalent of that if you see an error about "ValueError: invalid mode: 'rU' while trying to load binding.gyp". The linux equivalent removes the first set of ''.

Running locally

Choose the setup that fits what you're doing:

  • Host development: nvm use && npm start
  • Docker development: cd deploy/docker && docker compose up
  • Dev container: open the repository with Dev Containers: Reopen in Container
and run npm start inside the integrated terminal

The host and Docker setups serve the app at http://localhost:3000.

Mailpit catches outbound development email when using Docker Compose or the Dev Container. Its web UI is available at http://localhost:1080 for Docker Compose and http://localhost:11080 for the Dev Container. Bare npm start uses an in-process JSON transport instead and does not start the mail UI.

Docker dev uses hot reload, Mailpit, and a shared MongoDB service. Development emails are captured locally and are not delivered. See deploy/docker/README.md for first-time setup, troubleshooting, dependency rebuilds, test workflows, and production-like image checks. See .devcontainer/README.md for editor and test workflow details.

Building for production

See deploy/docker. Run dockerBuild.sh. Then docker push the latest tags which are output as the last part of the dockerBuild.sh script.

Merging

Only use git merge --no-ff branch or the "Create a merge commit" option on GitHub. We don't want to delete any commit hashes. No rebasing or squashing.

We use the commit hash to track what was deployed when, so any of those operations can destroy that history, making it much harder to understand what code was deployed when in the past.

License

  • The AGPL Licence
  • Photos copyright photographers - several of them are under Creative Commons. Others are permitted to use only with Trustroots.
  • Logos of external communities are copyrighted work and may be subject to trademark laws.
Chat with me