Skip to content

inventaire/inventaire

Repository files navigation

Inventaire is a libre/open webapp to make inventories and lists of books, powered by open-knowledge.

inventory screenshot

This repository hosts the server-side code of the Inventaire association, a collaborative resources mapper project, while yet only focused on exploring books mapping with Wikidata and ISBNs. The flagship instance is https://inventaire.io and anyone may create their own federated instance.

This repository tracks server-side developments, while the (heavy) client-side can be found here. Client-related technical issues should go in the client repo, while this repo gathers all other technical issues. Non-technical discussions, such as feature requests, should preferably happen in the chat.

Summary

Installation

This is the installation documentation for a developement environment. For production setup, see: docs

Dependencies to install manually

  • git, curl (used in some installation scripts), graphicsmagick (used to resize images), inotify-tools (used in API tests scripts):
  • NodeJS (>=10, using the latest LTS is recommended), NVM (allows greater version update flexibility)
  • a CouchDB (>=3.1) instance (on port 5984 for default config)
  • an Elasticsearch (>=7.10) instance (on port 9200 for default config)

To install all this those dependencies on Debian/Ubuntu:

For packages available in Ubuntu default repositories:

sudo apt-get update
sudo apt-get install git curl wget graphicsmagick inotify-tools

For packages that need a more elaborated installation, see their own documentation:

Alternatively, CouchDB and Elasticsearch could be run in Docker, see docker-inventaire

Whatever the way you installed CouchDB and Elasticsearch, you should now be able to get a response from them:

# Verify that CouchDB is up
curl http://localhost:5984
# Verify that Elasticsearch is up
curl http://localhost:9200

Project development environment installation

git clone https://github.com/inventaire/inventaire.git
cd inventaire
npm install --global tsx
npm install

This should have installed:

  • the server (this git repository) in the current directory
  • the client (inventaire-client) in the client directory
  • i18n strings (inventaire-i18n) in the inventaire-i18n directory

server

The installation step above should have triggered the creation of a ./config/local.cjs file, in which you can override all present in ./config/default.cjs: make sure to set db username and password to your CouchDB username and password.

And now you should be all set! You can now start the server (on port 3006 by default)

# Starting the server in watch mode so that it reboots on file changes
npm run watch
emails

To debug emails in the browser:

  • Get some username and password at https://ethereal.email/create and set the following values in config: mailer.nodemailer.user and mailer.nodemailer.pass.
  • Make an action that triggers the email you would like to work on on the local server (ex: send a friend request)
  • Open https://ethereal.email/messages to see the generated email

Note that, while convenient, debugging emails in the browser is quite an approximation, as some email clients are antiquated, and, sadly, modern CSS can't be used.

client

If you want to work on the client, you need to start the webpack watcher and dev server (on port 3005 by default)

# In another terminal
cd inventaire/client
npm run watch

Installation tips

  • To use executable that are used by the project (such as mocha), you can either find them in ./node_modules/.bin or install them globally with npm: npm install -g tsx mocha lev2 etc.

Repositories and Branches

  • main: the stable branch. Unstable work should happen in feature-specific branches and trigger pull requests when ready to be merged in the main branch. See Code Contributor Guidelines.
  • main: the stable branch. Unstable work should happen in feature-specific branches and trigger pull requests when ready to be merged in the main branch. See Code Contributor Guidelines.

The repository tracking strings used in the server (for emails, activitypub) and client (for the web UI) in all the supported languages. To contribute to translations, see the Inventaire Weblate project

  • main: tracking translations fetched from Weblate and build scripts

tracking installation scripts to run inventaire in production (for production documentation, see docs)

  • main: the main implementation for Debian/Ubuntu systems. Additional branches can be started to document installation on other environments
  • main: tracking docker installation files

Stack Map

This repository correspond to the the "Server" section in the stack map

Concepts map

The app has a few core concepts, see the Glossary for more detailed information

Contribute

For code-related contributions, see How to contribute on wiki.inventaire.io.

Documentation

User documentation

Most of the user doc is on the wiki, especially in the help section.

Admin documentation

See the production documentation.

Technical documentation

The technical wiki page gives a detailed explanation of the architectural choices.

See our not exhaustive API documentation

License

Inventaire is an open-sourced project licensed under AGPLv3.