A secure, modular Java web app to manage tasks, track deadlines, and send automated reminders.
Built for real-world productivity, designed with good coding practices.
- 🔐 Secure Authentication using BCrypt
- 📋 CRUD for tasks with priority, type, tags, and checklist
- ⏰ Email reminders (1 hour before deadline) via multithreaded scheduler
- 📊 Dynamic JSTL-based dashboard
- 🔍 Filter tasks by type with color coding
- 📅 Planned integration with FullCalendar.js
- 🔒 Modular, scalable, and beginner-friendly codebase
| Layer | Technology |
|---|---|
| Backend | Java 17, Servlets, JSP 3.0, JSTL 2.0 |
| Frontend | HTML, Bootstrap 5.3, FullCalendar.js |
| Database | PostgreSQL 15 |
| Scheduling | Java ScheduledExecutorService |
| Auth | jBCrypt |
| JavaMail API | |
| Server | Apache Tomcat 10 |
| IDE | Eclipse IDE for Enterprise Java |
- Java 17
- Apache Tomcat 10
- PostgreSQL 15+
- Eclipse IDE for Enterprise Java
- Internet (for Bootstrap, FullCalendar CDN)
git clone https://github.com/<your-username>/TaskScheduler.git- Open the project in Eclipse as a Dynamic Web Project
- Add the following JARs to
WEB-INF/lib/:postgresql-42.6.0.jarjBCrypt-0.4.jarjavax.mail.jarjakarta.servlet.jsp.jstl-2.0.0.jar,standard.jar
- Configure
DBUtil.java:private static final String URL = "jdbc:postgresql://localhost:5432/taskscheduler"; private static final String USER = "your_db_user"; private static final String PASSWORD = "your_password";
- Start Tomcat and visit:
http://localhost:8080/TaskScheduler/login.jsp
-- Create test user
INSERT INTO users (username, email, password)
VALUES ('testuser', 'testuser@example.com', 'password123');
-- Add tasks
INSERT INTO tasks (user_id, title, description, due_date, type, priority, status, tags)
VALUES
(1, 'Doctor Appointment', 'Annual check-up', '2025-06-20 14:00:00', 'REMINDER', 'HIGH', 'PENDING', 'health,important'),
(1, 'Project Deadline', 'Phase 1 milestone', '2025-06-22 17:00:00', 'TASK', 'HIGH', 'PENDING', 'work,urgent'),
(1, 'Grocery Ideas', 'Try pesto pasta', '2025-06-25 18:00:00', 'IDEA', 'LOW', 'PENDING', 'cooking,home');TaskScheduler/
├── src/
│ └── main/java/com/taskscheduler/
│ ├── controller/ # Servlets
│ ├── dao/ # DAO classes
│ ├── model/ # POJOs
│ ├── util/ # Helpers (DBUtil, EmailService)
│ └── listener/ # Context listeners
├── webapp/
│ ├── WEB-INF/
│ │ ├── lib/ # External dependencies
│ │ └── web.xml # Deployment descriptor
│ └── views/ # JSP pages
| Feature | Status | Notes |
|---|---|---|
| Task CRUD | ✅ Done | Fully functional using JDBC |
| Email Scheduler | ✅ Done | Sends reminders 1 hour before due date |
| Calendar Integration | FullCalendar not rendering due to JSTL + LocalDateTime issues | |
| Mobile UI | Needs better responsive layout | |
| Login Feedback | Minimal user feedback on login failure |
- 📱 Fully mobile-responsive layout
- 📲 SMS reminders (Twilio)
- 📌 Drag-and-drop task reordering (Sortable.js)
- 🤖 AI-powered task suggestions
- 🗓️ Full interactive calendar editing
New to open source or Java web apps? We welcome beginners and experts alike!
Check out our CONTRIBUTING.md to learn:
- ✅ How to set up the project in Eclipse IDE for Enterprise Java
- ✅ Git basics with step-by-step visual resources
- ✅ Our code structure, style, and commit guidelines
- ✅ How to submit your first Pull Request with confidence
Developed by kawas8516
Open to contributions, ideas, and improvements. Fork it, build on it, and share back!
This project is licensed under the MIT License.
Free to use, fork, and modify for non-commercial and academic purposes — with attribution.