for tradersSept 2026 - Present

JournalEdge

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 — project cover

Why it stands out

The decisions, trade-offs, and details that make JournalEdge worth your time.

01

Three ways in: copy-paste, screenshot OCR, or a full broker history file

02

Auto-detects platform and columns, then previews every row before anything is saved

03

Profit / loss / breakeven / open outcomes derived automatically and filterable

04

Type-safe end to end with tRPC and shared Zod schemas

Every trade in, every insight out

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.

Copy-paste import

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.

Screenshot OCR

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.

Broker history import

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.

Smart parsing

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.

Outcome engine

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.

Analytics that answer questions

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.

Safety before saving

Nothing is written to the database until you review the parsed rows. Preview grids are editable, and imports are saved in 500-row chunks.

Production hygiene

JWT + bcrypt auth, type-safe tRPC contracts, Drizzle migrations, GitHub Actions builds and tests, CodeQL analysis and Dependabot updates.

Local-first dev loop

One docker compose up starts PostgreSQL; pnpm dev runs backend and frontend in parallel — frontend on :5173, backend on :4000.

Capture → review → analyze

The workflow mirrors how traders actually work: grab trades as they happen, clean them up later, and review the aggregate.

01

Capture

Paste a row, drop a screenshot, or import history. Platform and columns are detected automatically.

02

Review

Edit the parsed preview grid. Every field is editable and nothing is saved until you confirm.

03

Journal

Filter by symbol, outcome or date. Outcome badges and P&L totals keep the picture honest.

04

Analyze

Charts and metric cards surface where you perform — by setup, by period, by outcome.

Import pipeline

Paste rows ──┐
Screenshot ──┼──▶ Parser / OCR (browser) ──▶ Editable preview ──▶ tRPC trades.importRows
Broker file ─┘        (Tesseract.js)             │                      │
                                                 │  nothing saved       ▼
                                                 └── until confirmed  PostgreSQL + Drizzle
                                                                        │
                                                          Journal + Analytics (Recharts)

Tech stack

A pnpm monorepo with shared Zod schemas keeping the React frontend and Express/tRPC backend in lockstep.

ReactTypeScripttRPCDrizzle ORMPostgreSQLTesseract.jsRechartsVite

Licensed under MIT.

Repositorygithub.com/Pranesh-Selvaraj/JournalEdge
LicenseMIT
FrontendVite + React + TypeScript + TailwindCSS
BackendNode.js 20 LTS + Express + tRPC
DatabasePostgreSQL + Drizzle ORM
OCRTesseract.js — browser-based, no API key
ChartsRecharts
AuthJWT + bcrypt
TypesShared Zod schemas in packages/shared-types
ImportsMetaTrader 4/5, cTrader, TradingView, generic CSV/TSV/XLS(X)/ODS/HTML
CI/CDGitHub Actions (build + test), CodeQL, Dependabot
Toolingpnpm workspaces + docker-compose for local PostgreSQL

Built in the open. Star it, try it, break it.

JournalEdge is MIT-licensed and developed in public. Feedback, issues, and contributions are genuinely welcome.