npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

tormenta20

v0.3.0

Published

TypeScript/JavaScript library with data about the Brazilian TTRPG Tormenta20 — spells, classes, origins, deities, powers, equipment, races and conditions.

Readme

Tormenta20

Ruby npm CI Coverage Ruby Docs TS Docs License

Uma biblioteca Ruby, TypeScript e Python com dados do RPG de mesa brasileiro Tormenta20.

Inclui um banco de dados SQLite pré-populado com magias, classes, origens, divindades, poderes, equipamentos, raças e condições do sistema T20. Todos os registros expõem referências de livro e página via bookReference() / book_reference.

Dependências do Sistema

A biblioteca usa SQLite3. Em ambientes Linux (incluindo Docker):

# Debian/Ubuntu
apt-get install libsqlite3-0

# Alpine
apk add sqlite-libs

No Dockerfile da sua aplicação:

RUN apt-get install --no-install-recommends -y libsqlite3-0

Instalação

Ruby (Bundler):

# Gemfile
gem 'tormenta20'
bundle install

Node.js / TypeScript:

npm install tormenta20

Uso Rápido

Ruby:

require 'tormenta20'

Tormenta20.magias.arcanas.by_circle("3")
Tormenta20.classes.conjuradores.all
Tormenta20.poderes.poderes_concedidos.all
Tormenta20.racas.find('anao').book_reference  # => "T20 - EJA, p. 20"

TypeScript / JavaScript:

import { Magia, Classe, Poder, Raca } from 'tormenta20'

Magia.arcanas().all()
Classe.conjuradores().all()
Poder.poderesConcedidos().all()
Raca.find('anao')?.bookReference()  // => { formatted: "T20 - EJA, p. 20", ... }

Modelos

| Model | Descrição | Qtd | Ruby | TypeScript | |-------|-----------|-----|------|------------| | Magia | Magias arcanas, divinas e universais | 198 | docs/ruby/magias.md | docs/ts/magias.md | | Classe | Classes de personagem | 14 | docs/ruby/classes.md | docs/ts/classes.md | | Origem | Origens de personagem | 35 | docs/ruby/origens.md | docs/ts/origens.md | | Divindade | Deuses do Panteão | 20 | docs/ruby/divindades.md | docs/ts/divindades.md | | Poder | Poderes (origem, concedido, tormenta, classe, raça) | 518 | docs/ruby/poderes.md | docs/ts/poderes.md | | Raca | Raças jogáveis | 18 | docs/ruby/racas.md | docs/ts/racas.md | | Condicao | Condições de status | 35 | docs/ruby/condicoes.md | docs/ts/condicoes.md | | Arma | Armas | — | docs/ruby/armas.md | docs/ts/armas.md | | Armadura | Armaduras | — | docs/ruby/armaduras.md | docs/ts/armaduras.md | | Escudo | Escudos | 2 | docs/ruby/escudos.md | docs/ts/escudos.md | | Item | Itens gerais | — | docs/ruby/itens.md | docs/ts/itens.md | | MaterialEspecial | Materiais especiais | 6 | docs/ruby/materiais_especiais.md | docs/ts/materiais_especiais.md | | Melhoria | Melhorias mágicas | — | docs/ruby/melhorias.md | docs/ts/melhorias.md | | Regra | Regras e dados de referência | 14 | docs/ruby/regras.md | docs/ts/regras.md | | Livro | Livros indexados | 1 | docs/ruby/livros.md | docs/ts/livros.md | | IndiceRemissivo | Entradas do índice remissivo | 1098 | docs/ruby/indice_remissivo.md | docs/ts/indice_remissivo.md |

Development

Pré-requisitos

  • Ruby >= 3.0.0
  • Node.js >= 18
  • Bundler

Setup

git clone https://github.com/LuanGB/tormenta20.git
cd tormenta20
bundle install
npm install

Construir o Banco de Dados

O arquivo db/tormenta20.sqlite3 é gerado a partir dos JSONs em src/json/:

# Ruby
rake build_db

# Build completo (inclui build_db)
rake build

# TypeScript (compila dist/ + docs)
npm run build
npm run docs

Estrutura do Projeto

tormenta20/
├── src/
│   ├── json/          # Dados fonte em JSON
│   ├── ruby/          # Código Ruby (ActiveRecord models)
│   └── ts/            # Código TypeScript
├── docs/
│   ├── ruby/          # Referência da API Ruby
│   └── ts/            # Referência da API TypeScript
├── db/
│   ├── schema.sql
│   └── tormenta20.sqlite3   # Gerado por rake build_db
└── dist/              # Build TypeScript compilado

Testes

# Ruby
bin/test

# TypeScript
npm test

Contributing

Bug reports e pull requests são bem-vindos em https://github.com/LuanGB/tormenta20.

License

Disponível como open source sob os termos da MIT License.

Aviso Legal

Tormenta20 é uma marca registrada da Jambô Editora. Esta biblioteca é um projeto de fã não oficial e não é afiliada, endossada ou patrocinada pela Jambô Editora.