⛰️ProjectsSmsbb

✨ DIY sms announce lists for you and yours ✨

smsbb repo


maren and dani ruin everything

trying to map the program

  • dynamo

    • opt in table: phone numbers

    • opt out table: phone numbers

    • blessed email table: emails of people who can log in and send messages to everyboby

    • out-message table: table of all messages ever sent out on the list

someone messages the number to subscribe, what happens?

  • their sms message goes to aws

  • an sns topic receives the message and pushes to sqs

  • that sqs push triggers a lambda to run

  • lambda reads the message and parses the keywords

    • if no keyword match, send HELP info

    • if SUBSCRIBE keyword match, add to sub list then remove from unsub list

    • if UNSUBSCRIBE, put in unsub list then remove from sub list

the announcer wants to send a message, what happens

  • they go to a url (crazy lambda url)

  • they get a login page, they type their email

    • if it's not blessed email, nothing happens

    • if it's blessed email, they receive magic link at email

      • rust lambda creates magic link

      • send it with ses

      • they click the link

      • they're at the page where they type the message

      • a lambda serves the page from s3

      • form submit sends POST to lamda

      • lambda sends message to topic that all subs are subbed to

        • DO PRE-FLIGHT SUBSCRIPTION CHECKS ON THE TOPIC

      • UX thought: throw some kind of warning after clicking send that's like "you are about to send an SMS message to N people. this will cost approximately N dollars. are you sure?"

what's up with scheduled messages?

the point of this is to make it less likely that announcers start getting filtered by carriers for sending campaign messages outside work hours (see best practices link above)

  • each message has a date/time picker

  • constrain date/time picker somehow

  • cron it with lambda

what's the add announcer flow

  • unaddressed

managing spam login attempts

  • gonna cross our fingers about it