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

@juliobrim/prisma-shared

v1.0.41

Published

Schema Prisma compartilhado entre projetos Sabcon

Downloads

347

Readme

Prisma Shared Schema

Este repositório contém o schema Prisma compartilhado entre os projetos Sabcon, disponível como pacote npm privado.

Projetos que utilizam este schema

  • sabcon-platform - Frontend/Web App
  • sabcon-backend-mqtt - Backend para monitoramento MQTT
  • sabcon-api - API REST

Estrutura

prisma-shared/
├── schema.prisma          # Schema principal
├── migrations/            # Migrations do banco
├── package.json          # Configuração do pacote npm
├── .npmignore           # Arquivos excluídos do pacote
└── README.md            # Este arquivo

Como usar em um projeto

Opção 1: Pacote NPM Privado (Recomendado)

Configuração inicial

  1. Configurar o registro npm privado:

    # Para GitHub Packages (recomendado - gratuito para privados)
    npm config set @sabcon:registry https://npm.pkg.github.com
    npm login --scope=@sabcon --registry=https://npm.pkg.github.com
       
    # Para npmjs.com (requer conta paga para pacotes privados)
    npm login
  2. Instalar o pacote:

    npm install @juliobrim/prisma-shared

Configuração nos projetos

Adicione estes scripts no package.json dos projetos:

{
  "scripts": {
    "prisma:generate": "prisma generate --schema=./node_modules/@juliobrim/prisma-shared/schema.prisma",
    "prisma:migrate": "prisma migrate deploy --schema=./node_modules/@juliobrim/prisma-shared/schema.prisma",
    "prisma:studio": "prisma studio --schema=./node_modules/@juliobrim/prisma-shared/schema.prisma",
    "prisma:format": "prisma format --schema=./node_modules/@juliobrim/prisma-shared/schema.prisma",
    "prisma:validate": "prisma validate --schema=./node_modules/@juliobrim/prisma-shared/schema.prisma"
  }
}

Configuração do Prisma Client

No package.json do projeto que usa o pacote:

{
  "dependencies": {
    "@prisma/client": "^5.0.0",
    "@juliobrim/prisma-shared": "^1.0.0"
  }
}

Configuração do schema.prisma local

Crie um arquivo schema.prisma no seu projeto que importe o schema compartilhado:

// Importar o schema compartilhado
import "node_modules/@juliobrim/prisma-shared/schema.prisma"

// Configurações específicas do projeto (se necessário)
generator client {
  provider = "prisma-client-js"
  // O cliente será gerado no local padrão: node_modules/.prisma/client
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

Opção 2: Git Submodule (Legado)

# Adicionar como submodule
git submodule add <url-do-repo> prisma-shared

# Atualizar submodule
git submodule update --remote prisma-shared

# Inicializar submodule (primeira vez)
git submodule init
git submodule update

Scripts disponíveis

# Gerar cliente Prisma
npm run generate

# Executar migrations
npm run migrate:deploy

# Validar schema
npm run validate

# Formatar schema
npm run format

Workflow de desenvolvimento

Para desenvolvedores do pacote

  1. Fazer alterações no schema:

    # Editar schema.prisma
    # Executar migration
    npm run migrate:dev --name "nome_da_migration"
  2. Testar localmente:

    npm run validate
    npm run format
  3. Publicar nova versão:

    # Incrementar versão
    npm version patch|minor|major
       
    # Publicar
    npm publish

Para projetos que usam o pacote

  1. Atualizar para nova versão:

    npm update @juliobrim/prisma-shared
  2. Regenerar cliente Prisma:

    npm run prisma:generate
  3. Executar migrations:

    npm run prisma:migrate

Vantagens do pacote npm

  • Versionamento semântico: Controle de versões mais preciso
  • Dependências explícitas: npm/yarn gerenciam automaticamente
  • Build mais confiável: Sem problemas de submodules
  • CI/CD mais simples: Instalação automática via npm
  • Rollback fácil: Voltar para versão anterior é trivial
  • Documentação integrada: README e metadados no pacote

Configuração de CI/CD

GitHub Actions (exemplo)

name: Build and Deploy
on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '18'
          registry-url: 'https://npm.pkg.github.com'
      
      - run: npm ci
      - run: npm install @juliobrim/prisma-shared
      - run: npm run prisma:generate
      - run: npm run build

Variáveis de ambiente

Para desenvolvimento do pacote

Para testar o schema localmente, crie um arquivo .env:

DATABASE_URL="postgresql://username:password@localhost:5432/sabcon_db"

Para projetos que usam o pacote

Certifique-se de que cada projeto tenha a variável DATABASE_URL configurada corretamente em seu arquivo .env.

⚠️ Usando Prisma 7?

Se você está usando Prisma 7, consulte o arquivo PRISMA_7_SETUP.md para instruções específicas de configuração, pois o Prisma 7 requer configuração adicional via prisma.config.ts.

Troubleshooting

Problemas comuns

  1. Erro de acesso ao pacote privado:

    npm login
    npm config set @sabcon:registry https://npm.pkg.github.com
  2. Schema não encontrado:

    # Verificar se o pacote foi instalado
    ls node_modules/@juliobrim/prisma-shared/
       
    # Reinstalar se necessário
    npm install @juliobrim/prisma-shared
  3. Migrations não aplicadas:

    # Verificar status das migrations
    npx prisma migrate status --schema=./node_modules/@juliobrim/prisma-shared/schema.prisma
       
    # Aplicar migrations pendentes
    npm run prisma:migrate

Contribuição

  1. Faça suas alterações no schema
  2. Teste as migrations localmente
  3. Incremente a versão do pacote
  4. Publique a nova versão
  5. Atualize os projetos que usam o pacote

Suporte

Para dúvidas ou problemas, entre em contato com a equipe de desenvolvimento.