Skip to content

feat: replace tRPC/Prisma/BetterAuth with custom Node.js + Express backend#30

Open
Cedric-Kasera wants to merge 2 commits intocode-with-antonio:mainfrom
Cedric-Kasera:feat/nodebase-fs
Open

feat: replace tRPC/Prisma/BetterAuth with custom Node.js + Express backend#30
Cedric-Kasera wants to merge 2 commits intocode-with-antonio:mainfrom
Cedric-Kasera:feat/nodebase-fs

Conversation

@Cedric-Kasera
Copy link

Migrate the entire Nodebase application from a Next.js fullstack architecture (tRPC, Prisma, BetterAuth, Sentry, Polar) to a decoupled frontend/backend architecture with a custom Node.js + Express API server and direct PostgreSQL access via pg.

──────────────────────────────────────────────────────────────────────────────── BACKEND (nodebase_backend/) — NEW FROM SCRATCH ────────────────────────────────────────────────────────────────────────────────

Architecture:

  • Node.js + Express 5 (ESM, "type": "module")
  • PostgreSQL via pg Pool (NeonDB, SSL always on)
  • JWT httpOnly cookie authentication (bcryptjs)
  • AES-256-GCM credential encryption (node:crypto)
  • Inngest (durable workflow engine, isDev mode for local dev)
  • Vercel AI SDK (@ai-sdk/openai, @ai-sdk/google, @ai-sdk/anthropic)
  • Zod v4 request validation
  • Helmet, CORS, express-rate-limit security middleware
  • Structured JSON logger, centralized error handling

Modules (7):

  • auth: register, login, logout, me (JWT cookies)
  • users: user profile management
  • workflows: CRUD + save (PUT) + execute + workflow-level SSE stream
  • nodes: CRUD per workflow
  • connections: CRUD per workflow
  • credentials: CRUD with AES-256-GCM encryption at rest
  • executions: list, detail, per-node details, SSE stream endpoint
  • webhooks: POST endpoints for Google Form + Stripe triggers (no auth)

SQL Migrations (12):

  • 000: pgcrypto + uuid-ossp extensions
  • 001: node_type + execution_status enums
  • 002-005: users, sessions, accounts, verifications
  • 006: credentials (encrypted)
  • 007-009: workflows, nodes, connections
  • 010: executions
  • 011: node_executions (per-node execution tracking)
  • All use TEXT primary keys, RLS policies with ::text casts

Engine:

  • toposort.js: DAG ordering via topological sort
  • template.js: Handlebars expression resolution with custom helpers
    (json, encodeURI, eq) for node data templating
  • runner.js: orchestrator — resolves templates, executes nodes in order, passes triggerPayload, emits onNodeStart/Complete/Error callbacks

Executors (9):

  • manual-trigger: pass-through
  • google-form-trigger: receives triggerPayload.formData
  • stripe-trigger: receives triggerPayload.event
  • http-request: configurable method/endpoint/body
  • openai: gpt-4o-mini via Vercel AI SDK (messages API)
  • anthropic: claude-sonnet-4 via Vercel AI SDK (messages API)
  • gemini: gemini-2.5-flash via Vercel AI SDK (messages API)
  • discord: webhook message posting
  • slack: webhook message posting

SSE (Server-Sent Events):

  • SSEManager class with execution-level + workflow-level connections
  • Execution-level: node:start, node:complete, node:error, execution:complete
  • Workflow-level: execution:started (notifies editors of webhook-triggered runs)

Backend Dependencies Added: @ai-sdk/anthropic, @ai-sdk/google, @ai-sdk/openai, ai, bcryptjs, cookie-parser, cors, dotenv, express, express-rate-limit, handlebars, helmet, html-entities, inngest, jsonwebtoken, pg, toposort, uuid, zod, nodemon (dev)

──────────────────────────────────────────────────────────────────────────────── FRONTEND CHANGES ────────────────────────────────────────────────────────────────────────────────

Removed:

  • tRPC (client, server, routers, query-client)
  • Prisma (schema, 12 migration files, db.ts)
  • BetterAuth (auth.ts, auth-client.ts, API route)
  • Sentry (instrumentation, config, example page, API route)
  • Polar (subscriptions client)
  • Inngest (client-side channels, functions, utils, API route)
  • All server/ prefetch/params-loader files (workflows, credentials, executions)
  • mprocs config files

New API Layer (src/api/):

  • client.ts: ky HTTP client configured with NEXT_PUBLIC_API_URL,
    credentials: "include" for cookie auth
  • auth.ts: login, register, logout, getMe API functions
  • workflows.ts: CRUD + execute + save workflow API functions
  • credentials.ts: CRUD + getByType API functions

New State Management (Jotai):

  • auth-atoms.ts: currentUserAtom, isAuthenticatedAtom
  • workflow-atoms.ts: workflowsAtom, currentWorkflowAtom, pagination
  • credential-atoms.ts: credentialsAtom, currentCredentialAtom, pagination
  • execution-atoms.ts: nodeStatusMapAtom, activeExecutionIdAtom

New Components:

  • AuthProvider: wraps app, hydrates user on mount
  • use-execution-stream.ts: SSE hook with connect(executionId) +
    subscribeToWorkflow(workflowId) for webhook-triggered auto-subscribe
  • use-node-status.ts: per-node status reader from execution atoms

Modified Hooks (now call real API):

  • use-workflows.ts: useWorkflows, useWorkflow, useSuspenseWorkflow, useCreateWorkflow, useUpdateWorkflow (maps React Flow → backend),
    useRemoveWorkflow, useExecuteWorkflow (returns execution.id)
  • use-credentials.ts: useCredentials, useCredential, useCredentialsByType,
    useCreateCredential, useUpdateCredential, useRemoveCredential
  • use-executions.ts: useExecutions, useExecution, useNodeExecutions
  • use-subscription.ts: stubbed (Polar removed)

Node Components (all 9):

  • Import useNodeExecutionStatus hook
  • Pass live status to BaseTriggerNode / BaseExecutionNode
  • Nodes show: blue spinner (loading), green border+checkmark (success), red border+X (error) in real-time during execution

Editor:

  • editor.tsx: subscribes to workflow-level SSE on mount for webhook triggers
  • execute-workflow-button.tsx: calls connect(executionId) after execute
  • useEffect syncs fetched workflow data into local nodes/edges state

Auth Forms:

  • login-form.tsx + register-form.tsx: password visibility toggle (Eye icons)

Credential Forms:

  • credential.tsx: password visibility toggle for secret fields

UI Fixes:

  • dialog.tsx: max-h-[80vh] overflow-y-auto with thin scrollbar
  • constants.ts: NodeType + ExecutionStatus enums moved here (circular dep fix)
  • node-components.ts: re-exports enums from constants.ts
  • upgrade-modal.tsx: updated for removed Polar dependency

Frontend Env Vars:

  • NEXT_PUBLIC_API_URL: backend URL (default http://localhost:4000)
  • NEXT_PUBLIC_WEBHOOK_URL: ngrok tunnel URL for webhook trigger dialogs

──────────────────────────────────────────────────────────────────────────────── BACKEND ENV VARS REQUIRED ────────────────────────────────────────────────────────────────────────────────

PORT=4000 NODE_ENV=development DATABASE_URL=postgresql://... (NeonDB connection string) JWT_SECRET= JWT_EXPIRES_IN=7d ENCRYPTION_KEY=<32-byte-hex-string> CLIENT_URL=http://localhost:3000 INNGEST_EVENT_KEY= (production only)

──────────────────────────────────────────────────────────────────────────────── SETUP ────────────────────────────────────────────────────────────────────────────────

Frontend cd nodebase && npm install && npm run dev

Backend cd nodebase_backend && npm install cp .env.example .env # fill in values npm run db:migrate # run all 12 SQL migrations npm run dev # starts on port 4000

Inngest Dev Server npm run inngest:dev # or: npx inngest-cli@latest dev -u http://localhost:4000/api/inngest

Webhooks (local dev) ngrok http 4000 # then set NEXT_PUBLIC_WEBHOOK_URL in frontend .env

…ckend

Migrate the entire Nodebase application from a Next.js fullstack architecture
(tRPC, Prisma, BetterAuth, Sentry, Polar) to a decoupled frontend/backend
architecture with a custom Node.js + Express API server and direct PostgreSQL
access via pg.

────────────────────────────────────────────────────────────────────────────────
BACKEND (nodebase_backend/) — NEW FROM SCRATCH
────────────────────────────────────────────────────────────────────────────────

Architecture:
  - Node.js + Express 5 (ESM, "type": "module")
  - PostgreSQL via pg Pool (NeonDB, SSL always on)
  - JWT httpOnly cookie authentication (bcryptjs)
  - AES-256-GCM credential encryption (node:crypto)
  - Inngest (durable workflow engine, isDev mode for local dev)
  - Vercel AI SDK (@ai-sdk/openai, @ai-sdk/google, @ai-sdk/anthropic)
  - Zod v4 request validation
  - Helmet, CORS, express-rate-limit security middleware
  - Structured JSON logger, centralized error handling

Modules (7):
  - auth: register, login, logout, me (JWT cookies)
  - users: user profile management
  - workflows: CRUD + save (PUT) + execute + workflow-level SSE stream
  - nodes: CRUD per workflow
  - connections: CRUD per workflow
  - credentials: CRUD with AES-256-GCM encryption at rest
  - executions: list, detail, per-node details, SSE stream endpoint
  - webhooks: POST endpoints for Google Form + Stripe triggers (no auth)

SQL Migrations (12):
  - 000: pgcrypto + uuid-ossp extensions
  - 001: node_type + execution_status enums
  - 002-005: users, sessions, accounts, verifications
  - 006: credentials (encrypted)
  - 007-009: workflows, nodes, connections
  - 010: executions
  - 011: node_executions (per-node execution tracking)
  - All use TEXT primary keys, RLS policies with ::text casts

Engine:
  - toposort.js: DAG ordering via topological sort
  - template.js: Handlebars expression resolution with custom helpers
    (json, encodeURI, eq) for node data templating
  - runner.js: orchestrator — resolves templates, executes nodes in order,
    passes triggerPayload, emits onNodeStart/Complete/Error callbacks

Executors (9):
  - manual-trigger: pass-through
  - google-form-trigger: receives triggerPayload.formData
  - stripe-trigger: receives triggerPayload.event
  - http-request: configurable method/endpoint/body
  - openai: gpt-4o-mini via Vercel AI SDK (messages API)
  - anthropic: claude-sonnet-4 via Vercel AI SDK (messages API)
  - gemini: gemini-2.5-flash via Vercel AI SDK (messages API)
  - discord: webhook message posting
  - slack: webhook message posting

SSE (Server-Sent Events):
  - SSEManager class with execution-level + workflow-level connections
  - Execution-level: node:start, node:complete, node:error, execution:complete
  - Workflow-level: execution:started (notifies editors of webhook-triggered runs)

Backend Dependencies Added:
  @ai-sdk/anthropic, @ai-sdk/google, @ai-sdk/openai, ai, bcryptjs,
  cookie-parser, cors, dotenv, express, express-rate-limit, handlebars, helmet,
  html-entities, inngest, jsonwebtoken, pg, toposort, uuid, zod, nodemon (dev)

────────────────────────────────────────────────────────────────────────────────
FRONTEND CHANGES
────────────────────────────────────────────────────────────────────────────────

Removed:
  - tRPC (client, server, routers, query-client)
  - Prisma (schema, 12 migration files, db.ts)
  - BetterAuth (auth.ts, auth-client.ts, API route)
  - Sentry (instrumentation, config, example page, API route)
  - Polar (subscriptions client)
  - Inngest (client-side channels, functions, utils, API route)
  - All server/ prefetch/params-loader files (workflows, credentials, executions)
  - mprocs config files

New API Layer (src/api/):
  - client.ts: ky HTTP client configured with NEXT_PUBLIC_API_URL,
    credentials: "include" for cookie auth
  - auth.ts: login, register, logout, getMe API functions
  - workflows.ts: CRUD + execute + save workflow API functions
  - credentials.ts: CRUD + getByType API functions

New State Management (Jotai):
  - auth-atoms.ts: currentUserAtom, isAuthenticatedAtom
  - workflow-atoms.ts: workflowsAtom, currentWorkflowAtom, pagination
  - credential-atoms.ts: credentialsAtom, currentCredentialAtom, pagination
  - execution-atoms.ts: nodeStatusMapAtom, activeExecutionIdAtom

New Components:
  - AuthProvider: wraps app, hydrates user on mount
  - use-execution-stream.ts: SSE hook with connect(executionId) +
    subscribeToWorkflow(workflowId) for webhook-triggered auto-subscribe
  - use-node-status.ts: per-node status reader from execution atoms

Modified Hooks (now call real API):
  - use-workflows.ts: useWorkflows, useWorkflow, useSuspenseWorkflow,
    useCreateWorkflow, useUpdateWorkflow (maps React Flow → backend),
    useRemoveWorkflow, useExecuteWorkflow (returns execution.id)
  - use-credentials.ts: useCredentials, useCredential, useCredentialsByType,
    useCreateCredential, useUpdateCredential, useRemoveCredential
  - use-executions.ts: useExecutions, useExecution, useNodeExecutions
  - use-subscription.ts: stubbed (Polar removed)

Node Components (all 9):
  - Import useNodeExecutionStatus hook
  - Pass live status to BaseTriggerNode / BaseExecutionNode
  - Nodes show: blue spinner (loading), green border+checkmark (success),
    red border+X (error) in real-time during execution

Editor:
  - editor.tsx: subscribes to workflow-level SSE on mount for webhook triggers
  - execute-workflow-button.tsx: calls connect(executionId) after execute
  - useEffect syncs fetched workflow data into local nodes/edges state

Auth Forms:
  - login-form.tsx + register-form.tsx: password visibility toggle (Eye icons)

Credential Forms:
  - credential.tsx: password visibility toggle for secret fields

UI Fixes:
  - dialog.tsx: max-h-[80vh] overflow-y-auto with thin scrollbar
  - constants.ts: NodeType + ExecutionStatus enums moved here (circular dep fix)
  - node-components.ts: re-exports enums from constants.ts
  - upgrade-modal.tsx: updated for removed Polar dependency

Frontend Env Vars:
  - NEXT_PUBLIC_API_URL: backend URL (default http://localhost:4000)
  - NEXT_PUBLIC_WEBHOOK_URL: ngrok tunnel URL for webhook trigger dialogs

────────────────────────────────────────────────────────────────────────────────
BACKEND ENV VARS REQUIRED
────────────────────────────────────────────────────────────────────────────────

  PORT=4000
  NODE_ENV=development
  DATABASE_URL=postgresql://...  (NeonDB connection string)
  JWT_SECRET=<random-secret>
  JWT_EXPIRES_IN=7d
  ENCRYPTION_KEY=<32-byte-hex-string>
  CLIENT_URL=http://localhost:3000
  INNGEST_EVENT_KEY=<key>  (production only)

────────────────────────────────────────────────────────────────────────────────
SETUP
────────────────────────────────────────────────────────────────────────────────

  # Frontend
  cd nodebase && npm install && npm run dev

  # Backend
  cd nodebase_backend && npm install
  cp .env.example .env  # fill in values
  npm run db:migrate    # run all 12 SQL migrations
  npm run dev           # starts on port 4000

  # Inngest Dev Server
  npm run inngest:dev   # or: npx inngest-cli@latest dev -u http://localhost:4000/api/inngest

  # Webhooks (local dev)
  ngrok http 4000       # then set NEXT_PUBLIC_WEBHOOK_URL in frontend .env
@coderabbitai
Copy link

coderabbitai bot commented Mar 1, 2026

Important

Review skipped

Too many files!

This PR contains 215 files, which is 65 over the limit of 150.

📥 Commits

Reviewing files that changed from the base of the PR and between 92ee3ea and 7c11907.

⛔ Files ignored due to path filters (3)
  • mprocs.log is excluded by !**/*.log
  • nodebase_backend/package-lock.json is excluded by !**/package-lock.json
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (215)
  • README.MD
  • README.md
  • Server_Side_Integrations.MD
  • mprocs.yaml
  • next.config.ts
  • nodebase_backend/.gitignore
  • nodebase_backend/package.json
  • nodebase_backend/schema.prisma
  • nodebase_backend/src/app.js
  • nodebase_backend/src/config/constants.js
  • nodebase_backend/src/config/db.js
  • nodebase_backend/src/config/env.js
  • nodebase_backend/src/engine/runner.js
  • nodebase_backend/src/engine/template.js
  • nodebase_backend/src/engine/toposort.js
  • nodebase_backend/src/inngest/client.js
  • nodebase_backend/src/inngest/executors/anthropic.js
  • nodebase_backend/src/inngest/executors/discord.js
  • nodebase_backend/src/inngest/executors/gemini.js
  • nodebase_backend/src/inngest/executors/google-form-trigger.js
  • nodebase_backend/src/inngest/executors/http-request.js
  • nodebase_backend/src/inngest/executors/index.js
  • nodebase_backend/src/inngest/executors/manual-trigger.js
  • nodebase_backend/src/inngest/executors/openai.js
  • nodebase_backend/src/inngest/executors/slack.js
  • nodebase_backend/src/inngest/executors/stripe-trigger.js
  • nodebase_backend/src/inngest/functions/execute-workflow.js
  • nodebase_backend/src/inngest/serve.js
  • nodebase_backend/src/middleware/auth.js
  • nodebase_backend/src/middleware/error-handler.js
  • nodebase_backend/src/middleware/not-found.js
  • nodebase_backend/src/middleware/request-logger.js
  • nodebase_backend/src/middleware/validate.js
  • nodebase_backend/src/modules/auth/auth.controller.js
  • nodebase_backend/src/modules/auth/auth.routes.js
  • nodebase_backend/src/modules/auth/auth.service.js
  • nodebase_backend/src/modules/auth/auth.validation.js
  • nodebase_backend/src/modules/connections/connections.controller.js
  • nodebase_backend/src/modules/connections/connections.routes.js
  • nodebase_backend/src/modules/connections/connections.service.js
  • nodebase_backend/src/modules/connections/connections.validation.js
  • nodebase_backend/src/modules/credentials/credentials.controller.js
  • nodebase_backend/src/modules/credentials/credentials.routes.js
  • nodebase_backend/src/modules/credentials/credentials.service.js
  • nodebase_backend/src/modules/credentials/credentials.validation.js
  • nodebase_backend/src/modules/executions/executions.controller.js
  • nodebase_backend/src/modules/executions/executions.routes.js
  • nodebase_backend/src/modules/executions/executions.service.js
  • nodebase_backend/src/modules/executions/sse.js
  • nodebase_backend/src/modules/nodes/nodes.controller.js
  • nodebase_backend/src/modules/nodes/nodes.routes.js
  • nodebase_backend/src/modules/nodes/nodes.service.js
  • nodebase_backend/src/modules/nodes/nodes.validation.js
  • nodebase_backend/src/modules/users/users.controller.js
  • nodebase_backend/src/modules/users/users.routes.js
  • nodebase_backend/src/modules/users/users.service.js
  • nodebase_backend/src/modules/webhooks/webhooks.controller.js
  • nodebase_backend/src/modules/webhooks/webhooks.routes.js
  • nodebase_backend/src/modules/workflows/workflows.controller.js
  • nodebase_backend/src/modules/workflows/workflows.routes.js
  • nodebase_backend/src/modules/workflows/workflows.service.js
  • nodebase_backend/src/modules/workflows/workflows.validation.js
  • nodebase_backend/src/scripts/000_create_extensions.sql
  • nodebase_backend/src/scripts/001_create_enums.sql
  • nodebase_backend/src/scripts/002_create_users.sql
  • nodebase_backend/src/scripts/003_create_sessions.sql
  • nodebase_backend/src/scripts/004_create_accounts.sql
  • nodebase_backend/src/scripts/005_create_verifications.sql
  • nodebase_backend/src/scripts/006_create_credentials.sql
  • nodebase_backend/src/scripts/007_create_workflows.sql
  • nodebase_backend/src/scripts/008_create_nodes.sql
  • nodebase_backend/src/scripts/009_create_connections.sql
  • nodebase_backend/src/scripts/010_create_executions.sql
  • nodebase_backend/src/scripts/011_create_node_executions.sql
  • nodebase_backend/src/scripts/migrate.js
  • nodebase_backend/src/server.js
  • nodebase_backend/src/utils/api-error.js
  • nodebase_backend/src/utils/api-response.js
  • nodebase_backend/src/utils/catch-async.js
  • nodebase_backend/src/utils/encryption.js
  • nodebase_backend/src/utils/logger.js
  • nodebase_backend/src/utils/transaction.js
  • package.json
  • prisma/migrations/20251004215101_init/migration.sql
  • prisma/migrations/20251005141345_better_auth_fields/migration.sql
  • prisma/migrations/20251006121458_workflows_table/migration.sql
  • prisma/migrations/20251008163512_workflows_update/migration.sql
  • prisma/migrations/20251011150739_react_flow_tables/migration.sql
  • prisma/migrations/20251011201738_new_nodes/migration.sql
  • prisma/migrations/20251028194714_google_form_trigger_node/migration.sql
  • prisma/migrations/20251029133828_stripe_trigger_node/migration.sql
  • prisma/migrations/20251030202057_ai_nodes_schema/migration.sql
  • prisma/migrations/20251031173138_credentials_schema/migration.sql
  • prisma/migrations/20251101143353_discord_slack_node/migration.sql
  • prisma/migrations/20251101231745_executions_schema/migration.sql
  • prisma/migrations/migration_lock.toml
  • sentry.edge.config.ts
  • sentry.server.config.ts
  • src/api/auth.ts
  • src/api/client.ts
  • src/api/credentials.ts
  • src/api/workflows.ts
  • src/app/(dashboard)/(editor)/workflows/[workflowId]/page.tsx
  • src/app/(dashboard)/(rest)/credentials/[credentialId]/page.tsx
  • src/app/(dashboard)/(rest)/credentials/new/page.tsx
  • src/app/(dashboard)/(rest)/credentials/page.tsx
  • src/app/(dashboard)/(rest)/executions/[executionId]/page.tsx
  • src/app/(dashboard)/(rest)/executions/page.tsx
  • src/app/(dashboard)/(rest)/workflows/page.tsx
  • src/app/api/auth/[...all]/route.ts
  • src/app/api/inngest/route.ts
  • src/app/api/sentry-example-api/route.ts
  • src/app/api/trpc/[trpc]/route.ts
  • src/app/api/webhooks/google-form/route.ts
  • src/app/api/webhooks/stripe/route.ts
  • src/app/global-error.tsx
  • src/app/layout.tsx
  • src/app/sentry-example-page/page.tsx
  • src/components/app-sidebar.tsx
  • src/components/node-selector.tsx
  • src/components/ui/dialog.tsx
  • src/components/upgrade-modal.tsx
  • src/config/constants.ts
  • src/config/node-components.ts
  • src/features/auth/components/auth-provider.tsx
  • src/features/auth/components/login-form.tsx
  • src/features/auth/components/register-form.tsx
  • src/features/auth/store/auth-atoms.ts
  • src/features/credentials/components/credential.tsx
  • src/features/credentials/components/credentials.tsx
  • src/features/credentials/hooks/use-credentials.ts
  • src/features/credentials/server/params-loader.ts
  • src/features/credentials/server/prefetch.ts
  • src/features/credentials/server/routers.ts
  • src/features/credentials/store/credential-atoms.ts
  • src/features/editor/components/editor-header.tsx
  • src/features/editor/components/editor.tsx
  • src/features/editor/components/execute-workflow-button.tsx
  • src/features/editor/hooks/use-execution-stream.ts
  • src/features/editor/hooks/use-node-status.ts
  • src/features/editor/store/execution-atoms.ts
  • src/features/executions/components/anthropic/actions.ts
  • src/features/executions/components/anthropic/dialog.tsx
  • src/features/executions/components/anthropic/executor.ts
  • src/features/executions/components/anthropic/node.tsx
  • src/features/executions/components/discord/actions.ts
  • src/features/executions/components/discord/executor.ts
  • src/features/executions/components/discord/node.tsx
  • src/features/executions/components/execution.tsx
  • src/features/executions/components/executions.tsx
  • src/features/executions/components/gemini/actions.ts
  • src/features/executions/components/gemini/dialog.tsx
  • src/features/executions/components/gemini/executor.ts
  • src/features/executions/components/gemini/node.tsx
  • src/features/executions/components/http-request/actions.ts
  • src/features/executions/components/http-request/executor.ts
  • src/features/executions/components/http-request/node.tsx
  • src/features/executions/components/openai/actions.ts
  • src/features/executions/components/openai/dialog.tsx
  • src/features/executions/components/openai/executor.ts
  • src/features/executions/components/openai/node.tsx
  • src/features/executions/components/slack/actions.ts
  • src/features/executions/components/slack/executor.ts
  • src/features/executions/components/slack/node.tsx
  • src/features/executions/hooks/use-executions.ts
  • src/features/executions/hooks/use-node-status.ts
  • src/features/executions/lib/executor-registry.ts
  • src/features/executions/server/params-loader.ts
  • src/features/executions/server/prefetch.ts
  • src/features/executions/server/routers.ts
  • src/features/executions/types.ts
  • src/features/subscriptions/hooks/use-subscription.ts
  • src/features/triggers/components/google-form-trigger/actions.ts
  • src/features/triggers/components/google-form-trigger/dialog.tsx
  • src/features/triggers/components/google-form-trigger/executor.ts
  • src/features/triggers/components/google-form-trigger/node.tsx
  • src/features/triggers/components/manual-trigger/actions.ts
  • src/features/triggers/components/manual-trigger/executor.ts
  • src/features/triggers/components/manual-trigger/node.tsx
  • src/features/triggers/components/stripe-trigger/actions.ts
  • src/features/triggers/components/stripe-trigger/dialog.tsx
  • src/features/triggers/components/stripe-trigger/executor.ts
  • src/features/triggers/components/stripe-trigger/node.tsx
  • src/features/workflows/components/workflows.tsx
  • src/features/workflows/hooks/use-workflows.ts
  • src/features/workflows/server/params-loader.ts
  • src/features/workflows/server/prefetch.ts
  • src/features/workflows/server/routers.ts
  • src/features/workflows/store/workflow-atoms.ts
  • src/hooks/use-upgrade-modal.tsx
  • src/inngest/channels/anthropic.ts
  • src/inngest/channels/discord.ts
  • src/inngest/channels/gemini.ts
  • src/inngest/channels/google-form-trigger.ts
  • src/inngest/channels/http-request.ts
  • src/inngest/channels/manual-trigger.ts
  • src/inngest/channels/openai.ts
  • src/inngest/channels/slack.ts
  • src/inngest/channels/stripe-trigger.ts
  • src/inngest/client.ts
  • src/inngest/functions.ts
  • src/inngest/utils.ts
  • src/instrumentation-client.ts
  • src/instrumentation.ts
  • src/lib/auth-client.ts
  • src/lib/auth-utils.ts
  • src/lib/auth.ts
  • src/lib/db.ts
  • src/lib/encryption.ts
  • src/lib/polar.ts
  • src/trpc/client.tsx
  • src/trpc/init.ts
  • src/trpc/query-client.ts
  • src/trpc/routers/_app.ts
  • src/trpc/server.tsx

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Tip

Try Coding Plans. Let us write the prompt for your AI agent so you can ship faster (with fewer bugs).
Share your feedback on Discord.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Author

@Cedric-Kasera Cedric-Kasera left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks Okay.

Copy link
Author

@Cedric-Kasera Cedric-Kasera left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks okay..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant