@bluemarble/bi 0.7.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,77 +1,77 @@
1
- # bm-bi (`@bluemarble/bi`)
2
-
3
- Camada semântica para dashboards em React, no lugar do Power BI: o modelo (tabelas,
4
- relacionamentos, dimensões e medidas) é um objeto TS (`defineModel`), o servidor compila as
5
- consultas para SQL (MySQL/MariaDB) e os componentes de filtro e gráfico consultam o modelo pelo
6
- nome. Vem com um devtools (diagrama do modelo, editor de layout, playground, regressão).
7
-
8
- ```ts
9
- import { defineModel, formula, sum } from '@bluemarble/bi/server'
10
-
11
- export const vendas = defineModel({
12
- name: 'vendas',
13
- tables: {
14
- pedidos: { key: 'id', sql: 'SELECT id, loja, criado_em FROM pedidos' },
15
- itens: { sql: 'SELECT pedido_id, valor FROM itens' }
16
- },
17
- relationships: [{ from: 'itens.pedido_id', to: 'pedidos.id' }],
18
- dimensions: { loja: { sql: 'pedidos.loja', type: 'string' } },
19
- measures: { valor: sum('itens.valor', { format: 'currency' }) }
20
- })
21
- ```
22
-
23
- | Import | Onde roda |
24
- | ----------------------- | -------------- |
25
- | `@bluemarble/bi/server` | só no servidor |
26
- | `@bluemarble/bi/client` | browser |
27
- | `@bluemarble/bi/types` | ambos |
28
-
29
- ```bash
30
- npm install @bluemarble/bi # peer: react 19, @mui/material 7, recharts 3
31
- ```
32
-
33
- Publicado no npm já compilado (`dist/`, ESM + `.d.ts`), sem precisar de `transpilePackages`.
34
- Conceitos, API, devtools e configuração do app estão em
35
- [`docs/dashboard-substituicao-powerbi.md`](docs/dashboard-substituicao-powerbi.md).
36
-
37
- ## Desenvolvimento
38
-
39
- Projeto Vite+ com bun.
40
-
41
- ```bash
42
- vp install # dependências
43
- vp test # testes (vitest, sem banco)
44
- vp run typecheck # tsc
45
- vp check # formatação (oxfmt) + lint (oxlint)
46
- vp run playground # dashboard + devtools em http://localhost:5180 (precisa do .env)
47
- ```
48
-
49
- ### Playground
50
-
51
- `playground/` é uma página Vite com o dashboard e o devtools ligados direto ao `src/` (sem passar
52
- pelo app). O endpoint `/api/dashboard/query` roda no próprio servidor do Vite e consulta o MySQL do
53
- `DATABASE_URL` do `.env` na raiz (modelo em `.env.example`; o `.env` não é versionado).
54
-
55
- - `playground/models/` — modelos (`defineModel`), registrados em `models/index.ts`;
56
- - `playground/layouts/` — layouts JSON dos gráficos/filtros;
57
- - `playground/dashboards.ts` — lista do seletor no topo (modelo + layout + filtros iniciais) e formatters.
58
-
59
- O "Salvar no arquivo" do devtools grava nessas pastas (formatando com `vp fmt`) e os snapshots vão
60
- para `playground/snapshots/`. Mudanças em modelos valem na consulta seguinte, sem reiniciar.
61
-
62
- ### Testar no app antes de publicar
63
-
64
- Para usar a versão local num app (ex.: o `custo` do `rocha-pr`), aponte a dependência para esta
65
- pasta (`"@bluemarble/bi": "file:../../../bm-bi"` + `npm install`) e deixe `vp run dev` rodando
66
- (`vp pack --watch`): o app lê o `dist/`. Com o link, o Next precisa de `turbopack.root` e
67
- `turbopack.resolveAlias` — o `next.config.js` do `custo` liga isso sozinho quando detecta o link.
68
-
69
- ## Publicar
70
-
71
- ```bash
72
- vp run verify # o mesmo que o CI roda: check, typecheck, testes e build
73
- vp run release # bumpp: escolhe a versão, commita, cria a tag vX.Y.Z e faz push
74
- ```
75
-
76
- A tag dispara `.github/workflows/publish.yml`, que confere tag x `package.json`, roda o `verify` e
77
- publica com `bun publish` (secret `NPM_TOKEN`). Depois, no app: `npm install @bluemarble/bi@X.Y.Z`.
1
+ # bm-bi (`@bluemarble/bi`)
2
+
3
+ Camada semântica para dashboards em React, no lugar do Power BI: o modelo (tabelas,
4
+ relacionamentos, dimensões e medidas) é um objeto TS (`defineModel`), o servidor compila as
5
+ consultas para SQL (MySQL/MariaDB) e os componentes de filtro e gráfico consultam o modelo pelo
6
+ nome. Vem com um devtools (diagrama do modelo, editor de layout, playground, regressão).
7
+
8
+ ```ts
9
+ import { defineModel, formula, sum } from '@bluemarble/bi/server'
10
+
11
+ export const vendas = defineModel({
12
+ name: 'vendas',
13
+ tables: {
14
+ pedidos: { key: 'id', sql: 'SELECT id, loja, criado_em FROM pedidos' },
15
+ itens: { sql: 'SELECT pedido_id, valor FROM itens' }
16
+ },
17
+ relationships: [{ from: 'itens.pedido_id', to: 'pedidos.id' }],
18
+ dimensions: { loja: { sql: 'pedidos.loja', type: 'string' } },
19
+ measures: { valor: sum('itens.valor', { format: 'currency' }) }
20
+ })
21
+ ```
22
+
23
+ | Import | Onde roda |
24
+ | ----------------------- | -------------- |
25
+ | `@bluemarble/bi/server` | só no servidor |
26
+ | `@bluemarble/bi/client` | browser |
27
+ | `@bluemarble/bi/types` | ambos |
28
+
29
+ ```bash
30
+ npm install @bluemarble/bi # peer: react 19, @mui/material 7, recharts 3
31
+ ```
32
+
33
+ Publicado no npm já compilado (`dist/`, ESM + `.d.ts`), sem precisar de `transpilePackages`.
34
+ Conceitos, API, devtools e configuração do app estão em
35
+ [`docs/dashboard-substituicao-powerbi.md`](docs/dashboard-substituicao-powerbi.md).
36
+
37
+ ## Desenvolvimento
38
+
39
+ Projeto Vite+ com bun.
40
+
41
+ ```bash
42
+ vp install # dependências
43
+ vp test # testes (vitest, sem banco)
44
+ vp run typecheck # tsc
45
+ vp check # formatação (oxfmt) + lint (oxlint)
46
+ vp run playground # dashboard + devtools em http://localhost:5180 (precisa do .env)
47
+ ```
48
+
49
+ ### Playground
50
+
51
+ `playground/` é uma página Vite com o dashboard e o devtools ligados direto ao `src/` (sem passar
52
+ pelo app). O endpoint `/api/dashboard/query` roda no próprio servidor do Vite e consulta o MySQL do
53
+ `DATABASE_URL` do `.env` na raiz (modelo em `.env.example`; o `.env` não é versionado).
54
+
55
+ - `playground/models/` — modelos (`defineModel`), registrados em `models/index.ts`;
56
+ - `playground/layouts/` — layouts JSON dos gráficos/filtros;
57
+ - `playground/dashboards.ts` — lista do seletor no topo (modelo + layout + filtros iniciais) e formatters.
58
+
59
+ O "Salvar no arquivo" do devtools grava nessas pastas (formatando com `vp fmt`) e os snapshots vão
60
+ para `playground/snapshots/`. Mudanças em modelos valem na consulta seguinte, sem reiniciar.
61
+
62
+ ### Testar no app antes de publicar
63
+
64
+ Para usar a versão local num app (ex.: o `custo` do `rocha-pr`), aponte a dependência para esta
65
+ pasta (`"@bluemarble/bi": "file:../../../bm-bi"` + `npm install`) e deixe `vp run dev` rodando
66
+ (`vp pack --watch`): o app lê o `dist/`. Com o link, o Next precisa de `turbopack.root` e
67
+ `turbopack.resolveAlias` — o `next.config.js` do `custo` liga isso sozinho quando detecta o link.
68
+
69
+ ## Publicar
70
+
71
+ ```bash
72
+ vp run verify # o mesmo que o CI roda: check, typecheck, testes e build
73
+ vp run release # bumpp: escolhe a versão, commita, cria a tag vX.Y.Z e faz push
74
+ ```
75
+
76
+ A tag dispara `.github/workflows/publish.yml`, que confere tag x `package.json`, roda o `verify` e
77
+ publica com `bun publish` (secret `NPM_TOKEN`). Depois, no app: `npm install @bluemarble/bi@X.Y.Z`.