Vela README

The project's README from github.com/LuxAlgo/Vela. As one markdown file: README.md.

Vela™ by LuxAlgo

Vela™

Fast, extensible financial charts for the web.
Headless core · native WebGL2 renderer · batteries-included workspace · plugin SDK

npm version Downloads License

Homepage · Quick start · Documentation · Plugin SDK · Changelog · License

Vela™ renders interactive financial charts with its own native renderer (WebGL2, with a canvas2d fallback) and keeps the chart itself headless: drive it entirely from code, or drop in the workspace for a complete chart app in one call. Every layer (data providers, scripting engines, renderers) plugs in behind a public port and can be swapped without touching the rest.

What's in the box

Vela package layout

Installing

npm install @luxalgo/vela

Quick start

The fastest path is the workspace, a complete chart app in one call:

import { VelaWorkspace } from '@luxalgo/vela/workspace';
import { BinanceProvider } from '@luxalgo/vela/providers/binance';

const chart = new VelaWorkspace('#chart', {
    layout: false, // one chart; '2h' | '4' | '8' | … for a multi-chart grid
    symbol: 'BTCUSDT',
    timeframe: '60',
    live: true,
    theme: 'dark',
    providers: { binance: () => new BinanceProvider() },
    persist: true, // restore market, style, timezone, drawings and indicators from localStorage
});

Prefer full control? Use the headless core directly:

import { Vela } from '@luxalgo/vela';
import { BinanceProvider } from '@luxalgo/vela/providers/binance';

const chart = new Vela('#chart', { symbol: 'binance:BTCUSDT', timeframe: '60', live: true });
chart.data.registerProvider('binance', new BinanceProvider());
await chart.ready();

No provider, no network? Pass your own bars via the data option. See the quickstart.

Browser bundle

The package also ships self-contained browser builds for script-tag usage: dist/vela.global.js (readable, development) and dist/vela.global.min.js (minified, production). Either file attaches the library's public API, including the bundled providers, to window.Vela.

Indicators

Vela™ ships 70+ built-in studies — moving averages, bands and channels, momentum oscillators, trend and volatility measures, volume studies, and price-anchored overlays such as VWAP, SuperTrend, and Pivot Points. They compute from the chart's own bars (no scripting engine), and each one gets a legend row, a settings dialog, and persistence across reloads. Volume and the visible-range volume profile sit alongside them.

Custom scripts still run through pluggable engines. Vela™ ships none: install the addon for the language you want, or write one against the public ScriptingEngine port. Pine Script® lives in @luxalgo/vela-pinets (npm i @luxalgo/vela-pinets pinets), which is AGPL-3.0 because the PineTS runtime it executes is. Vela™ itself stays Apache-2.0 and carries no Pine code:

import { PineEngine } from '@luxalgo/vela-pinets';

chart.registerEngine('pine', new PineEngine());
chart.addIndicator(`//@version=6
indicator("EMA 20", overlay=true)
plot(ta.ema(close, 20), color=color.orange, linewidth=2)`);

Host tooling can execute-and-inject safely with chart.runIndicator(source) (structured errors, no dead legend rows) and read a running script's state, including its return value, via handle.context() (read-only snapshots, worker-safe). See the API reference, and Scripting engines for the addon and for writing your own.

The workspace takes an indicator manifest: inline JSON, a URL returning it, or an async loader (() => Promise<manifest>):

new VelaWorkspace('#chart', {
    // …
    engines: { pine: () => new PineEngine() },
    indicators: '/indicators.json', // or an inline [{ name, script | url, language?, enabled? }]
});

Extending (plugin SDK)

Custom chart types and canvas layers register through the public SDK, no fork needed:

import { registerChartType, registerRendererLayer } from '@luxalgo/vela/plugin';

// A new price style: bar transform + optional per-bar data engine + ticker modifier.
registerChartType({
    id: 'renko-like',
    label: 'Renko-like',
    barTransform: { full: (bars) => transformAll(bars), next: (bar) => transformOne(bar) },
});

// A custom canvas layer, painted every frame with the chart (its id = its data channel).
registerRendererLayer({
    id: 'renko-like',
    placement: 'above-data',
    create: () => ({ mount(canvas) {/* keep it */}, render({ bars, data, coords, scale, bounds }) {/* paint */} }),
});

A registered chart type automatically appears in the workspace's style dropdown, and a chart type's dataEngine pushes to its layer's channel with zero extra wiring. See docs/contributing/plugin-sdk.md.

Documentation

Full documentation lives in docs/: user guides (quickstart, the workspace, options, API reference), architecture, and contributing guides including the plugin SDK.

Development

npm install
npm run playground   # vite playground on http://localhost:5190
npm test             # vitest
npm run build        # tsup → dist/

License and attribution

Vela™ is licensed under the Apache License, Version 2.0 (see LICENSE). The NOTICE file adds an attribution requirement, and redistributions must include it per Apache-2.0 §4(d):

This is the same licensing model used by other popular charting libraries, and we're grateful when the watermark stays in a visible spot.

No scripting engine ships with this package; the Pine Script® addon (@luxalgo/vela-pinets) is AGPL-3.0 and licensed separately (see Indicators).

Vela (LuxAlgo/Vela)

Searching Database…

1.2K ·GitHub
Что это?Vela — бесплатная open-source библиотека для построения быстрых финансовых графиков в браузере, построенная вокруг headless-ядра с нативным WebGL2-рендерером (fallback на canvas2d) и plugin SDK для подстановки своих данных, скриптовых движков и рендереров.
Это библиотека или полноценное приложение с графиками?Она модульная: @luxalgo/vela — headless-ядро графиков, которым вы управляете из кода, @luxalgo/vela/workspace — готовое полнофункциональное приложение с графиками (один вызов), @luxalgo/vela/ui — набор компонентов, а @luxalgo/vela/plugin — SDK расширений.
Как добавить её в проект?Установите npm-пакет и либо вызовите workspace для полного графичного приложения одной строкой, либо управляйте headless-ядром напрямую. Также поставляется самодостаточный браузерный бандл (dist/vela.global.js) для использования через script-тег без этапа сборки.
Нужен ли провайдер рыночных данных, чтобы ею пользоваться?Не обязательно — Vela поставляется с готовыми к регистрации провайдерами Binance, Coinbase и Hyperliquid, но можно обойтись без них всех и подавать свои OHLC-бары, работая полностью офлайн.
Поддерживает ли она Pine Script из коробки?Нет — Vela поставляется вообще без скриптовых движков. Поддержка Pine Script приходит из отдельного аддона @luxalgo/vela-pinets, который распространяется под AGPL-3.0 (в отличие от собственного ядра Vela под Apache-2.0), потому что использует AGPL-лицензированный рантайм PineTS.
В чём подвох лицензии Apache-2.0?Каждый график по умолчанию показывает небольшой водяной знак атрибуции VelaTM, а файл NOTICE требует отключать его только при наличии эквивалентной видимой ссылки «VelaTM» в другом месте той же страницы.
Какие индикаторы встроены?Более 70 встроенных исследований — скользящие средние, полосы и каналы, осцилляторы момента, меры тренда и волатильности, объёмные индикаторы и оверлеи вроде VWAP, SuperTrend и Pivot Points — каждый со строкой в легенде, диалогом настроек и сохранением состояния.
Можно добавить свои типы графиков или слои рендеринга?Да, plugin SDK позволяет регистрировать свои типы графиков и слои canvas-рендерера без форка проекта; зарегистрированный тип графика автоматически появляется в выпадающем списке стилей workspace.
Что входит в готовое workspace-приложение?Полный UI графиков с верхней панелью symbol/timeframe/style/indicator, строкой статуса, нижней панелью (диапазоны, часы, часовой пояс), деревом объектов, горячими клавишами, именованными ячейками, группами синхронизации и одним сохраняемым состоянием раскладки — всё настраивается одним вызовом.
Какие провайдеры данных есть из коробки?Провайдеры Binance, Coinbase и Hyperliquid готовы к регистрации, либо можно подключить собственный источник данных.
Creator
LuxAlgo
Size
6.6 MB
Stars
1.2K
Updated
CommitOct 19
Age
3mo
Commits · 90 Days