Ir al contenido
GitHub

Instalación

Esta guía cubre cómo instalar y configurar los paquetes de backend de Effectify en tu proyecto Node.js.

Usa tu gestor favorito. Los ejemplos usan npm, pero puedes usar yarn, pnpm o bun.

Integración de Effect con better-auth para Node.js:

npm install @effectify/node-better-auth

Peer Dependencies:

npm install better-auth effect @effect/platform @effect/platform-node

Aplicación completa de autenticación:

npm install @effectify/node-auth-app

Dependencias:

npm install express cors helmet dotenv better-sqlite3
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 nodemon

Inicializa TypeScript:

npx tsc --init

tsconfig.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"
  }
}
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 nodemon

Configuració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 effect

Servicio 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)
  }
}