Lyco a.k.a. MassTextMachine is a web app for sending SMS messages to a large batch of recipients (mass texting). It requires an account with the SMS service provider Twilio.
The web server is written in the Ruby language and requires a Redis database.
Download Ruby 2.7.0. Ruby works on Windows, but works better on Linux and macOS.
Set up or provision a Redis server.
Download this repository and install the RubyGem bundle.
git clone firstname.lastname@example.org:jackwillis/lyco.git cd lyco bundle install
- Run the web server with
bundle exec rackup. The command must be run with these environment variables set:
||Twilio Account SID|
||Twilio Auth Token|
||Your Twilio phone number. In development, use
||HTTP Basic Auth username for your lyco instance (this is a single-user app)|
||HTTP Basic Auth password|
||URL of your Redis instance, e.g.
||(optional) The name of your instance, e.g.
- To make use of the auto-reply/forwarding feature,
make sure your web server is publicly accessible and using HTTPS.
Set your Twilio "Inbound Request Config" setting to
Development and testing
This app uses the Sinatra web framework and is structured kind of like a Rails app.
RSpec tests cover most of the server code:
bundle exec rspec
Run the Ruby linter:
bundle exec rubocop
npm install and run:
npm run test
- Re-do activity logging
- Store activity logs in a database
- Use AJAX polling to update activity log view
- Get rid of dependency on sinatra-websocket
- Change unsubscribe behavior
- Don't forward
- Store list of unsubscribed users in a database
- Don't try to send messages to unsubscribed users (wastes money)
- Don't forward
Get rid of dependency on jQuery
- Write full RSpec coverage
- Pass RuboCop and standard lints
- Write tests for JS
- Improve authentication
Dependencies and licenses
Copyleft 🄯 2017–2020 Jack Willis
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.