The Problem

Non‑technical creators need a way to stitch together AI services without writing code, yet most workflow engines require scripting or deep UI configuration. The result is a high barrier to entry and fragile “black‑box” automations that cannot be inspected or edited on the fly.

What This Does

VibeWorkflowPlatform delivers a visual canvas (see apps/web/) where each node is a pre‑built Agent (e.g., vector search, object storage). The backend lives in apps/api/ and exposes REST endpoints that the front‑end calls. Core services such as Prisma DB access (apps/api/src/modules/common/prisma.service.ts), Redis caching (apps/api/src/modules/common/redis.service.ts), and file storage (apps/api/src/modules/common/object-storage/backend/fs.ts) are centralized, while the vector store and LangChain‑based agents live in packages/ai-workspace-common/.

How It Is Wired

Execution starts in apps/api/src/main.ts → function bootstrap (line 35) which creates the NestJS server and loads the environment (apps/api/.env.example). The most‑used internal utilities are:

  • buildSuccessResponse (called 191 times) – formats API replies.
  • safeParseJSON (118 calls) – defensive JSON handling.
  • create (96 calls) – generic entity creation used by many services.

A typical request (e.g., creating a canvas) follows:

  1. Controller apps/api/src/modules/canvas/canvas.controller.ts receives HTTP.
  2. Calls CanvasService (apps/api/src/modules/canvas/canvas.service.ts), which invokes Prisma via prisma.service (77 modules import this hub).
  3. If file assets are needed, object-storage/backend/fs.ts reads/writes the filesystem and updates staticFile rows.
  4. For embeddings, provider.service.ts selects a model and may call external vector APIs (7 functions make outbound network calls overall).

The import graph shows 39 circular dependencies, the largest hub being prisma.service.ts (77 inbound imports, 0 outbound). Such a hub carries a high blast radius: any change to DB schema or Prisma client ripples through most API modules. The most crowded files (provider.service.ts, canvas.service.ts, misc.service.ts) each exceed 1 200 lines, indicating high cognitive load.

How To Use It

# Clone the repo
git clone https://github.com/moses-y/VibeWorkflowPlatform
cd VibeWorkflowPlatform

# Install dependencies (pnpm is the declared manager)
pnpm install

# Build and run the API locally (Dockerfile present)
docker build -t vibe-api -f apps/api/Dockerfile .
docker run -p 3000:3000 --env-file apps/api/.env.example vibe-api

Configuration – copy apps/api/.env.example to apps/api/.env.development (contains JWT secret, Stripe key, etc.) and adjust values for your environment. The same applies to apps/web/.env.example for the front‑end.

Running the UI – build the web container similarly (apps/web/Dockerfile) and expose port 4000, then navigate to http://localhost:4000.

If you prefer a local Node run, execute the NestJS bootstrap script:

pnpm --filter api run start:dev   # inferred from package.json scripts

(Exact npm scripts are not listed; the Dockerfile is the reliable entry point.)

Real‑World Use

A content creator wants to auto‑publish blog posts to Medium after generating an outline with GPT‑4. They add two nodes: “Generate Outline” (LangChain agent) and “Publish to Medium” (HTTP tool). When the canvas runs, the API routes the request through tool.service.ts, stores the generated markdown via object-storage, and calls Medium’s API in a single transaction, all visible on the canvas for pause/review.

Code Health & Issues

  • Critical – Rotate credentials in apps/api/.env.development; remove the file from the repo.
  • High – Pin GitHub Actions to commit SHAs (.github/workflows/*).
  • High – Remove the committed .env and replace with an example.
  • High – Add a test step to CI (.github/workflows/*).
  • Medium – Enable Dependabot (.github/dependabot.yml).
  • Medium – Pin Docker base images by digest (apps/api/Dockerfile).
  • Medium – Add a dependency‑vulnerability scan to CI.
  • Medium – Add a pre‑commit secret‑scan hook.
  • Medium – Set persist-credentials: false on checkout (deploy-test.yml).
  • Medium – Run container as non‑root (apps/api/Dockerfile).

The repo includes 57 test files, but the CI workflows never invoke them. Documentation is extensive (≈ 400 Markdown files) and a license is present, yet secret‑shaped files and unpinned actions expose production risk.

The Bottom Line

The platform offers a functional visual AI workflow engine with a clear separation of front‑end canvas and back‑end services, but core modules are oversized and tightly coupled, making maintenance risky. Immediate remediation of secret handling, CI test execution, and dependency pinning is required before using this codebase in production. Suitable for teams that can invest in refactoring and security hardening.