⚠️ Beta SoftwareJourniv 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.
Give Journiv a quick try with one docker command.
Note
This docker run command starts a minimal version of Journiv. It lack components needed for various features of Journiv like import/export etc. For a complete docker compose file use this.
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:latestAccess 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.
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.
Want to just try a demo? (Thanks to JasonFieldz for hosting a demo instance).
- Username: [email protected]
- Password: Demo1234
Read the docs to learn more about Journiv and configuring it.
Contributions are welcome! Please see CONTRIBUTING.md and LICENSE for guidelines.
This project is licensed under the terms specified in the LICENSE file.
Need help or want to report an issue?
- GitHub Issues: Report bugs or request features
- Discussions: Ask questions and share ideas
- Email: [email protected]
- Discord: Join our community server
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.