Instalación
Instalación
Sección titulada «Instalación»Esta guía cubre cómo instalar y configurar los paquetes de backend de Effectify en tu proyecto Node.js.
Gestor de paquetes
Sección titulada «Gestor de paquetes»Usa tu gestor favorito. Los ejemplos usan npm, pero puedes usar yarn, pnpm o bun.
Paquetes principales
Sección titulada «Paquetes principales»@effectify/node-better-auth
Sección titulada «@effectify/node-better-auth»Integración de Effect con better-auth para Node.js:
npm install @effectify/node-better-authPeer Dependencies:
npm install better-auth effect @effect/platform @effect/platform-node@effectify/node-auth-app
Sección titulada «@effectify/node-auth-app»Aplicación completa de autenticación:
npm install @effectify/node-auth-appDependencias:
npm install express cors helmet dotenv better-sqlite3Configuración por framework
Sección titulada «Configuración por framework»Express.js
Sección titulada «Express.js»mkdir mi-backend && cd mi-backend
npm init -y
npm install express cors helmet dotenv
npm install -D @types/express @types/cors @types/node typescript ts-node nodemonInicializa TypeScript:
npx tsc --inittsconfig.json:
{
"compilerOptions": {
"target": "ES2022",
"module": "commonjs",
"lib": ["ES2022"],
"outDir": "./dist",
"rootDir": "./src",
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}Scripts en package.json:
{
"scripts": {
"dev": "nodemon --exec ts-node src/index.ts",
"build": "tsc",
"start": "node dist/index.js"
}
}Fastify
Sección titulada «Fastify»mkdir mi-fastify-backend && cd mi-fastify-backend
npm init -y
npm install fastify @fastify/cors @fastify/helmet
npm install -D @types/node typescript ts-node nodemonConfiguración básica con Effect:
import Fastify from "fastify"
import { Effect } from "effect"
const fastify = Fastify({ logger: true })
fastify.register(require("@fastify/cors"))
fastify.register(require("@fastify/helmet"))
fastify.get("/health", async () => {
const healthCheck = Effect.succeed({
status: "ok",
timestamp: new Date().toISOString(),
})
return await Effect.runPromise(healthCheck)
})
await fastify.listen({ port: 3000 })npm i -g @nestjs/cli
nest new mi-nest-backend
cd mi-nest-backend
npm install @effectify/node-better-auth effectServicio Effect:
import { Injectable } from "@nestjs/common"
import { Effect } from "effect"
@Injectable()
export class EffectService {
runEffect<A, E>(effect: Effect.Effect<A, E, never>): Promise<A> {
return Effect.runPromise(effect)
}
}