Backend do projeto Meteora desenvolvido com NestJS, GraphQL e Node.js 20.
Este projeto utiliza nix-shell para garantir um ambiente de desenvolvimento consistente e reproduzível.
- NixOS ou Nix instalado no sistema
- Opcional:
direnvpara carregamento automático do ambiente
# Entrar no ambiente nix-shell
nix-shell
# O ambiente será carregado com todas as ferramentas necessáriasSe você tem direnv instalado, o ambiente será carregado automaticamente:
# Instalar direnv (se não tiver)
nix-env -iA nixpkgs.direnv
# Configurar direnv no seu shell (fish)
echo 'eval "$(direnv hook fish)"' >> ~/.config/fish/config.fish
source ~/.config/fish/config.fish
# Agora o ambiente será carregado automaticamente ao entrar no diretório
cd meteoraO ambiente nix-shell inclui:
- Node.js 20 - Runtime JavaScript
- NPM - Gerenciador de pacotes
- Yarn - Gerenciador de pacotes alternativo
- TypeScript - Compilador TypeScript
- NestJS CLI - Ferramentas de linha de comando do NestJS
- Git - Controle de versão
- Vim - Editor de texto
- Curl/Wget - Ferramentas de rede
- Netcat/Lsof - Ferramentas de debugging de rede
- Prettier/ESLint - Ferramentas de formatação e linting
# Instalar dependências
npm install
# Iniciar em modo desenvolvimento
npm run start:dev
# Build do projeto
npm run build
# Executar testes
npm test
# Gerar componentes NestJS
nest generate controller users
nest generate service users
nest generate module users
# Gerar componentes GraphQL
nest generate resolver users
nest generate resolver products
# Prisma (com configurações específicas para NixOS)
./scripts/setup-prisma.sh # Configurar Prisma para NixOS
npx prisma generate # Gerar cliente Prisma
npx prisma db push # Sincronizar schema com bancoO projeto está configurado com GraphQL usando Apollo Server.
- GraphQL Playground: http://localhost:3000/graphql
- Queries disponíveis:
sayHello: Retorna uma mensagem de saudaçãogetCategories: Retorna lista de categorias
meteora/
├── shell.nix # Configuração do ambiente nix-shell
├── .envrc # Configuração do direnv
├── package.json # Dependências e scripts do projeto
├── tsconfig.json # Configuração do TypeScript
├── src/
│ ├── app.module.ts # Módulo principal com configuração GraphQL
│ ├── main.ts # Arquivo de entrada da aplicação
│ └── category/
│ ├── category.module.ts
│ └── category.resolver.ts
└── README.md # Este arquivo
- @nestjs/common: ^11.0.0
- @nestjs/core: ^11.0.0
- @nestjs/platform-express: ^11.0.0
- @nestjs/graphql: ^13.1.0
- @nestjs/apollo: ^13.1.0
- @apollo/server: ^4.12.2
- graphql: ^16.11.0
- Entre no ambiente nix-shell:
nix-shell - Instale as dependências:
npm install - Inicie o servidor:
npm run start:dev - Acesse o GraphQL Playground: http://localhost:3000/graphql
- Comece a desenvolver seus resolvers e tipos GraphQL
- O ambiente nix-shell garante que todos os desenvolvedores tenham exatamente as mesmas versões das ferramentas
- Use
direnvpara carregamento automático do ambiente - O
shellHooknoshell.nixmostra informações úteis quando o ambiente é carregado - Todas as ferramentas estão isoladas do sistema, não afetando outras instalações
- Para parar o servidor, use
Ctrl+Coupkill -f "npm run start:dev"
Erro de porta em uso:
# Encontrar processo usando a porta 3000
lsof -ti:3000
# Parar o processo
kill <PID>
# Ou parar todos os processos npm
pkill -f "npm run start:dev"Erro de dependências:
# Limpar e reinstalar
rm -rf node_modules package-lock.json
npm installErro do Prisma no NixOS:
# Solução completa para o erro 404 do Prisma no NixOS:
./scripts/setup-prisma.sh
# Este script:
# 1. Configura as variáveis de ambiente corretas
# 2. Cria a estrutura do Prisma se não existir
# 3. Gera o cliente Prisma com binários compatíveis
# 4. Resolve automaticamente o problema de binários
# Alternativa manual:
export PRISMA_CLI_BINARY_TARGETS="linux-musl"
export PRISMA_CACHE_DIR="~/.cache/prisma"
npx prisma init
npx prisma generate