Skip to content

asmsaifs/flash-chat

Repository files navigation

FlashChat

FlashChat Banner

AI-powered chat marketing platform. Multi-channel inbox, visual flow builder, broadcast campaigns, and OpenRouter AI — built as a ManyChat alternative.

Features

  • Multi-channel inbox — Web Widget, WhatsApp, Telegram, Facebook Messenger, Instagram DM
  • Visual flow builder — drag-and-drop automation with React Flow; trigger, message, condition, delay, user-input, live-chat, and AI nodes
  • Broadcast campaigns — scheduled bulk messaging with per-contact variable substitution
  • AI reply suggestions — RAG-powered suggestions via OpenRouter (default: anthropic/claude-sonnet-4-6, swappable per workspace)
  • Contacts — tag filtering, CSV import, subscribe/unsubscribe, custom fields
  • Analytics — message volume (30-day), channel breakdown, subscriber growth

Tech Stack

Layer Tech
Monorepo Turborepo + pnpm
Frontend Next.js 15, Tailwind, shadcn/ui, React Flow, TanStack Query, Recharts
Backend Fastify, Prisma, BullMQ, Socket.io
Database PostgreSQL (pgvector extension)
Cache / Queue Redis (ioredis)
Auth Clerk
AI OpenRouter (OpenAI-compatible)
Payments Stripe

Project Structure

flashchat/
├── apps/
│   ├── api/          # Fastify API server
│   └── web/          # Next.js frontend
├── packages/
│   ├── database/     # Prisma schema + migrations
│   └── shared/       # Shared TypeScript types, Zod schemas, constants
├── docker-compose.yml
└── turbo.json

Getting Started

Prerequisites

  • Node.js ≥ 20
  • pnpm ≥ 9
  • PostgreSQL with pgvector extension
  • Redis

Setup

  1. Clone and install

    git clone <repo-url>
    cd flashchat
    pnpm install
  2. Configure environment

    cp apps/api/.env.example apps/api/.env
    cp apps/web/.env.example apps/web/.env.local

    Fill in all required values (see .env.example files for reference).

  3. Run database migrations

    pnpm --filter @flashchat/database db:migrate
  4. Start development servers

    pnpm dev
    • Web: http://localhost:3000
    • API: http://localhost:4000

Web Widget Embed

Get the embed code from the Channels page in your dashboard, or use:

<script
  src="http://localhost:3000/widget.js"
  data-channel="<channelId>"
  data-api="http://localhost:4000"
></script>

Environment Variables

API (apps/api/.env)

Variable Description
DATABASE_URL PostgreSQL connection string
REDIS_URL Redis connection string
CLERK_SECRET_KEY Clerk backend secret
OPENROUTER_API_KEY OpenRouter API key
STRIPE_SECRET_KEY Stripe secret key
STRIPE_WEBHOOK_SECRET Stripe webhook signing secret
STRIPE_PRICE_PRO_MONTHLY Stripe price ID for Pro plan
STRIPE_PRICE_BUSINESS_MONTHLY Stripe price ID for Business plan
STRIPE_PRICE_AGENCY_MONTHLY Stripe price ID for Agency plan
SUPER_ADMIN_USER_IDS Comma-separated Clerk user IDs for super admin access

Web (apps/web/.env.local)

Variable Description
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY Clerk publishable key
CLERK_SECRET_KEY Clerk backend secret
NEXT_PUBLIC_API_URL API base URL
NEXT_PUBLIC_SUPER_ADMIN_USER_IDS Comma-separated Clerk user IDs for admin UI

Available Scripts

pnpm dev          # Start all apps in dev mode
pnpm build        # Build all apps
pnpm typecheck    # TypeScript check across monorepo
pnpm lint         # Lint all packages
pnpm db:migrate   # Run Prisma migrations
pnpm db:seed      # Seed database
pnpm db:generate  # Regenerate Prisma client
pnpm format       # Format all files with Prettier

License

Apache 2.0 — see LICENSE.

About

AI-powered chat marketing platform. Multi-channel inbox (WhatsApp, Telegram, Messenger, Instagram, Web Widget), visual flow builder, broadcast campaigns, and OpenRouter AI.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors