journiv/journiv-app

Journiv - Self hosted private journaling app

JavaScript

1,235

572 commits

updated Sep 28, 2026

See the code

README

📘 Journiv - Private Journal

⚠️ Beta Software

Journiv is currently in beta and under active development. While the developers aims to keep data backward-compatible, breaking changes may still occur. Please keep regular backups of your data to avoid loss during updates.

Journiv is a self-hosted private journal. It features comprehensive journaling capabilities including mood tracking, prompt-based journaling, media uploads, analytics, and advanced search with a clean and minimal UI.

Run on PikaPods    Deploy on Easypanel

Visit Journiv Website    Docker Pulls    Join Journiv Discord    Join Journiv Reddit

Status: Beta Active Development Backups Recommended

👉 Watch Demo Videos          

Quick Start

Give Journiv a quick try with one docker command.

[!NOTE] This docker run command starts a minimal version of Journiv. Media files can be uploaded, but images, videos, and audio will stay at Processing and will not appear in entries without a Redis/Valkey broker and a Celery worker. Import and export jobs also require the worker. For these features, use the complete Docker Compose file.

Docker Run

docker run -d \
  --name journiv \
  -p 8000:8000 \
  -e SECRET_KEY=your-secret-key-here \
  -e DOMAIN_NAME=192.168.1.1 \
  -e ALLOW_INSECURE_COOKIE_AUTH_OVER_HTTP=true \
  -v journiv_data:/data \
  --restart unless-stopped \
  swalabtech/journiv-app:latest

Access Journiv: Open http://192.168.1.1:8000 (replace with your server IP) in your browser to try it out.

[!WARNING] The insecure HTTP opt-in above exists for isolated, trusted LANs only. HTTP exposes passwords and refresh cookies to interception by other devices on the network. Use DOMAIN_SCHEME=https for any internet-accessible or untrusted network deployment.

For complete installation guide see installation guide.

Web interfaces

The production container serves both compiled frontends from the same FastAPI origin and public port:

/              React frontend (primary)
/legacy/       Flutter frontend (temporary legacy interface)
/api/v1/*      FastAPI API
/pub/*         Public publishing routes
/docs          FastAPI docs when enabled
/openapi.json  FastAPI OpenAPI schema

React is the default Journiv interface from this release onward. The Flutter interface remains available temporarily at /legacy/ for users who need to switch back during the transition and may be removed in a future release.

Upgrades from versions where Flutter owned / are handled by a narrowly scoped retirement worker at /flutter_service_worker.js. It replaces only the old root Flutter worker, removes the standard flutter-app-* caches, unregisters itself, and reloads a controlled window. React also performs a one-time check for that exact root registration. Other service-worker registrations are left untouched, preserving a path for future React PWA support.

Demo

Want to just try a demo? (Thanks to JasonFieldz for hosting a demo instance).

Documentation

Read the docs to learn more about Journiv and configuring it.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md and LICENSE for guidelines.

License

This project is licensed under the terms specified in the LICENSE file.

Support

Need help or want to report an issue?

Star History Chart


Disclaimer

AI-Assisted Development

Journiv is a personal source avaliable project developed outside of my full-time work as a software engineer. It grew out of a need I had for many years for a capable, private, self-hosted journaling application. I could not find an existing option that matched what I wanted, so Journiv started as a project to build one.

AI-powered software development tools have made it practical for me to develop and maintain a project of this scope in the limited time available outside of work. Without these tools, I realistically would not have the time to build many of the features and experiences that Journiv provides today.

AI assistance has been used most extensively in the development of the latest React frontend (V2), including implementation, refactoring, testing, code review assistance, and documentation. Other parts of the repository also contains portions of code, documentation, or text generated with the assistance of AI/LLM tools.

AI tools are used as development aids, while product requirements, architecture, design decisions, and release decisions remain human-directed.

The level of manual review varies by area of the codebase. Backend changes are generally read and reviewed at the code level, with an understanding of the Python implementation and surrounding application behavior. For the React frontend, review is more heavily focused on the resulting user experience and application behavior through hands-on UI testing, automated tests, and targeted inspection of the generated code rather than a line-by-line review of every change.

AI-assisted contributions are refined, tested, and iterated on as part of the normal development process, with the goal of meeting the same functional, maintainability, security, and quality expectations as the rest of the project.

AI use during development is separate from Journiv's runtime behavior. Journiv does not require an LLM service in order to run, and the use of AI coding tools during development does not cause journal entries or other private user content to be sent to an AI provider.

Journiv recognizes that people have different preferences and comfort levels around AI-assisted software development. This disclosure is intended to be clear about how Journiv is built so that users and contributors can make an informed decision about whether the project is right for them.

homelab
journal
journaling-app
mood
mood-tracker
notes-app
note-taking
privacy
privacy-tools
self-hosted
selfhosted

journiv/journiv-app

Journiv - Self hosted private journaling app

JavaScript

1,235

572 commits

updated Sep 28, 2026

See the code

README

📘 Journiv - Private Journal

⚠️ Beta Software

Journiv is currently in beta and under active development. While the developers aims to keep data backward-compatible, breaking changes may still occur. Please keep regular backups of your data to avoid loss during updates.

Journiv is a self-hosted private journal. It features comprehensive journaling capabilities including mood tracking, prompt-based journaling, media uploads, analytics, and advanced search with a clean and minimal UI.

Run on PikaPods    Deploy on Easypanel

Visit Journiv Website    Docker Pulls    Join Journiv Discord    Join Journiv Reddit

Status: Beta Active Development Backups Recommended

👉 Watch Demo Videos          

Quick Start

Give Journiv a quick try with one docker command.

[!NOTE] This docker run command starts a minimal version of Journiv. Media files can be uploaded, but images, videos, and audio will stay at Processing and will not appear in entries without a Redis/Valkey broker and a Celery worker. Import and export jobs also require the worker. For these features, use the complete Docker Compose file.

Docker Run

docker run -d \
  --name journiv \
  -p 8000:8000 \
  -e SECRET_KEY=your-secret-key-here \
  -e DOMAIN_NAME=192.168.1.1 \
  -e ALLOW_INSECURE_COOKIE_AUTH_OVER_HTTP=true \
  -v journiv_data:/data \
  --restart unless-stopped \
  swalabtech/journiv-app:latest

Access Journiv: Open http://192.168.1.1:8000 (replace with your server IP) in your browser to try it out.

[!WARNING] The insecure HTTP opt-in above exists for isolated, trusted LANs only. HTTP exposes passwords and refresh cookies to interception by other devices on the network. Use DOMAIN_SCHEME=https for any internet-accessible or untrusted network deployment.

For complete installation guide see installation guide.

Web interfaces

The production container serves both compiled frontends from the same FastAPI origin and public port:

/              React frontend (primary)
/legacy/       Flutter frontend (temporary legacy interface)
/api/v1/*      FastAPI API
/pub/*         Public publishing routes
/docs          FastAPI docs when enabled
/openapi.json  FastAPI OpenAPI schema

React is the default Journiv interface from this release onward. The Flutter interface remains available temporarily at /legacy/ for users who need to switch back during the transition and may be removed in a future release.

Upgrades from versions where Flutter owned / are handled by a narrowly scoped retirement worker at /flutter_service_worker.js. It replaces only the old root Flutter worker, removes the standard flutter-app-* caches, unregisters itself, and reloads a controlled window. React also performs a one-time check for that exact root registration. Other service-worker registrations are left untouched, preserving a path for future React PWA support.

Demo

Want to just try a demo? (Thanks to JasonFieldz for hosting a demo instance).

Documentation

Read the docs to learn more about Journiv and configuring it.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md and LICENSE for guidelines.

License

This project is licensed under the terms specified in the LICENSE file.

Support

Need help or want to report an issue?

Star History Chart


Disclaimer

AI-Assisted Development

Journiv is a personal source avaliable project developed outside of my full-time work as a software engineer. It grew out of a need I had for many years for a capable, private, self-hosted journaling application. I could not find an existing option that matched what I wanted, so Journiv started as a project to build one.

AI-powered software development tools have made it practical for me to develop and maintain a project of this scope in the limited time available outside of work. Without these tools, I realistically would not have the time to build many of the features and experiences that Journiv provides today.

AI assistance has been used most extensively in the development of the latest React frontend (V2), including implementation, refactoring, testing, code review assistance, and documentation. Other parts of the repository also contains portions of code, documentation, or text generated with the assistance of AI/LLM tools.

AI tools are used as development aids, while product requirements, architecture, design decisions, and release decisions remain human-directed.

The level of manual review varies by area of the codebase. Backend changes are generally read and reviewed at the code level, with an understanding of the Python implementation and surrounding application behavior. For the React frontend, review is more heavily focused on the resulting user experience and application behavior through hands-on UI testing, automated tests, and targeted inspection of the generated code rather than a line-by-line review of every change.

AI-assisted contributions are refined, tested, and iterated on as part of the normal development process, with the goal of meeting the same functional, maintainability, security, and quality expectations as the rest of the project.

AI use during development is separate from Journiv's runtime behavior. Journiv does not require an LLM service in order to run, and the use of AI coding tools during development does not cause journal entries or other private user content to be sent to an AI provider.

Journiv recognizes that people have different preferences and comfort levels around AI-assisted software development. This disclosure is intended to be clear about how Journiv is built so that users and contributors can make an informed decision about whether the project is right for them.

homelab
journal
journaling-app
mood
mood-tracker
notes-app
note-taking
privacy
privacy-tools
self-hosted
selfhosted

Significant stargazers

TornaxO7

139 followers · starred Jan 2026

Autumn (Bee)

2,288 followers · starred Dec 2025

Erich Gubler

177 followers · starred Apr 2026

Raymond Berger

344 followers · starred Feb 2026