My first post on dev.to, and fist ever hackathon!
I'm a tinkerer and builder, and I went as far as founding + raising money for a startup via one project. Moreover, I believe the future of business communications is evolving from websites (2000s), to mobile apps (2010s), and to text/chat (2020s). This is my first time playing with Twilio API in depth and I'm excited to dig in.
I started out brainstorming an ambitious project of text/chat for local businesses to interact with consumers, so businesses don't have to invest in costly websites/mobile apps to go digital (think restaurants take-outs, coffee shops order-aheads). Especially in covid-19 world, local businesses are even more dependent on take-outs via phone, deliveries, and "non-physical" channels.
However, the project has been reduced in scope to a simple to-do or grocery list for this hackathon. This will serve as a platform for anything that requires a list, like menu items, order list, grocery list, etc.
- Sign up
- Add items
- Remove items
- Show items
- Manage multiple lists
Share/collaborate list with friends/family (if time allows)
- (Edit 4/29): Invite via vcard / MMS
Text "hi" to 616.344.5566
Edit (4/13): Deployed to AWS EBS and "hi" in the cloud! Do note that EBS is a bit janky with Rails 6, so I wrestled with it a bit. Might go with a container next time.
Edit (4/18): All commands on screens below should work. Looking forward to some feedback!
Edit (4/20): Code includes Rails 6 app and Twilio Studio Flow exports. Setup instructions in
My current stack:
- Twilio SMS API
- Twilio Studio Flow + API
- Rails 6
- Postgres 12
I had planned to use AWS Lambda instead of Rails, but struggled to get Ruby running on Lambda and talking to RDS. Having built my last startup in Rails, I'm able to get a Rails app running 100x faster than Lambda :). Also, I get flexibility to create a UI if needed.
I ran into a few limitations (features?) with Studio Flow.
- Studio Flow only allows one flow tied to one (to many) phone number(s). This means I cannot "modularize" and create multiple flows based on trigger keywords. For example, I'd like "Add" to trigger one flow, and "Remove" to trigger another.
- I also discovered the value of Send & Wait for Reply widget in Studio. While I attempted to ditch Studio altogether, I thought
it was quite a bit of work to build capabilities that saves a state of a request and wait for x hours to pick up the workflow.Edit (4/23): Pro tip: State can be maintained by using cookies!
- Because of the first limitation, I either have to build a single Flow that has 5+ branches (more when I want to expand on trigger keywords), or I have to handle the trigger keywords parsing myself. Good thing is that I can trigger a Flow via REST API, so I went with handling my own keyword-trigger management.
Edit (4/18): Just posted a second post with more details on managing Flows.