Skip to content

Latest commit

 

History

569 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TraderMemos

TraderMemos

Own your data. Review your edge.

A self-hosted trading journal for traders who want their performance data on their own infrastructure — dashboard, P&L calendar, trade log, playbook, reports, alerts, and a bar-replay backtester, with a native iOS & Android companion app. No subscription, no vendor lock-in.


Release Web CI License: AGPL v3

Go React SQLite Self-hosted


Deploy with Vercel Deploy to Cloudflare Deploy to Netlify Deploy on Railway


Quick start · Mobile app · Docs site · Fork guide · Contributing · Design · License


TraderMemos dashboard — equity curve, annual P&L goal, expectancy and win-rate stats

A look inside

Trade log with per-trade P&L, hold time, and tags

Trade log
Every fill grouped into trades — filter, sort, tag, and drill into execution detail.

P&L calendar heatmap by day and week

P&L calendar
Daily heatmap with weekly totals. Spot the streaks and the bad days at a glance.

Reports — equity curve, profit factor gauge, win-rate donut, annual goal pacing

Reports
Equity curve, profit factor, expectancy, and goal pacing — plus Monte Carlo, MAE/MFE, and breakdowns by setup, hour, and session, saved as reusable view presets.

The same dashboard rendered in the light theme

Light theme
Dark by default; both themes ship from the same token set.

The native mobile app's home screen — equity curve, net P&L, and win/loss stats

Mobile app (beta)
Native iOS & Android companion — same journal, same server.

Screenshots show a generated demo dataset, not real trading results. Reproduce it by importing docs/demo/tradermemos-demo-trades.json.


Live demo

Try TraderMemos without installing anything: tradermemos.netlify.app

Sign in with tradermemosdemo / demopassword. The demo account carries a seeded dataset — treat it as a shared sandbox, and don't store anything real in it.

If TraderMemos is part of your daily review, consider sponsoring its development — it keeps the project free and self-hosted for everyone.


Why TraderMemos?

Cloud journals like TradeZella and TraderSync are polished — but your edge lives in the data.

TraderMemos brings to performance review what Ghost did for publishing, Umami for analytics, and Plane for project tracking: run it on your infrastructure, own the database, extend it without asking permission. The interaction bar is set by Linear and Cal.com — applied to a trading terminal.

Cloud journals TraderMemos
Data ownership Vendor-hosted Your SQLite / Postgres, your VPS
Cost Monthly subscription Free + your hosting
AI keys Often vendor-managed Your OpenAI-compatible API
Customization Limited Fork, patch, deploy

Features

Feature What it does
📊  Home Equity curve, expectancy, streaks, hold times, and annual goal pacing — per account or across a multi-account portfolio
📒  Trade log Fills grouped into trades — filter, sort, tag, and drill into execution detail with MAE/MFE excursion charts
🗓  P&L calendar Daily heatmap with weekly totals and day-detail drill-down
📈  Reports Expectancy, SQN, Kelly %, MAE/MFE, Monte Carlo, execution quality — by setup, hour, and session, saved as view presets
📖  Playbook Strategy library linked to the trades that used each setup, with rule-compliance scoring
📥  Import 9 broker CSV presets, MT4/MT5 statements, and IBKR Flex sync
🔔  Alerts Risk rules, daily loss limits, and prop-drawdown warnings — push and webhook, from your own server
⏪  Bar replay Backtest any symbol bar by bar against a persistent paper account — analyzed by the same reports
🔗  Sharing Revocable read-only performance links, share cards, and a Year Wrapped recap
🧮  Tools Position-size / FX / Kelly calculators, advanced chart, economic calendar, cash ledger
🤖  AI (optional) Screenshot fill extraction + trade coach via OpenAI-compatible APIs — your keys
🔌  API access Personal access tokens (tm_pat_…) for MCP/scripts; OpenAPI docs at /docs
📱  Mobile app iOS & Android companion (Expo) — offline journaling on both; widgets, Live Activities, and Siri / Action Button capture on iOS. App Store (iOS) · APK on Releases (Android)
🌗  Themes Dark and light, built on shadcn/ui + coss ui tokens

Tech stack

Layer Stack
API Go · Echo · sqlc · golang-migrate · SQLite / Postgres
Web React · Vite+ · TanStack Router/Query/Form · Tailwind
Mobile Expo (iOS & Android) · PanelUI + Uniwind (Tailwind) · iOS extras: WidgetKit / Live Activities / App Intents
Design shadcn/ui + coss ui tokens — see DESIGN.md

Quick start

Web UI and API in one container, on your own machine:

git clone https://github.com/sinhong2011/TraderMemos.git
cd TraderMemos
make up          # → http://localhost:3000

That's it. Same-origin /api — no CORS, leave the Server field blank. On first visit the setup wizard creates your owner account.

Options and production notes
cp .env.example .env   # optional: DOCKERHUB_USERNAME, TM_IMAGE_TAG
make up                # pull prebuilt images from Docker Hub
make up-build          # or build both images from this repo

For production, set TM_JWT_SECRET=$(openssl rand -hex 32) and put TLS (Caddy/Traefik) in front — see docs/deploy.md.

Prefer Postgres over the default SQLite? make up-postgres runs the same stack with a Postgres overlay.

Deploy to the cloud

Prefer a hosted SPA with the API elsewhere? The buttons at the top split the app across two hosts:

Button Deploys
Vercel / Cloudflare / Netlify Web SPA (web/)
Railway Go API (railway.toml → api/Dockerfile) — attach a Volume at /data

1. Deploy the web UI — click a button above; it hosts the SPA on your account.

2. Run the API — use the Railway button, or point it at any host running api/Dockerfile.

3. Connect them — allow your CDN origin on the API:

TM_CORS_ORIGINS=https://*.vercel.app,https://*.pages.dev,https://*.workers.dev,https://*.netlify.app,https://*.up.railway.app,http://localhost:5173

Then open the web app and set Server to your API URL (or bake it in with VITE_API at build time).

Already forked? Import your fork → Root web (Vercel/CF) or netlify.toml / railway.toml. Details: docs/fork-deploy.md.

Mobile app

The companion app (beta) journals against your own server — enter your instance URL at login, same as the web app's Server field.

  • iOS — download TraderMemos on the App Store.
  • Android — download TraderMemos-<version>.apk from the latest release and sideload it (allow Install unknown apps for your browser or file manager; a .sha256 file ships next to the APK for verification). There is no Play Store listing.

Building it yourself instead: see mobile/README.md.

Development

git clone https://github.com/sinhong2011/TraderMemos.git
cd TraderMemos
make setup && make dev   # API :8080 + web :5173

See CONTRIBUTING.md for targets, Vite+ commands, and project structure.

Demo data

Fill any instance with ~200 generated trades over the last three months:

make demo-seed API=http://localhost:3000/api/v1 EMAIL=you@example.com PASSWORD='…'

It talks to the public API only, so it works against a local stack or a deployed demo. Re-running is a no-op — fills are deduplicated server-side.

For the exact book in the screenshots above — 172 trades across 13 months, with notes, setups and mistake tags — import docs/demo/tradermemos-demo-trades.json instead, either from Import in the web app or with the CLI:

tradermemos import --account <account-id> --file docs/demo/tradermemos-demo-trades.json

Docs

User docs live on the docs site: trader-memos.vercel.app — getting started, importing trades, supported brokers, self-hosting guides, FAQ, and the full API reference.

Doc Topic
docs/fork-deploy.md One-click / fork → Vercel, Cloudflare, Netlify, Railway
docs/deploy.md Docker, CORS, edge rewrite
docs/release.md Versioning, changelogs, GitHub Releases
CONTRIBUTING.md Local dev (make dev)
DESIGN.md UI system — shadcn/ui + coss ui tokens

Star history

License

AGPL-3.0. Self-host it, modify it, and run it for yourself or your firm freely. If you run a modified version as a network service for others, you have to publish those changes.