Create a Task Management API with robust features including:
- Automated Priority Management: Utilizes cron jobs to dynamically adjust task priorities based on their due dates according to a defined policy.
- Twilio Integration: Integrates with Twilio for voice call reminders based on user priority. Calls are made in ascending order of user priority (0 first, then 1, 2) when tasks become overdue, with safeguards to avoid calling subsequent users if a previous call is unanswered.
✅ API Security: Implements JWT authentication to ensure secure access to APIs.
✅ Input Validation: Validates user input for all API endpoints to prevent invalid data entry.
✅ Error Handling: Provides user-friendly error messages for all potential issues encountered during API calls.
-
Clone the repo:
git clone https://github.com/harshithvh/twilio-messenger.git
-
Open directory in terminal:
cd twilio-messenger -
Create a .env file:
MONGO_URI=mongodb://localhost:27017/{app} JWT_SECRET=JWT_SECRET_KEY WEBHOOK_API_KEY=WEBHOOK_API_KEY HOST_URL=NGROK_URL TWILIO_ACCOUNT_SID=YOUR_ACCOUNT_SID TWILIO_AUTH_TOKEN=YOUR_AUTH_TOKEN TWILIO_PHONE_NUMBER=YOUR_PHONE_NUMBER NODE_ENV=development -
Install project dependencies:
npm install
-
Fire up the server:
nodemon server.js
-
Access api at:
http://localhost:5000/
Click to expand!
- 📂
src- 📂
config- 📝
db.js
- 📝
- 📂
controller- 📝
subtask.controller.js - 📝
task.controller.js - 📝
user.controller.js
- 📝
- 📂
cron- 📝
makeCall.cron.js - 📝
priority.cron.js
- 📝
- 📂
middleware- 📝
auth.middleware.js - 📝
error.middleware.js - 📝
webhookAuth.middleware.js
- 📝
- 📂
models- 📝
subtask.model.js - 📝
task.model.js - 📝
user.model.js
- 📝
- 📂
routes- 📝
subtask.routes.js - 📝
task.routes.js - 📝
user.routes.js - 📝
webhook.routes.js
- 📝
- 📂
utils- 📝
generateJWT.util.js - 📝
getPriority.util.js - 📝
updateTask.util.js
- 📝
- 📝
server.js(Entrypoint)
- 📂