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.
Quick start · Mobile app · Docs site · Fork guide · Contributing · Design · License
Trade log |
P&L calendar |
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.
Light theme |
Mobile app (beta) |
Screenshots show a generated demo dataset, not real trading results. Reproduce it by importing docs/demo/tradermemos-demo-trades.json.
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.
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 |
| 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 |
| 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 |
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:3000That'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 repoFor 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.
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:5173Then 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.
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>.apkfrom the latest release and sideload it (allow Install unknown apps for your browser or file manager; a.sha256file ships next to the APK for verification). There is no Play Store listing.
Building it yourself instead: see mobile/README.md.
git clone https://github.com/sinhong2011/TraderMemos.git
cd TraderMemos
make setup && make dev # API :8080 + web :5173See CONTRIBUTING.md for targets, Vite+ commands, and project structure.
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.jsonUser 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 |
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.




