A local, privacy-focused trading journal for crypto futures trading — Bitunix and Bitget. No cloud, no accounts, no subscriptions. Run it on your machine or in Docker.
Hinweis: Die Benutzeroberfläche ist komplett auf Deutsch (optional Englisch).
- P&L Overview — total profit/loss, win rate, profit factor, ROI%, equity curve
- Account Balance — auto-calculated from start deposit + trade P&L, or fetched via exchange API
- Performance Heatmap — weekday × hour grid showing when you win and lose
- Trade-Type Statistics — Scalp / Day Trade / Swing profitability comparison
- Strategy-Tag Statistics — per-strategy P&L and win rate analysis
- Fees Chart — per-symbol breakdown of trading vs funding fees
- Trading Volume — 30-day and lifetime volume tracking
- Card Visibility Toggle — show/hide individual dashboard cards
- Calendar Heatmap — visual overview of daily P&L across months
- Daily Summary — per-day performance with candlestick charts (OHLCV)
- Trade Blotter — all fills and executions, grouped by minute with expandable details
- Screenshot Thumbnails — inline previews of attached screenshots
- Trade Evaluation — tags, stress level (1–10), emotion level (1–10), notes
- Rich Text Notes — Quill editor for detailed trade analysis
- Screenshots — entry, exit, and trend screenshots with annotation support (MarkerJS2)
- Fill History — minute-grouped executions with closing/partial/entry badges
- SL/TP Protocol — stop loss and take profit tracking with quantity display
- Auto Trade-Type Detection — automatic Scalp/Day/Swing classification based on duration
- Strategy Analysis — performance per strategy tag group
- Satisfaction Rate — trading satisfaction/confidence gauge
- Journal Completeness Radar — tracks which fields are filled vs empty
- Stress & Emotion Charts — over time, correlated with win rate
- Long/Short Ratio — distribution analysis
- Live Position Monitoring — real-time fetch via broker API with auto-polling
- AI Trade Ratings — automatic opening and closing evaluations
- Strategy Adherence — "Did I follow my plan?" evaluation at trade closure
- Trade Transfer — convert closed position to trade with full metadata transfer
- AI-Generated Trade Cards — shareable images for social media
- Image Providers — FLUX.2 (Black Forest Labs) or Google Gemini
- Customizable Prompt — describe the background you want, AI generates it
- 14 Built-in Templates — categorized by direction (long/short) and outcome (win/loss)
- Template Library — save your own templates from AI generations
- Overlay Data — symbol, direction, leverage, P&L, entry/exit, strategy tags, RRR, comment
- Privacy Option — hide P&L dollar amounts, show only percentage
- Multiple Providers — Ollama (local), OpenAI, Anthropic, Google Gemini, DeepSeek
- Report Generation — monthly, weekly, custom date range with preset templates
- Trade Review Chat — per-trade AI follow-up questions in Daily view
- Screenshot Analysis — include chart images in AI analysis
- Token Statistics — track usage and estimated costs per provider
- Global AI Toggle — enable/disable all AI features at once
- Bitunix — CSV export + API integration (positions, balance, trades)
- Bitget — CSV + API integration (positions, balance, fills)
- Encrypted API Keys — AES-256-GCM encryption at rest
- Auto-Deduplication — prevents duplicate trade entries on re-import
- JSON Backup/Restore — full database export/import with sensitive data masking
- Auto-Update — checks GitHub on startup, one-click update from the sidebar
- Rollback — revert to previous version if needed
- First-Run Setup — guided initial configuration wizard
- Multi-Language — German (default) and English
| Layer | Technology |
|---|---|
| Frontend | Vue 3 (Composition API), Vue Router, ECharts, Bootstrap (dark theme) |
| Backend | Express.js, Knex.js |
| Database | SQLite (default) or PostgreSQL (optional) |
| Rich Text | Quill |
| Annotations | MarkerJS2 |
| CSV | PapaParse |
| Dates | Day.js |
| AI Image | FLUX.2, Google Gemini |
- Node.js 20+ (LTS recommended)
- Git (required for installation and auto-updates)
- Python 3 + Build Tools (for native npm modules)
git clone https://github.com/Mouses007/Crypto-Trading-Journal.git
cd Crypto-Trading-Journal
chmod +x install.sh
./install.sh
npm startOr manually:
npm install
npm run build
npm startmacOS: Double-click
install-mac.command,start-mac.command,update-mac.command. Install build tools withxcode-select --install.
- Download or clone this repository
- Double-click
install.bat— checks all prerequisites: - Double-click
start.bat— starts the server and opens the browser
Open http://localhost:8080 in your browser.
- Docker and Docker Compose
git clone https://github.com/Mouses007/Crypto-Trading-Journal.git
cd Crypto-Trading-Journal
cp .env.example .envEdit .env with your database credentials:
CTJ_PORT=8080
CTJ_SECRET= # optional: openssl rand -hex 32 (for shared encryption across instances)
DB_TYPE=postgresql
DB_HOST=192.168.178.100
DB_PORT=5432
DB_USER=tradejournal
DB_PASSWORD=your_password
DB_NAME=tradejournaldocker compose up -dOpen http://localhost:8080 in your browser.
docker compose up -d # Start
docker compose down # Stop
docker compose logs -f journal # Logs
docker compose ps # StatusBuild and export the image on your development machine, then import it on the NAS:
docker compose build
docker save journal-journal:latest | gzip > journal-image.tar.gzCopy journal-image.tar.gz and a compose file (without build:) to your NAS, import the image, and create a project in Container Manager. See DOCKER.md for details.
Your database is preserved during every update. Git is required for all update methods.
When a new version is available, an update button appears in the sidebar (green, between version number and donate link). Click it to automatically fetch, install, rebuild, and restart.
git fetch origin master
git reset --hard origin/master
npm install
npm run build
npm startgit pull
docker compose up -d --buildDouble-click update.bat — creates a backup and updates automatically.
Default: port 8080, bound to 127.0.0.1 (local only).
CTJ_PORT=3000 npm start # Different port
CTJ_HOST=0.0.0.0 npm start # Network accessSQLite (default): No configuration needed. Database file tradenote.db in project root.
PostgreSQL: Create a db-config.json in the project root:
{
"client": "pg",
"host": "localhost",
"port": 5432,
"database": "cryptojournal",
"user": "youruser",
"password": "yourpassword"
}For Docker, configure via .env instead (see Installation > Docker).
By default, API keys are encrypted with a machine-specific seed. If you run multiple instances (e.g., local + Docker) sharing the same database, set CTJ_SECRET so all instances use the same encryption key:
# Generate a secret
openssl rand -hex 32
# Set it as environment variable
export CTJ_SECRET=your_generated_secret
# Or add to .env (for Docker and server_neustart.sh)
CTJ_SECRET=your_generated_secretImportant: After setting CTJ_SECRET for the first time, re-enter your broker API keys in Settings — the old keys were encrypted with the previous machine seed.
npm run devStarts the Vite dev server with Hot Module Replacement on port 39482, proxied through the Express backend on port 8080.
- Go to Einstellungen (Settings) and configure your broker API Key + Secret
- Import trades via CSV upload or API fetch
- Evaluate your trades in Playbook — add tags, stress/emotion levels, notes
- Review your performance in Dashboard and Auswertung
- Use the KI-Agent for AI-powered trade analysis
- Generate Share Cards to share your trades on social media
Based on TradeNote by eleven.trading, substantially modified:
- Replaced MongoDB/Parse Server with SQLite/PostgreSQL (Knex)
- Removed cloud auth, payments, analytics; simplified to single-user
- Multi-broker support (Bitunix + Bitget) with encrypted API key storage
- Added: KI-Agent, Share Cards, Incoming Positions, Performance Heatmap, Trade-Type Statistics, Backup/Restore, Auto-Update, Docker support, and more
GPL-3.0 — see LICENSE file.


