A free, open source trading journal for tracking, analyzing, and improving your trading performance.
TradeDiary is an open source trading journal application designed to help traders of all levels document their trades, analyze patterns in their decision-making, and continuously improve their strategy. Whether you trade stocks, forex, crypto, or futures, TradeDiary gives you a structured way to record entries, exits, and the reasoning behind every trade — then surfaces the data you need to grow.
- Trade Logging — Record entries, exits, position size, instrument, and personal notes for every trade.
- Performance Analytics — Visualize win rate, profit factor, average R:R, drawdown, and equity curves over time.
- Tag & Strategy Tracking — Label trades by strategy, session, or market condition and filter analytics by tag.
- Risk Management Tools — Track risk per trade, daily loss limits, and portfolio exposure at a glance.
- Trade Review Workflow — Attach screenshots and post-trade notes to build a structured review habit.
- Import / Export — Import trades from broker CSV exports; export your journal data at any time.
- No Lock-in — Your data stays yours. SQLite by default; configurable for other databases.
To be finalized as the project evolves. Suggestions welcome via Discussions.
- Frontend: React / TypeScript
- Backend: Node.js / Express (or equivalent REST/GraphQL API)
- Database: SQLite (default), PostgreSQL (optional)
- Testing: Vitest / Jest, Playwright
# 1. Clone the repository
git clone https://github.com/gabremoku/tradediary.git
cd tradediary
# 2. Install dependencies
npm install
# 3. Copy environment config and adjust as needed
cp config/.env.example .env
# 4. Run database migrations
npm run db:migrate
# 5. Start the development server
npm run devOpen http://localhost:3000 in your browser.
# Unit and integration tests
npm test
# End-to-end tests
npm run test:e2etradediary/
├── src/
│ ├── components/ # Reusable UI components
│ ├── pages/ # Application pages / views
│ ├── services/ # API clients and business logic
│ ├── hooks/ # Custom React hooks
│ ├── types/ # TypeScript type definitions
│ └── utils/ # Shared utility functions
├── tests/
│ ├── unit/ # Unit tests
│ ├── integration/ # Integration tests
│ └── e2e/ # End-to-end tests
├── docs/ # Additional documentation
├── config/ # Configuration templates
└── .github/ # CI workflows, issue & PR templates
We welcome contributions of all kinds — bug reports, feature requests, documentation improvements, and code.
Please read CONTRIBUTING.md before opening a pull request.
Quick steps:
- Fork this repository
- Create a feature branch:
git checkout -b feature/your-feature-name - Commit your changes with clear messages
- Open a pull request against
main
- Core trade logging UI
- Analytics dashboard
- Broker CSV import (Interactive Brokers, TD Ameritrade, Binance)
- Mobile-responsive layout
- REST API with OpenAPI spec
- Docker / self-hosted deployment guide
- Plugin / extension system
See the open issues for the full list.
Distributed under the MIT License. Free to use, modify, and distribute.