A simple web-based task reminder application built with Flask that sends email notifications for due tasks.
Code and documentation was solely generated/written by cursor :)
- Add, complete, and delete tasks
- Email notifications for due tasks
- Clean web interface
- SQLite database storage
-
Clone the repository:
-
Create and activate a virtual environment:
On macOS/Linux:
python -m venv venv
source venv/bin/activateOn Windows:
python -m venv venv
venv\Scripts\activate- Install required packages:
pip install -r requirements.txt- Copy the example environment file:
cp .env.example .env- Edit
.envfile with your settings:
SECRET_KEY=your-secret-key-here
MAIL_USERNAME=your-gmail@gmail.com
MAIL_PASSWORD=your-gmail-app-password
MAIL_DEFAULT_SENDER=your-gmail@gmail.com
- Go to your Google Account settings
- Enable 2-Step Verification if not already enabled
- Generate an App Password:
- Go to Security → App passwords
- Select "Mail" and your device
- Click "Generate"
- Use the generated 16-character password as your
MAIL_PASSWORDin.env
task_reminder/
│
├── app/ # Application package
│ ├── __init__.py # Flask app initialization
│ ├── config.py # Configuration settings
│ ├── database.py # Database operations
│ ├── email_service.py # Email notification service
│ ├── models.py # Data models
│ ├── routes.py # URL routes and views
│ └── static/ # Static files (CSS, JS)
│
├── templates/ # HTML templates
│ ├── base.html # Base template
│ └── tasks/
│ └── index.html # Main task view
│
├── instance/ # Instance-specific files
├── tests/ # Test files
├── .env # Environment variables
├── .gitignore # Git ignore rules
├── requirements.txt # Project dependencies
└── run.py # Application entry point
- Make sure your virtual environment is activated:
On macOS/Linux:
source venv/bin/activateOn Windows:
venv\Scripts\activate- Start the development server:
python run.py- Open your web browser and navigate to:
http://localhost:5000
- Fill in the "Add New Task" form:
- Title (required)
- Description (optional)
- Due Date (required)
- Click "Add Task"
- To mark a task as complete: Click the "Complete" button
- To delete a task: Click the "Delete" button
- Tasks are automatically sorted by due date
- Completed tasks are visually distinguished
- You will receive email notifications for tasks that are due
- Notifications include task title, description, and due date
- Emails are sent from the configured Gmail account
- SQLite database is used for storage
- Database file is created at
instance/tasks.db - Tables are automatically created on first run
- Templates use Jinja2 templating engine
- Base template provides common structure
- Task template extends base template
- CSS styles are in
app/static/css/style.css - JavaScript files can be added in
app/static/js/
- Verify Gmail app password is correct
- Ensure 2-Step Verification is enabled
- Check spam folder for notifications
- If database errors occur, try deleting
instance/tasks.db - Restart application to recreate database
- Check if port 5000 is available
- Ensure virtual environment is activated
- Verify all dependencies are installed
- Fork the repository
- Create a feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Flask framework and community
- Python community
- All contributors to this project