The Next-Generation Multi-LLM, Node-Based Workflow Platform
Features β’ Quick Start β’ Documentation β’ Architecture β’ Contributing
Flopods empowers AI power users, developers, and researchers by providing an infinite, node-based canvas for building, managing, and executing complex AI workflows. It eliminates subscription overload, context fragmentation, and workflow inefficiencies by unifying multiple Large Language Models (LLMs) into a single, visual interface.
- β Unified Multi-LLM Interface: Connect OpenAI, Anthropic, Google Gemini, and more in one workflow
- β Visual Workflow Builder: Drag-and-drop canvas for AI workflow orchestration
- β Open Source First: Self-hostable with LocalStack for local AWS emulation
- β Production Ready: Built with enterprise-grade architecture and best practices
- β Document Intelligence: Advanced OCR, PDF parsing, and RAG (Retrieval-Augmented Generation)
- β Real-time Collaboration: WebSocket-powered live updates for teams
This project is built with a cutting-edge, production-ready stack:
- Framework: NestJS (TypeScript) for robust, scalable APIs
- Database: PostgreSQL with Prisma ORM + pgvector for embeddings
- Cache & Queue: Redis (BullMQ) for background job processing
- AWS Services: S3, DynamoDB, SES (via LocalStack for local dev)
- Authentication: JWT + OAuth (Google, GitHub)
- AI/ML: Google Gemini API, Tesseract.js OCR, PDF parsing
- Framework: React 18 + TypeScript + Vite
- Canvas: React Flow for node-based workflow visualization
- Styling: Tailwind CSS 4.x
- State Management: Context API + React Query
- Real-time: Socket.IO client
- Monorepo: Turborepo with intelligent caching and parallel execution
- Container Runtime: Docker or Podman (configurable per OS)
- Code Quality: ESLint, Prettier, Husky pre-commit hooks
flopods/
β
βββ apps/
β βββ backend/ # NestJS API server
β β βββ src/
β β β βββ common/ # Shared modules (AWS, Queue, Guards, Filters)
β β β βββ v1/ # API v1 (Auth, Workspaces, Documents, Flows)
β β β βββ prisma/ # Prisma client
β β βββ dist/ # Production build
β β
β βββ frontend/ # React + Vite application
β βββ src/
β β βββ components/
β β βββ pages/
β β βββ hooks/
β β βββ lib/
β βββ dist/ # Production build
β
βββ packages/
β βββ schema/ # Prisma schema and database client
β βββ tsconfig/ # Shared TypeScript configurations
β βββ eslint-config/ # Shared ESLint configurations
β
βββ docker/
β βββ db-docker-compose.yaml # PostgreSQL + pgvector
β βββ redis-docker-compose.yaml # Redis for queues
β βββ localstack-docker-compose.yaml # Local AWS emulation
β
βββ setup.sh # Linux/macOS setup script
βββ setup.bat # Windows setup script
βββ .env.example # Environment template for contributors
βββ turbo.json # Turborepo configuration
- Node.js: >= 20.0.0
- Yarn: >= 4.0.0 (automatically installed via Corepack)
- Docker or Podman: For running PostgreSQL, Redis, and LocalStack
.\setup.bat # Uses Docker (default)
.\setup.bat podman # Uses Podmanchmod +x setup.sh
./setup.sh # Uses Docker (default)
./setup.sh podman # Uses PodmanThe setup script will automatically:
- β Validate Node.js & Docker/Podman installation
- β
Install dependencies (
yarn install) - β
Create
.envfile from.env.example - β Start containerized services (PostgreSQL, Redis, LocalStack)
- β Generate Prisma client
- β Run database migrations
- β Prompt to seed pricing models (optional)
- β Start development servers
git clone https://github.com/yourusername/flopods.git
cd flopodsyarn installcp .env.example .envDefault configuration works out-of-the-box for local development!
# Using Docker (default)
yarn docker:dev
# Using Podman
yarn podman:devThis starts:
- PostgreSQL with pgvector on port
5434 - Redis on port
6379 - LocalStack (AWS emulation) on port
4566
yarn db:migrate:deploycd packages/schema
yarn add -D tsx
cd ../..
yarn db:seed:pricingyarn devThis starts both frontend and backend concurrently:
- Frontend: http://localhost:5173
- Backend: http://localhost:8000
Open your browser and navigate to http://localhost:5173 π
| Command | Description |
|---|---|
yarn dev |
Start both frontend and backend in dev mode |
yarn dev:backend |
Start backend only |
yarn dev:frontend |
Start frontend only |
yarn build |
Build all packages for production |
yarn lint |
Lint all code |
yarn lint:fix |
Fix linting issues automatically |
yarn type-check |
Run TypeScript type checking |
yarn format |
Format all code with Prettier |
yarn test |
Run all tests |
| Command | Description |
|---|---|
yarn db:generate |
Generate Prisma Client after schema changes |
yarn db:migrate |
Create and apply database migrations |
yarn db:push |
Push schema changes to database (dev) |
yarn db:studio |
Open Prisma Studio (database GUI) |
yarn db:seed:pricing |
Seed LLM pricing models (21 models) |
yarn db:reset |
Reset database ( |
| Command | Description |
|---|---|
yarn docker:dev |
Start all services (DB, Redis, LocalStack) |
yarn docker:dev:down |
Stop all services |
yarn docker:dev:clean |
Stop and remove all volumes ( |
yarn docker:db:up |
Start PostgreSQL only |
yarn docker:redis:up |
Start Redis only |
yarn docker:localstack:up |
Start LocalStack only |
yarn docker:localstack:logs |
View LocalStack logs |
First, install podman-compose:
pip3 install podman-compose| Command | Description |
|---|---|
yarn podman:dev |
Start all services (DB, Redis, LocalStack) |
yarn podman:dev:down |
Stop all services |
yarn podman:dev:clean |
Stop and remove all volumes ( |
yarn podman:db:up |
Start PostgreSQL only |
yarn podman:redis:up |
Start Redis only |
yarn podman:localstack:up |
Start LocalStack only |
yarn podman:localstack:logs |
View LocalStack logs |
| Command | Description |
|---|---|
yarn clean |
Remove build artifacts and node_modules |
yarn reinstall |
Clean install all dependencies |
yarn check |
Run type-check, lint, and format checks |
yarn fix |
Auto-fix linting and formatting issues |
- β Monorepo Architecture: Turborepo with intelligent caching
- β Type Safety: Full TypeScript coverage across frontend and backend
- β Visual Workflow Builder: React Flow for node-based canvas
- β Multi-LLM Support: OpenAI, Anthropic, Google Gemini integration
- β Document Intelligence: PDF parsing, OCR, RAG system with pgvector
- β Real-time Collaboration: WebSocket-powered live updates
- β Background Processing: BullMQ for document processing queues
- β Local AWS Emulation: LocalStack for S3, DynamoDB, SES
- β OAuth Integration: Google and GitHub authentication
- β Magic Link Auth: Passwordless email authentication
- β 21 LLM Models Pre-configured: OpenAI, Claude, Gemini pricing & capabilities
- β Production-Ready: ESLint, Prettier, Husky configured
- β Database Migrations: Prisma for schema management
- β Hot Reload: Fast development with Vite and NestJS watch mode
- β One-Command Setup: Automated setup script for all OS
- β
Environment Management: Secure
.envconfiguration with proxy support
apps/backend/src/
βββ common/ # Shared modules
β βββ aws/ # AWS services (S3, DynamoDB, SES)
β βββ decorators/ # Custom decorators (auth, pagination)
β βββ filters/ # Exception filters
β βββ guards/ # Auth guards (JWT, OAuth)
β βββ interceptors/ # Response transformation
β βββ queue/ # Queue abstraction (Redis/SQS)
β βββ websocket/ # WebSocket gateway
β
βββ v1/ # API Version 1
β βββ auth/ # Authentication (JWT, OAuth, Magic Link)
β βββ workspaces/ # Workspace management
β βββ flows/ # Workflow canvas
β βββ documents/ # Document processing & RAG
β βββ pods/ # Workflow nodes
β βββ users/ # User management
β
βββ prisma/ # Database client
Core Entities:
- Users β Workspaces (1:N with roles)
- Workspaces β Flows (1:N)
- Flows β Pods (1:N, canvas nodes)
- Workspaces β Documents (1:N with RAG)
- Documents β DocumentChunks (1:N with embeddings)
- Documents β DocumentCosts (1:N for billing)
- ModelPricingTier (21 LLM models with real October 2025 pricing)
- PostgreSQL: Primary database with pgvector extension
- DynamoDB: Pod state, execution history, context chains
- S3: File storage (documents, images, exports)
- Redis: Queue management, caching
Upload β Validate β Queue (BullMQ) β Process (OCR/PDF) β Chunk β Embed (Gemini) β Store (pgvector) β Search
# Run all tests
yarn test
# Run tests in watch mode
yarn test:watch
# Generate coverage report
yarn test:cov
# E2E tests (backend only)
yarn test:e2eyarn buildOutput locations:
- Backend:
apps/backend/dist/ - Frontend:
apps/frontend/dist/
Deploy apps/frontend/dist/ to static hosting:
- Vercel:
vercel deploy - Netlify: Drag & drop
dist/folder - AWS S3 + CloudFront:
aws s3 sync dist/ s3://your-bucket
Deploy apps/backend/dist/ to Node.js runtime:
- AWS EC2: Copy
dist/and runnode main.js - Docker: Build container with NestJS runtime
- Render/Railway: Connect GitHub repository
Environment Variables: Configure DATABASE_URL, JWT_*, and real AWS credentials in your hosting dashboard.
yarn db:migrate:deploy- Turborepo Documentation
- NestJS Documentation
- React Flow Documentation
- Prisma Documentation
- LocalStack Documentation
We welcome contributions from the community! Here's how to get started:
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes and commit:
git commit -m 'Add amazing feature' - Push to your fork:
git push origin feature/amazing-feature - Open a Pull Request
- Follow existing code style (ESLint + Prettier)
- Write tests for new features
- Update documentation as needed
- Keep commits atomic and descriptive
Before submitting a PR, run:
yarn check # Type-check + lint + formatMIT License - see LICENSE file for details
Zahid Khan (@zahidkhandev)
- Turborepo for monorepo tooling
- NestJS for backend framework
- React Flow for canvas visualization
- Prisma for database ORM
- LocalStack for local AWS emulation
Built with β€οΈ using Turborepo, NestJS, React, and Prisma
β Star this repo if you find it useful!