Fumadocs + Code Hike
Backend

Node.js

Runtime JavaScript para desenvolvimento backend na IngenioLab

O que é Node.js?

Node.js é um ambiente de execução JavaScript construído no motor V8 do Chrome. Permite executar JavaScript no servidor, oferecendo alta performance e escalabilidade através de seu modelo de I/O não-bloqueante baseado em eventos.

Por que utilizamos Node.js na IngenioLab?

  • Performance: Excelente para aplicações I/O intensivas
  • Ecossistema rico: NPM com milhões de pacotes disponíveis
  • JavaScript full-stack: Mesma linguagem no frontend e backend
  • Comunidade ativa: Grande suporte da comunidade
  • Escalabilidade: Ideal para aplicações em tempo real

Padrão IngenioLab: Versão LTS

SEMPRE utilize a versão LTS (Long Term Support) do Node.js

Verificar versão atual:

node --version
npm --version

Como instalar/atualizar para versão LTS:

Usando Node Version Manager (NVM) - Recomendado:

# Instalar NVM (Linux/macOS)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
# Instalar última versão LTS
nvm install --lts
nvm use --lts
nvm alias default lts/*

Download direto:

Baixe a versão LTS em: https://nodejs.org/

Iniciando um novo projeto Node.js

1. Criar estrutura do projeto:

mkdir meu-projeto
cd meu-projeto
npm init -y

2. Estrutura de pastas recomendada:

meu-projeto/
├── src/
│ ├── controllers/
│ ├── models/
│ ├── routes/
│ ├── middleware/
│ └── utils/
├── tests/
├── docs/
├── package.json
├── .gitignore
└── README.md

3. Configurações essenciais no package.json:

{
"name": "meu-projeto",
"version": "1.0.0",
"type": "module",
"main": "src/index.js",
"scripts": {
"start": "node src/index.js",
"dev": "nodemon src/index.js",
"test": "jest"
},
"engines": {
"node": ">=18.0.0"
}
}

Padrões de Código IngenioLab

1. Sempre usar ES Modules:

// ✅ Correto
import fastify from 'fastify'
import { readFile } from 'fs/promises'
// ❌ Evitar
const fastify = require('fastify')

2. Tratamento de erros assíncronos:

// ✅ Correto
try {
const data = await fetchData()
return data
} catch (error) {
console.error('Erro ao buscar dados:', error)
throw error
}

3. Variáveis de ambiente:

// .env
PORT=3000
DB_URL=mongodb://localhost:27017/mydb
// src/config/env.js
import 'dotenv/config'
export const config = {
port: process.env.PORT || 3000,
dbUrl: process.env.DB_URL
}

4. Estrutura de API REST:

// src/routes/users.js
import { FastifyInstance } from 'fastify'
export default async function userRoutes(fastify) {
fastify.get('/', getAllUsers)
fastify.get('/:id', getUserById)
fastify.post('/', createUser)
fastify.put('/:id', updateUser)
fastify.delete('/:id', deleteUser)
}

Dependências Essenciais

Para desenvolvimento:

npm install -D nodemon jest eslint prettier

Para APIs:

npm install fastify @fastify/helmet @fastify/cors

Para banco de dados:

npm install mongoose # MongoDB
npm install pg # PostgreSQL