Skip to content

Repository files navigation

📈 CoChart — Collaborative Financial Charting Platform

TypeScript Next.js React TailwindCSS WebSocket License: MIT

Open-source, real-time collaborative market charting — open a chart, draw, and share a link. No signup, no walls.

Project status: early-stage and actively developed (pre-1.0). Contributions and feedback welcome.

What is CoChart?

CoChart is an open-source, Excalidraw-style tool for markets: open a chart and start drawing instantly — no account required — then share a link and everyone in the room sees the same candlesticks, drawings, and cursors update live.

You're anonymous by default and nothing gets in your way before the first drawing. The core is free and open forever; cloud saving is a planned, optional way to support the project — never a gate on what CoChart already does.

Features

  • Free & open source (MIT) — self-host it, fork it, or just use it; the core has no paywalls.
  • No signup — anonymous by default. Start drawing instantly and invite others with a link.
  • Live & historical candlesticks — OHLCV data streamed and backfilled from public exchange APIs — Coinbase, Kraken, and Binance — with no API keys required.
  • Drawing tools — trendlines, rays, horizontal & vertical lines, rectangles, triangles, Fibonacci retracements, and text labels, with draggable control points, copy/paste, a right-click context menu, keyboard shortcuts, and a drawing manager.
  • Technical indicators — moving averages (SMA/EMA), VWAP, RSI, MACD, and volume, each configurable and synced live across the room.
  • Real-time collaboration — WebSocket-backed rooms sync chart state, drawings, indicators, peer cursors, live presence, and in-room chat. Rooms survive brief disconnects and server restarts (a short grace period plus server-side persistence) and are cleaned up automatically after everyone leaves.
  • Persistence — your own chart and settings are saved locally in your browser (IndexedDB); shared rooms are persisted server-side (SQLite) so they survive reconnects and restarts, then reaped after inactivity. Opt-in cloud accounts for a durable personal library are planned.

Getting Started

Requirements: Node.js ≥ 20 and npm.

npm install
npm run dev

Then open http://localhost:3000. No API keys or secrets are needed — CoChart uses public exchange endpoints (Coinbase, Kraken, Binance) for market data.

On first run the server creates a small SQLite file for collaborative-room persistence at ./data/rooms.db (override with ROOM_DB_PATH). It's git-ignored, and no external database is required.

Scripts

Command Description
npm run dev Start the dev server (Next.js + WebSocket) on :3000
npm run build Production build
npm run start Run the production server
npm run lint Lint the codebase

Tech Stack

  • Framework: Next.js 16, React 19, TypeScript
  • Styling: Tailwind CSS 4, Radix UI
  • State: Zustand + Immer
  • Realtime: Custom Node HTTP + WebSocket server (server.ts, ws)
  • Market data: public REST + WebSocket feeds from Coinbase, Kraken, and Binance (no API keys)
  • Persistence: SQLite (better-sqlite3) for collaborative-room state; IndexedDB + localStorage in the browser for local chart/settings
  • Charts: cochart-charts — a fork of TradingView Lightweight Charts™ (see Credits)

Project Layout

├── server.ts              # Custom HTTP + WebSocket server (entry point)
├── next.config.ts         # Next.js config
└── src/
    ├── app/               # Next.js routes (/, /chart, /chart/room/:id)
    ├── components/        # UI (chart, onboarding, ui primitives)
    ├── core/              # Non-React chart logic (drawings, market data)
    ├── server/            # Backend handlers (market/, collab/)
    ├── stores/            # Zustand stores
    └── lib/               # Utilities (IndexedDB, identity, localStorage)

See docs/ for an architecture overview.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md and our Code of Conduct before opening a pull request. Planned work lives in ROADMAP.md.

License

MIT © 2026 0men1 — see LICENSE.

Credits

Charting is powered by cochart-charts, a fork of TradingView Lightweight Charts™ (Apache-2.0). See THIRD_PARTY_NOTICES.md for full attribution.

About

Collaborative charting app

Resources

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages