A comprehensive task scheduling and management system for ALPS Residency Madurai that sends automated email reminders twice daily and provides a Progressive Web App (PWA) interface for viewing and managing tasks.
- Automated email reminders sent at 7:00 AM IST and 7:00 PM IST
- Email includes:
- Tasks scheduled for the current day (grouped by department)
- Complete weekly schedule
- Supports multiple scheduling frequencies:
- Daily
- Weekly
- Monthly
- Quarterly
- Half-Yearly
- Yearly
- Hot-reload CSV file without application restart
- Sends emails to: [email protected]
- RESTful endpoints for task retrieval
- Filter tasks by:
- Date
- Week
- Month
- Quarter
- Half-Year
- Year
- Department
- Hot-reload CSV file support
- CORS enabled for PWA access
- Modern, responsive user interface
- View tasks by:
- Daily
- Weekly
- Monthly
- Quarterly
- Half-Yearly
- Yearly
- Filter by department
- Date picker for custom date selection
- Offline-capable Progressive Web App
- Mobile-friendly design
- Backend: Spring Boot 3.2.0 (Java 17)
- Frontend: React 18 (Create React App)
- Containerization: Docker & Docker Compose
- Data Source: CSV file (Scheduler-Master.csv)
- Email: Spring Boot Mail (SMTP)
alps-scheduler/
├── batch-app/ # Spring Boot Batch Application
│ ├── src/
│ ├── Dockerfile
│ └── pom.xml
├── api-app/ # Spring Boot REST API
│ ├── src/
│ ├── Dockerfile
│ └── pom.xml
├── pwa-app/ # React PWA
│ ├── src/
│ ├── public/
│ ├── Dockerfile
│ ├── nginx.conf
│ └── package.json
├── Scheduler-Master.csv # Task data source
├── docker-compose.yml # Docker orchestration
├── .env.example # Environment variables template
└── README.md
- Docker and Docker Compose installed
- For email functionality: Gmail account with App Password (or other SMTP server)
cd /home/alpandy/al/ai-experiment/projects/alps-schedulerCreate a .env file based on .env.example:
cp .env.example .envEdit .env and add your email credentials:
MAIL_USERNAME=[email protected]
MAIL_PASSWORD=your-app-passwordTo generate a Gmail App Password:
- Go to your Google Account settings
- Navigate to Security > 2-Step Verification
- Scroll to "App passwords"
- Generate a new app password for "Mail"
- Use this password in the .env file
The Scheduler-Master.csv file should be in the project root directory. This file contains all task scheduling information.
docker-compose up --buildThis will:
- Build all three applications
- Start the containers
- Mount the CSV file as a shared volume
- Set up networking between containers
Once running, access the applications at:
- PWA (Frontend): http://localhost:3000
- REST API: http://localhost:8080/api
- Batch App: http://localhost:8081 (background service)
GET /api/tasks/today- Get tasks for todayGET /api/tasks/date/{date}- Get tasks for specific date (format: YYYY-MM-DD)GET /api/tasks/week- Get tasks for current weekGET /api/tasks/week/{date}- Get tasks for week containing the dateGET /api/tasks/month/{year}/{month}- Get tasks for specific monthGET /api/tasks/quarter/{year}/{quarter}- Get tasks for quarter (1-4)GET /api/tasks/half-year/{year}/{half}- Get tasks for half-year (1-2)GET /api/tasks/year/{year}- Get tasks for entire yearGET /api/tasks/range?start={date}&end={date}- Get tasks for date rangeGET /api/tasks/department/{department}- Get all tasks for a departmentGET /api/tasks/departments- Get list of all departments
To update tasks without restarting the applications:
- Edit the
Scheduler-Master.csvfile - Save the file
- Wait 1-2 seconds for automatic reload
- Both API and Batch applications will pick up the changes automatically
The Scheduler-Master.csv file has the following columns:
- Activity: Task name/description
- Dept: Department responsible (MEP, HouseKeeping, FrontOffice, FnB, Gardening)
- Frequency: How often (Daily, Weekly, Monthly, Quarterly, Half-Yearly, Yearly)
- NoOfTimes: Number of times per period (e.g., 2 for twice per week)
- Specific Dates: Exact dates for yearly tasks (e.g., "October 1")
- Comments: Additional scheduling notes (e.g., "First day of every month")
The batch application runs two scheduled jobs:
- Morning Job: 7:00 AM IST (1:30 AM UTC)
- Evening Job: 7:00 PM IST (1:30 PM UTC)
Each email includes:
- Tasks for the current day (grouped by department)
- Complete task schedule for the entire week
docker-compose downTo remove volumes as well:
docker-compose down -vAPI Application:
cd api-app
mvn spring-boot:runBatch Application:
cd batch-app
mvn spring-boot:runPWA Application:
cd pwa-app
npm install
npm start- Verify
.envfile has correct credentials - Check if 2-Step Verification is enabled for Gmail
- Ensure App Password is generated (not regular password)
- Check batch-app logs:
docker logs alps-scheduler-batch
- Wait 1-2 seconds after saving
- Check application logs for reload messages
- Verify file path in docker-compose.yml
- Ensure API is running: http://localhost:8080/api/tasks/today
- Check browser console for errors
- Verify CORS is enabled in API
If ports 3000, 8080, or 8081 are already in use, modify the port mappings in docker-compose.yml:
ports:
- "3001:80" # Change 3000 to 3001The system supports the following departments:
- MEP (Mechanical, Electrical, Plumbing)
- HouseKeeping
- FrontOffice
- FnB (Food & Beverage)
- Gardening
Proprietary - ALPS Residency Madurai
For issues or questions, contact the IT team at ALPS Residency Madurai.