<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Malik Taimoor Awan</title>
    <description>The latest articles on DEV Community by Malik Taimoor Awan (@6t9).</description>
    <link>https://dev.to/6t9</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3674043%2F25a9bea9-2b93-4fd5-af43-6b3e332428ca.jpeg</url>
      <title>DEV Community: Malik Taimoor Awan</title>
      <link>https://dev.to/6t9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/6t9"/>
    <language>en</language>
    <item>
      <title>I Built a Free Cold Calling Dialer That Replaces $200/Month Software</title>
      <dc:creator>Malik Taimoor Awan</dc:creator>
      <pubDate>Thu, 30 Jul 2026 01:26:28 +0000</pubDate>
      <link>https://dev.to/6t9/i-built-a-free-cold-calling-dialer-that-replaces-200month-software-3j25</link>
      <guid>https://dev.to/6t9/i-built-a-free-cold-calling-dialer-that-replaces-200month-software-3j25</guid>
      <description>&lt;h1&gt;
  
  
  I Built a Free Cold Calling Dialer That Replaces $200/Month Software
&lt;/h1&gt;

&lt;p&gt;Most cold calling tools cost &lt;strong&gt;$50-200 per user per month&lt;/strong&gt;. I built one that's free, open-source, and runs in your browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;I was working with a small sales team that needed to make cold calls. They looked at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;RingCentral&lt;/strong&gt; — $30/user/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dialpad&lt;/strong&gt; — $25/user/month
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Five9&lt;/strong&gt; — $150+/user/month&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vicidial&lt;/strong&gt; — Free but requires a dedicated server and is ancient&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these fit their budget or needs. So I built &lt;strong&gt;Open Cold Dialer&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Does
&lt;/h2&gt;

&lt;p&gt;It's a full-featured cold calling CRM that runs in your browser:&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Features
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Browser Softphone&lt;/strong&gt; — Make calls directly from your browser using SIP.js&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Provider SIP&lt;/strong&gt; — Works with SignalWire, Telnyx, Twilio, or any SIP server&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lead Management&lt;/strong&gt; — Add leads manually or import from CSV&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Campaign Management&lt;/strong&gt; — Organize leads into campaigns&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Call Scripts&lt;/strong&gt; — Templates with objection handling responses&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Call History&lt;/strong&gt; — Track every call with outcome and notes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dashboard&lt;/strong&gt; — Real-time stats on your calling activity&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tech Stack
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Frontend:  React 18 + Vite + TypeScript + Tailwind CSS
Backend:   Express.js + SQLite (zero config!)
Auth:      JWT with bcrypt
SIP:       SIP.js (WebRTC)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Self-Hosted (Recommended)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/6t9xstar/Open-Cold-Dialer.git
&lt;span class="nb"&gt;cd &lt;/span&gt;Open-Cold-Dialer

&lt;span class="c"&gt;# Backend&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;backend
npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run seed  &lt;span class="c"&gt;# Loads 20 sample leads&lt;/span&gt;
npm run dev

&lt;span class="c"&gt;# Frontend (new terminal)&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;frontend
npm &lt;span class="nb"&gt;install
cp&lt;/span&gt; .env.example .env.local
npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open &lt;code&gt;http://localhost:3000&lt;/code&gt; and you're running.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Docker
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
docker compose &lt;span class="nb"&gt;exec &lt;/span&gt;backend npm run seed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. With Real SIP Calls
&lt;/h3&gt;

&lt;p&gt;Add your SIP provider credentials to &lt;code&gt;.env.local&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VITE_SIP_URI=sip:your-extension@your-domain.sip.signalwire.com
VITE_SIP_PASSWORD=your-password
VITE_SIP_WS_URL=wss://your-domain.sip.signalwire.com
VITE_SIP_CALLER_ID=+1XXXXXXXXXX
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The Architecture
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────┐
│                  Browser                     │
│  ┌─────────┐  ┌──────────┐  ┌───────────┐  │
│  │ React UI│  │ SIP.js   │  │ WebRTC    │  │
│  │         │  │ Client   │  │ Audio     │  │
│  └────┬────┘  └────┬─────┘  └─────┬─────┘  │
│       │            │              │         │
└───────┼────────────┼──────────────┼─────────┘
        │            │              │
   ┌────▼────┐  ┌────▼─────┐  ┌────▼─────┐
   │ Express │  │ SignalWire│  │ Browser  │
   │ API     │  │ / Telnyx  │  │ Mic      │
   │ (REST)  │  │ (SIP)     │  │          │
   └────┬────┘  └──────────┘  └──────────┘
        │
   ┌────▼────┐
   │ SQLite  │
   │ DB      │
   └─────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The key insight: &lt;strong&gt;SIP.js handles the telephony&lt;/strong&gt; directly from the browser. No need for a SIP server — just connect to your provider's WebSocket endpoint.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I Chose These Tools
&lt;/h2&gt;

&lt;h3&gt;
  
  
  SIP.js
&lt;/h3&gt;

&lt;p&gt;The library that makes browser-based calling possible. It handles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SIP registration&lt;/li&gt;
&lt;li&gt;Making/receiving calls&lt;/li&gt;
&lt;li&gt;Audio via WebRTC&lt;/li&gt;
&lt;li&gt;DTMF tones&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  SQLite
&lt;/h3&gt;

&lt;p&gt;Zero-config database. No PostgreSQL, no MySQL — just a file. Perfect for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Single-server deployments&lt;/li&gt;
&lt;li&gt;Easy backup (copy one file)&lt;/li&gt;
&lt;li&gt;No database admin needed&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Vite
&lt;/h3&gt;

&lt;p&gt;Blazing fast development. Hot module replacement means changes appear instantly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparison with Alternatives
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Open Cold Dialer&lt;/th&gt;
&lt;th&gt;RingCentral&lt;/th&gt;
&lt;th&gt;Vicidial&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Price&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Free&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$30/user/mo&lt;/td&gt;
&lt;td&gt;Free*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Self-hosted&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open Source&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Setup Time&lt;/td&gt;
&lt;td&gt;5 minutes&lt;/td&gt;
&lt;td&gt;30 minutes&lt;/td&gt;
&lt;td&gt;2+ hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UI&lt;/td&gt;
&lt;td&gt;Modern React&lt;/td&gt;
&lt;td&gt;Modern&lt;/td&gt;
&lt;td&gt;PHP (2005)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Browser-based&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lead Management&lt;/td&gt;
&lt;td&gt;Built-in&lt;/td&gt;
&lt;td&gt;Extra&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CSV Import&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Call Scripts&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Basic&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;*Vicidial is free but requires a dedicated server and is complex to set up.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;I'm working on these features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Audio device selector (choose mic/speaker)&lt;/li&gt;
&lt;li&gt;[ ] Call recording&lt;/li&gt;
&lt;li&gt;[ ] Parallel dialing (power dialer mode)&lt;/li&gt;
&lt;li&gt;[ ] Voicemail detection&lt;/li&gt;
&lt;li&gt;[ ] DNC list management&lt;/li&gt;
&lt;li&gt;[ ] AI call summaries&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try It Out
&lt;/h2&gt;

&lt;p&gt;The project is open-source and ready to use:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/6t9xstar/Open-Cold-Dialer" rel="noopener noreferrer"&gt;github.com/6t9xstar/Open-Cold-Dialer&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/6t9xstar/Open-Cold-Dialer.git
&lt;span class="nb"&gt;cd &lt;/span&gt;Open-Cold-Dialer/backend &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm run seed &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you find it useful, please give it a star on GitHub. It helps others discover the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Questions?
&lt;/h2&gt;

&lt;p&gt;Open an issue on GitHub or drop a comment below. I'm happy to help you set it up.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with React, TypeScript, SIP.js, and a lot of coffee.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
