Fast entry first
Three paths in — paste, screenshot OCR or broker import — with an editable preview before anything is saved.
Your trading journal, finally automated.
Copy-paste, screenshot OCR, or a broker history file — then let the analytics show you where your edge actually is.
3 modes
Paste, OCR, file import
4+
Broker platforms detected
In-browser
OCR with no API key
Recharts
Outcome-aware analytics
JournalEdge removes the friction between a trade and the record of it. Paste a row, drop a chart or import a broker file; the app fills the fields, derives the outcome and turns the history into analytics a trader can learn from.
Three paths in — paste, screenshot OCR or broker import — with an editable preview before anything is saved.
Outcome badges, filters and charts are built from the entries actually made, so the review reflects the trader's own decisions.
tRPC and shared Zod schemas keep the client and API honest, and the journal stays a tool rather than a data business.
The decisions, trade-offs, and details that make JournalEdge worth your time.
Three ways in: copy-paste, screenshot OCR, or a full broker history file
Auto-detects platform and columns, then previews every row before anything is saved
Profit / loss / breakeven / open outcomes derived automatically and filterable
Type-safe end to end with tRPC and shared Zod schemas
Journaling fails when entry is slow. JournalEdge makes capturing a trade as easy as pasting a row or dropping a screenshot — and makes reviewing it genuinely useful.
Paste tab- or comma-separated rows straight from TradingView or MT4. Headers are detected, columns auto-mapped (Symbol → symbol, Entry → entry_price), and you review an editable preview before anything is saved.
Paste (Ctrl+V) or drag-drop a chart screenshot. Tesseract.js runs entirely in the browser — no external API key — extracting entry, SL, TP and symbol, and detecting long vs short from green/red dominance.
Drop MT4/MT5 statements (.csv/.tsv/.txt/.xls/.xlsx/.ods/.html), cTrader or generic exports up to 15 MB. MT5 deal ledgers with In/Out directions are rebuilt into closed positions FIFO.
Header-signature scoring with confidence, MT4 duplicate Price/Time disambiguation, Buy/Sell ↔ Long/Short coercion, currency and thousands separators, MT4 dot-dates, Excel serial dates, skipped title rows, and deposits filtered out.
Every trade gets a Profit / Loss / Breakeven / Open badge derived from exit vs entry and direction, or from an explicit P&L. Filter by outcome and see counts at a glance.
Recharts dashboards show performance over time, with Total and Average P&L cards whenever P&L data exists — so you can compare setups and sessions instead of guessing.
Nothing is written to the database until you review the parsed rows. Preview grids are editable, and imports are saved in 500-row chunks.
JWT + bcrypt auth, type-safe tRPC contracts, Drizzle migrations, GitHub Actions builds and tests, CodeQL analysis and Dependabot updates.
One docker compose up starts PostgreSQL; pnpm dev runs backend and frontend in parallel — frontend on :5173, backend on :4000.
The workflow mirrors how traders actually work: grab trades as they happen, clean them up later, and review the aggregate.
Paste a row, drop a screenshot, or import history. Platform and columns are detected automatically.
Edit the parsed preview grid. Every field is editable and nothing is saved until you confirm.
Filter by symbol, outcome or date. Outcome badges and P&L totals keep the picture honest.
Charts and metric cards surface where you perform — by setup, by period, by outcome.
Paste rows ──┐
Screenshot ──┼──▶ Parser / OCR (browser) ──▶ Editable preview ──▶ tRPC trades.importRows
Broker file ─┘ (Tesseract.js) │ │
│ nothing saved ▼
└── until confirmed PostgreSQL + Drizzle
│
Journal + Analytics (Recharts)A pnpm monorepo with shared Zod schemas keeping the React frontend and Express/tRPC backend in lockstep.
Licensed under MIT.
JournalEdge is MIT-licensed and developed in public. Feedback, issues, and contributions are genuinely welcome.