Skip to content

moazzam-07/DialerJazz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

77 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
DialerJazz Logo

DialerJazz

Open-Source Power Dialer β€” Tinder for Sales Calls

MIT License PRs Welcome React Node.js TypeScript

Features β€’ Quick Start β€’ Architecture β€’ API β€’ Docker β€’ Contributing


🌟 The Pitch

DialerJazz is the world's most beautiful open-source Power Dialer. It completely reimagines the outbound sales experience by replacing boring spreadsheet-like UIs with a gamified workflow featuring an unmatched premium design.

Three distinct calling modes:

  • πŸ”₯ Tinder Mode: Rapidly swipe through leads with our signature gamified UI.
  • ⚑ Power Mode: Automated, high-velocity sequential dialing to maximize connect rates.
  • πŸ“ž Normal Mode: Traditional, controlled single-dial workflows with a premium facelift.

DialerJazz offers universal connectivityβ€”hook into Telnyx, Twilio, or any custom WebRTC provider out of the box.

✨ Features

Category Details
Dialer Tinder-style swipe UI, power dialing, manual dialer, WebRTC calls via Telnyx
CRM Lead management, CSV import, company/contact tracking, disposition workflow
Campaigns Create campaigns, assign leads, track progress, filter by status
Auth Email/password, Google OAuth, email verification with OTP, password recovery
Dashboard Real-time stats, campaign overview table, quick actions
Pagination Server-side offset pagination across all list endpoints with standardized meta
UI/UX KokonutUI dark theme, collapsible sidebar, Framer Motion animations, responsive
Infra Docker-ready, rate limiting, Zod validation, centralized error handling

πŸš€ Quick Start

Prerequisites

Installation

# 1. Clone
git clone https://github.com/moazzam-07/DialerJazz.git
cd DialerJazz

# 2. Install all dependencies (client + server)
npm run install:all

# 3. Configure environment
cp .env.example .env
# Edit .env with your InsForge and Telnyx credentials

# 4. Run the full stack (client on :5173, server on :3001)
npm run dev

Environment Variables

Variable Required Description
INSFORGE_API_KEY βœ… InsForge admin API key (server-side)
INSFORGE_BASE_URL βœ… InsForge project URL
INSFORGE_ANON_KEY βœ… InsForge anonymous/public key
VITE_INSFORGE_BASE_URL βœ… Same URL, baked into client at build time
VITE_INSFORGE_ANON_KEY βœ… Same anon key, baked into client
VITE_API_URL β€” API base URL (defaults to /api)
JWT_SECRET βœ… Secret for JWT token verification
FRONTEND_URL β€” CORS allowed origin (defaults to http://localhost:5173)
PORT β€” Server port (defaults to 3001)

πŸ— Architecture

DialerJazz/
β”œβ”€β”€ client/                     # React 19 + Vite + TypeScript
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ components/         # UI components (ShadCN, custom)
β”‚   β”‚   β”‚   β”œβ”€β”€ ui/             # Reusable UI primitives
β”‚   β”‚   β”‚   └── layout/         # Dashboard layout, sidebar
β”‚   β”‚   β”œβ”€β”€ hooks/              # Custom hooks (usePagination, etc.)
β”‚   β”‚   β”œβ”€β”€ contexts/           # Auth context provider
β”‚   β”‚   β”œβ”€β”€ lib/                # API client, utilities, InsForge SDK
β”‚   β”‚   └── pages/              # Route-level page components
β”‚   └── tailwind.config.js
β”‚
β”œβ”€β”€ server/                     # Express + TypeScript
β”‚   └── src/
β”‚       β”œβ”€β”€ routes/             # REST API route handlers
β”‚       β”‚   β”œβ”€β”€ campaigns.ts    # CRUD + server-side pagination
β”‚       β”‚   β”œβ”€β”€ leads.ts        # CRM + bulk import + pagination
β”‚       β”‚   β”œβ”€β”€ calls.ts        # Call logging + stats + pagination
β”‚       β”‚   β”œβ”€β”€ settings.ts     # User settings (Telnyx config)
β”‚       β”‚   └── telnyx.ts       # WebRTC token generation
β”‚       β”œβ”€β”€ middleware/         # Auth, error handling
β”‚       β”œβ”€β”€ services/           # Business logic
β”‚       └── index.ts            # Express + Socket.io entry point
β”‚
β”œβ”€β”€ Dockerfile                  # Multi-stage production build
└── .env.example                # Environment template

Tech Stack

Layer Technology
Frontend React 19, TypeScript, Vite, Tailwind CSS 3.4, Framer Motion, ShadCN/Radix
Backend Node.js 22, Express, TypeScript, Zod, Socket.io
Database PostgreSQL via InsForge (PostgREST API)
Auth InsForge Auth (email/password, Google OAuth, OTP verification)
Calling Telnyx WebRTC SDK
Deployment Docker (multi-stage), any cloud provider

πŸ“‘ API Reference

All list endpoints support server-side offset pagination with standardized responses.

Pagination

GET /api/campaigns?page=2&per_page=10

Response format:

{
  "data": [...],
  "meta": {
    "total": 142,
    "page": 2,
    "per_page": 10,
    "total_pages": 15
  }
}

Endpoints

Method Endpoint Description
GET /api/campaigns?page=&per_page= List campaigns (paginated)
GET /api/campaigns/:id Get single campaign
POST /api/campaigns Create campaign
PATCH /api/campaigns/:id/status Update campaign status
PATCH /api/campaigns/:id/rename Rename campaign
DELETE /api/campaigns/:id Delete campaign
GET /api/leads?page=&per_page= List all CRM leads (paginated)
GET /api/leads/campaign/:id Leads by campaign
POST /api/leads/bulk Bulk CSV import
POST /api/leads/assign Assign leads to campaign
PATCH /api/leads/:id/disposition Update lead disposition
GET /api/calls?page=&per_page= List call logs (paginated)
POST /api/calls/log Log a completed call
GET /api/calls/stats Aggregated call statistics
GET /api/settings Get user settings
PUT /api/settings Update settings
POST /api/telnyx/token Generate WebRTC token
GET /api/health Health check

🐳 Docker

# Build
docker build \
  --build-arg VITE_INSFORGE_BASE_URL=https://your-app.region.insforge.app \
  --build-arg VITE_INSFORGE_ANON_KEY=your-anon-key \
  -t dialerjazz .

# Run
docker run -d \
  -p 3001:3001 \
  -e INSFORGE_API_KEY=your-api-key \
  -e INSFORGE_BASE_URL=https://your-app.region.insforge.app \
  -e INSFORGE_ANON_KEY=your-anon-key \
  -e JWT_SECRET=your-secret \
  dialerjazz

The Docker image uses a multi-stage build:

  1. Stage 1 (Builder): Installs dependencies, builds client with Vite (VITE_ vars baked in)
  2. Stage 2 (Production): Copies server source + built client, runs via tsx for ESM support

The server serves the built client as static files and proxies /api/* to the Express backend.

🀝 Contributing

We love contributions! Whether it's adding new features, fixing bugs, or improving documentation, check out our Contributing Guide.

Please ensure you adhere to our Code of Conduct.

πŸ›‘οΈ Security

If you discover a security vulnerability, please consult our Security Policy for reporting guidelines.

πŸ“„ License

DialerJazz is open-sourced software licensed under the MIT License.

About

Open-source Power Dialer with a premium UI, automated power dialing, tinder style dialing mode, and universal WebRTC/Twilio connectivity

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors