Skip to content



Repository files navigation


A live poll Next.js application built with Supabase, Twilio, and Hookdeck.

supapoll-localhost-vote.mp4 is deployed to Vercel.


  1. Signup for Supabase.

  2. Install the Supabase CLI and login with supabase login

  3. Create a new Supabase project using the Supabase CLI and enter details as prompted:

    supabase projects create
  4. Open the project URL and add the appropriate values to a .env file:

  5. Link your Supabase project locally by running supabase link, selecting the project, and entering the database password you used when running supabase projects create.

  6. Run supabase db push to run the migrations on the remote database.

  7. Set up GitHub Login for the project by following the Supabase GitHub login guide

  8. Set up Twilio Verify by following the Twilio Verify Supabase phone provider guide

  9. Set the Twilio environment variables:

  10. Buy at least one phone number from Twilio to allow you to vote via SMS.

  11. Update the environmental variable with one or more comma-separated phone numbers:

  12. Signup for Hookdeck, grab your project's API Key and signing secret from the secrets section, and add the following environment variables:

  13. Install the application dependencies:

    npm i
  14. Run the Hookdeck setup script to create a connection in Hookdeck to receive Twilio SMS webhooks and update the Twilio phone numbers to use that URL for inbound SMS webhooks:

    npm run setup
  15. Install the Hookdeck CLI, run hookdeck login.

  16. Run the Hookdeck CLI to tunnel webhooks from Hookdeck to your localhost:

    hookdeck listen 8080 twilio-messaging

Run SupaPoll

npm run dev

Open http://localhost:8080 with your browser to see the result.


To update the Supabase type definitions, run:

npx supabase gen types typescript --project-id "$PROJECT_REF" --schema public > lib/types/supabase.ts

See the Supabase docs for Generating TypeScript Types.

Learn More

To learn more about the technologies used in this application: