journali

journali

Docker app from journali's Repository

Overview

journali is a product information management system (PIM) in the browser: products and variants, attributes and attribute groups, translations, media with derived images, publication trees per channel and market, workflows and releases. Every change is an entry in a journal, the single source of truth, so the history of each value stays visible. Plugins add import and export (CSV, Excel, JSON), data quality checks, scheduled jobs, AI texts and a product advisor for a website. Test version for testing and evaluation. Needs PostgreSQL 18; install the app journali-db first (PostgreSQL 18 with the vector extension for semantic search) or use an existing PostgreSQL 18. The first visit of the web UI asks for the database connection and creates the first administrator. Licence: AGPL-3.0.

journali PIM

Product data from a journal. Every change is an entry, every view of the data is derived from it.

(PIM, MDM, data store per channel) · Website: journali.de · Demo: try journali · Articles: journali.de/category/entwicklung · Deutsch: README.de.md

Test version

This software is under development (alpha/beta) and is provided solely for testing and evaluation purposes. It is expressly not suitable for production use or critical system environments.

Use is at your own risk. The descriptions on journali.de refer to the production release.

Idea

A PIM is not hard because of trees and attributes, but because of the axes — language × channel × variant × rights — that multiply every function, because of the history every write path has to maintain, and because of the interfaces to the outside that are never finished.

journali answers all three with one mechanism: the journal is the single source of truth, everything else is derived from it. History is the journal itself, a delta export is "everything since number N", and a broken view is rebuilt instead of repaired.

In detail (German): docs/architektur.md.

Installation

On Unraid there are templates under unraid/ (journali, its database journali-db, and journali-advisor). Otherwise Docker with Compose is required. The image is ghcr.io/journalipim/journali, the database is PostgreSQL 18 from compose.yaml.

git clone https://github.com/journalipim/journali.git
cd journali
docker compose pull
docker compose up -d

Then open http://localhost:8080; the first visit creates the administrator. Plugins are a bind mount under plugins/, jobs and media are in volumes. New version: docker compose pull && docker compose up -d. To build the image yourself: docker compose up --build -d. Environment, storage, backup and licence are described in docs/betrieb.md (German); the help inside the instance explains how to use it (? at the top right), in German and English.

Source and contributions

Copyright (C) 2026 Taloan. journali is free software under the GNU Affero General Public License, version 3 (LICENSE): you may use, modify and distribute it; whoever distributes a modified version or offers it as a network service gives its users the source code under the same licence. Other licence terms are available on request. Pull requests are not accepted and are closed automatically (CONTRIBUTING.md). Extensions are plugins (docs/plugins-zertifizierung.md); the journali seal and catalogue cover journali's own plugins only. Report a vulnerability confidentially (SECURITY.md); serious known bugs are listed in BEKANNTE-FEHLER.md.

"journali PIM" is a trademark filed with the German Patent and Trade Mark Office (DPMA). The licence grants no rights in it: a modified or derived version may not be distributed or offered under this name.

Structure

Project Purpose
Journali.Core journal, entries, derived views — net8.0, no dependencies
Journali.Sandbox console: fill a journal, build a view, print it
Journali.Server ASP.NET Core: journal in PostgreSQL 18, product view, commands under /api — docs/betrieb.md, docs/eintraege.md
web user interface, Vue 3 + Vite; built into Journali.Server/wwwroot
plugins one plugin per directory: import and export, data quality, jobs, product advisor and more

journali is only shipped as a package: Dockerfile and compose.yaml bring server and database together, see Installation above. Running from source is development and is described in docs/betrieb.md under "Entwickeln auf dem PC". The documentation in docs/ is German.

Requirements

journali-db: PostgreSQL 18 with the vector extension (image pgvector/pgvector:pg18, template unraid/journali-db.xml)

Related apps

Details

Repository
ghcr.io/journalipim/journali:latest
Last Updated2026-10-23
First Seen2026-10-23

Runtime arguments

Web UI
http://[IP]:[PORT:8080]/
Network
bridge
Shell
bash
Privileged
false
Extra Params
--restart unless-stopped

Template configuration

Web UIPorttcp

Port of the web UI

Target
8080
Default
8080
Value
8080
DataPathrw

Data directory: database connection (db.json), jobs, snapshot, mirror of the journal

Target
/data/jobs
Default
/mnt/user/appdata/journali
Value
/mnt/user/appdata/journali
JOURNALI_JOBSVariable

Data directory inside the container, matching the path Data

Default
/data/jobs
Value
/data/jobs
JOURNALI_MEDIAVariable

Where media are stored: postgres (in the database), a directory, or s3://bucket

Default
postgres
Value
postgres
TZVariable

Time zone of the container

Default
Europe/Berlin
Value
Europe/Berlin