Skip to content
dragosrotaruPublic

About

Website visitors text a business through an embeddable widget; replies route back by SMS via Twilio number pairing. TypeScript, fp-ts, React.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

433 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ping

Website visitors text a business; the business replies from its own phone.

Ping is a SaaS product made of three pieces:

  • an embeddable contact widget that any website can add with one script tag
  • an SMS relay that connects each visitor to the business through Twilio
  • an admin dashboard where businesses manage widgets, contacts, conversations, billing and analytics

client.ping.buzz: Netlify Status admin.ping.buzz: Netlify Status

How it works

  1. A business signs up, creates a widget in the dashboard and pastes the snippet into its site.
  2. A visitor opens the widget, leaves a name and phone number, and writes a message.
  3. Ping texts the message to the business from a Twilio number paired with that visitor. When the business replies to that number, the reply is routed back to the visitor's phone. Each side sees an ordinary text thread and neither has to install anything.
  4. Every message is stored as a conversation in the dashboard, alongside widget analytics and Stripe billing.

Highlights

Packages

Package What it is
core Domain model and use cases: accounts, authentication, widgets, contacts, conversations, SMS, billing, analytics
api Node.js server wiring the core to Twilio, Stripe, SendGrid, Firestore, HTTP and WebSockets
client Embeddable widget and SDK served from client.ping.buzz
admin React dashboard served from admin.ping.buzz

Stack

TypeScript (Node.js and React) in a Lerna monorepo; fp-ts and io-ts; Google Cloud Datastore/Firestore and Redis; Twilio, Stripe and SendGrid; Netlify for the client and admin, and a Google Cloud VM for the API.

Setup

  • Install Node.js, npm and Redis.
  • Run npm run bootstrap in the project root.
  • Add .env files in packages/api, packages/client and packages/admin as described in each package's README.

Run

  • Start Redis.
  • Run npm start in the project root, or inside a single package.

Deployment

  • api: deployed manually to the Google Cloud VM.
  • client and admin: deployed automatically by Netlify on every push to master.

About

Website visitors text a business through an embeddable widget; replies route back by SMS via Twilio number pairing. TypeScript, fp-ts, React.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages