Registry
A CLI instala os componentes a partir de um conjunto de arquivos JSON estáticos. Não há servidor de aplicação nem login.
O registry do Shadwire está publicado em shadwire.edumoraes.dev.br/r. Ele tem um índice com o catálogo e um arquivo por item, que traz o código completo de cada um dos arquivos do item.
| URL | Conteúdo |
|---|---|
/r/index.json |
O catálogo (nome, título, descrição, quando usar) e o base: os arquivos compartilhados e as gems que o init instala. |
/r/{nome}.json |
Um componente: os metadados, os outros itens de que ele depende, a API e os arquivos com o conteúdo de cada um. |
/r/llms.txt |
O mesmo catálogo em texto simples, para agentes. |
/r/llms-full.txt |
A API completa de cada componente, em texto simples. |
index.json
É o arquivo que list e search leem, e de onde o
init tira os arquivos base.
Um item
Cada item traz tudo o que é preciso para instalá-lo numa única requisição, inclusive o
conteúdo dos arquivos. registryDependencies já inclui as
dependências das dependências, então a CLI não precisa buscá-las uma a uma.
| Campo | O que é |
|---|---|
whenToUse |
Uma frase dizendo quando usar este componente e quais parecidos considerar. A busca procura nesse texto. |
usage |
Trechos de ERB para os usos mais comuns. |
registryDependencies |
Os outros itens que são instalados junto, incluindo as dependências indiretas. |
requiresStimulus |
Verdadeiro quando o item instala um controller em app/javascript/. |
api.components[] |
Lido do código-fonte: classe, helper, variantes, tamanhos, argumentos e atributos. |
files[] |
Cada arquivo como { target, type, content }. Os caminhos dentro do repositório do Shadwire ficam de fora. |
Como ele é construído
Tudo parte do registry/registry.json no repositório do Shadwire, que
lista os arquivos de cada item como pares source →
target. O bin/build_registry transforma isso no
registry publicado: copia o conteúdo de cada arquivo e lê a API do código-fonte:
A saída vai para build/, que é gerada e não deve ser editada à mão. O
CI a reconstrói a cada push na main, quando publica este site.
Hospedando o seu
Como são arquivos estáticos, dá para hospedar em qualquer lugar: um bucket, o GitHub
Pages, um diretório atrás de um servidor web. Aponte a CLI para lá com
--registry, ou passe a flag no init para salvá-la
no shadwire.json.
URLs file:// também funcionam, o que ajuda a testar um registry que
você gerou localmente:
A URL do registry fica gravada no app do usuário
shadwire.json guarda a URL usada quando o init rodou. Os apps
que já instalaram a partir do seu registry continuam usando esse endereço, então, se
você mudar o registry de lugar, deixe um redirecionamento na URL antiga.