I need a system that stores text message, voice mail, or email reminders until they are ready to be sent. When they are ready to be sent, text messages and voicemail messages will be sent using Twilio and email will be sent using Mandrill. Reminders will be submitted from another app via JSON web request and they need to be store in a mysql database until it is time for them to be sent.
The JSON will contain a sender store name (char 50), a phone number (char 10), a date (char 10), a time (char 10), a reminder type ('text','email', or 'voicemail'), the message if its a text or email, or the name of the prerecorded message if its voicemail, and some kind of key verifying they are a valid sender.
The reminder submission should be validated and if it passes validation, store all information passed in mysql and return the ID of the stored record. If it does not pass validation, it should return an error. Should be a valid date, time, phone, number, and message type, and a valid sender key.
I also need an http JSON interface to be able to delete by ID.
the system should poll every five minutes and send the reminders out when they are due. on successful sends it should store a confirmation in mysql for the reminder, or an error message if the send fails. If the failure responds with an error that indicates the message should be retried, then it should retry.
I also need a simple management interface to be able to login and view/edit/delete reminders manually if needed.
I would like the system to be written in php using the laravel framework and its ORM, Eloquent. I would like the management interface's UI to use bootstrap for its elements.