SpikeMe
Documentação

Ecossistemas

O SpikeMe lê manifestos de JavaScript/TypeScript, Python e Go hoje, curando os principais pacotes por categoria para seus spikes serem específicos, com mais ecossistemas adicionados por demanda.

Um ecossistema é uma língua mais o seu registro de pacotes: como o SpikeMe lê seu manifesto e de onde ele puxa os fatos vivos. Cada um é um pequeno adaptador, então a lista cresce por demanda.

Suportados hoje

O SpikeMe suporta três ecossistemas hoje:

  • JavaScript/TypeScript via npm, lido do package.json.
  • Python via PyPI, lido do pyproject.toml ou do requirements.txt.
  • Go via módulos Go, lido do go.mod.

Por exemplo, um projeto Python aponta o SpikeMe para o seu pyproject.toml:

[project]
dependencies = [
  "fastapi>=0.115",
  "sqlalchemy>=2.0",
  "pydantic>=2.9",
]

Um projeto Go aponta para o seu go.mod, de onde o SpikeMe lê o módulo, a versão do Go e as diretivas require (as marcadas // indirect são dependências transitivas):

module github.com/acme/api

go 1.23

require (
	github.com/gin-gonic/gin v1.10.0
	gorm.io/gorm v1.25.12
	go.uber.org/zap v1.27.0
	golang.org/x/sys v0.28.0 // indirect
)

O que o SpikeMe entende

O SpikeMe não lê só uma lista solta de nomes. Ele parseia suas dependências de runtime e de dev e as categoriza:

  • npm: cerca de 90 pacotes em categorias como framework, meta-framework, estado, data-fetching, testes, e2e, UI e backend.
  • Python: cerca de 55 pacotes em categorias como web framework, async/ASGI, ORM e banco de dados, validação, cliente HTTP, filas e tarefas, dados e ML, CLI, testes e qualidade.
  • Go: pacotes curados em categorias como web, banco de dados e ORM, CLI, config, logging e testes.

A partir dessa visão categorizada ele detecta lacunas: categorias para as quais sua stack não tem pacote. Um projeto com web framework mas sem lib de testes tem uma lacuna de testes, e o SpikeMe transforma cada lacuna em um tema de spike sugerido.

O trabalho de verdade por trás disso é a curadoria. Para cada categoria, o SpikeMe acompanha os principais pacotes, então, quando nomeia candidatos, o documento fica específico às opções reais e atuais em vez de conselho genérico.

Fatos vivos por ecossistema

Cada ecossistema sabe onde coletar os fatos vivos que ancoram um spike. As fontes não são simétricas, porque cada registro expõe dados diferentes:

  • npm: o npm registry (versão, licença), o npm downloads (downloads/semana) e o bundlephobia (tamanho de bundle em gzip).
  • Python: o PyPI (versão, licença) e o pypistats (downloads/semana).
  • Go: o deps.dev (versão, licença).

O Python não tem fonte de tamanho de bundle, então um spike de Python se apoia em versão, licença e números de download. O Go não expõe uma contagem pública de downloads semanais nem tamanho de bundle, então um spike de Go se ancora em versão e licença — a ausência de downloads é esperada, não um bug. Veja Gerando spikes para como esses fatos são injetados no documento.

Adicionando ecossistemas

Por baixo dos panos, cada ecossistema é um adaptador (parser de manifesto, fonte de fatos): uma parte que lê o manifesto e categoriza as dependências, outra que coleta os fatos vivos do registro. Adicionar um ecossistema novo é escrever esse par e curar os principais pacotes por categoria.

Ecossistemas novos (Rust, Java, PHP, Ruby) são adicionados por demanda. Na página inicial você escolhe um ecossistema para ser avisado quando abrir, e a ordem de construção vem direto dessa waitlist: quanto mais demanda um ecossistema recebe, mais cedo ele chega.