Inspiration
Nexmo is awesome. But sending a reminder to hundreds of your customers at the same time can be painful and slow.
I created NexBlast as this was a problem I was facing myself at my startup. We send reminders to our opt-in customers on Sunday night. Because SMS has a 1 text per second limit, our web server would take over 10 minutes to process around 500 customers.
What it does
NexBlast solves this problem by parallel blasting your customers. Its a dead simple SMS dashboard that can blast SMS to a list of numbers and see instant feedback with the magic of PubNub.
How I built it
I used Nexmo for the core SMS sending API. I used PubNub for instant feedback to the administrator as SMS are being sent out in parallel.
Details: The settings and list of recipient numbers are sent to PHP backend using AJAX, which then splits the lists evenly among the Nexmo sending numbers, and then uses multiple processes in parallel using Guzzle to send texts robustly with a 1.1 second gap between texts from the same number. After each successful text submission, the PubNub channel being listened to by the web page is notified. The page shows in realtime how many of the total recipients have been sent to.
Tech: Nexmo SMS API, Pubnub PHP SDK, Pubnub JS library (multiple channels), Guzzle PHP HTTP framework for multi-processing, HTML5
Challenges I ran into
Parallel processing in PHP. Had to research and found the awesome Guzzle library to do multi-processing without threads!
Accomplishments that I'm proud of
Cool-looking instant feedback to the admin on SMS as they are being sent out! Saved N multiple of time by using multiple numbers. Now 600 texts just takes 1 minute with 10 sender numbers configured!
What I learned
What's next for NexBlast
Build it into a service that others can use easily. Ability to store Nexmo config, provide an API to pull customer recipient phone numbers. I think a lot of people could use this instead of coding their own parallelizing system. Ideally Nexmo would build this into the core Nexmo API :-)


Log in or sign up for Devpost to join the conversation.