A minimalist web-based bullet journal for rapid, distraction-free logging.
Jotly is a privacy-focused web application designed for practitioners of the Bullet Journal method. It prioritizes speed and simplicity, offering a digital space that mimics the "pencil and paper" experience without the friction of complex note-taking apps.
- Email-Only Account System: Simplified registration using only your email address.
- OTP Verification: Secure account activation using 6-digit codes sent via email.
- Multi-Scale Logs: Easily manage Daily, Weekly, Monthly, and Yearly logs.
- Pencil-and-Paper Aesthetic: A custom, hand-drawn UI style built for focus.
- Secure by Design: Built-in CAPTCHA, encrypted passwords, and CSRF protection.
- Language: Python 3.10+
- Framework: Django 5.0
- Database: SQLite (Default)
- Other: Gunicorn, Nginx, Bootstrap 5
- Python >= 3.10
- pip (Python package manager)
git clone https://github.com/YuunJiee/web-bullet-journal.git
cd web-bullet-journal
pip install -r requirements.txtCreate a .env file in the root directory:
SECRET_KEY=your_django_secret_key
DEBUG=False
ALLOWED_HOSTS=jotly.yuunjiee.com,localhost,127.0.0.1
CSRF_TRUSTED_ORIGINS=https://jotly.yuunjiee.compython manage.py runserverweb-bullet-journal/
├── journal/ # Core application logic (models, views, forms)
├── bullet_journal/ # Project configuration and settings
├── deployment/ # Production configs (Nginx, Systemd, deploy script)
├── templates/ # HTML templates with minimalist UI
├── static/ # CSS, JS, and hand-drawn assets
├── .env.example # Environment variable template
├── requirements.txt # Project dependencies
└── README.md # This file
After logging in, you can quickly add entries using the "Add Entry" button or navigate between different time scales (Daily/Weekly/Monthly) via the sidebar.
# To create a custom log entry via Django shell
from journal.models import Log, BulletJournalKey
Log.objects.create(user=user, title="My First Goal", content="Log content...", key=key)Pull requests are welcome. For major changes, please open an issue first to discuss what you'd like to change.