"Task manager" is an automation tool that manages your tasks, exports them as a PDF, and uploads the report to an AWS S3 bucket every day at a scheduled time using GitHub Actions.
You must clone this project using the web URL and save it in your own Github repository for the GitHub Actions to work.
β
Add Tasks β Store tasks with due dates
β
List Tasks β Show pending and completed tasks
β
Complete Tasks β Mark tasks as done
β
Delete Tasks β Remove tasks when no longer needed
β
Data Persistence β Save tasks in a JSON file
β
Web UI - For visualization and live updates via page reload
β
PDF Export β Automatically export a PDF and uploads it to an AWS S3 bucket at a specific time
TaskManagerApp
βββ .github/
β βββ workflow/
β βββ export-and-push.yml # Export PDF and upload to a S3 bucket
βββ task_manager/
βββ app.py # Main Flask app
βββ export_tasks.py # Export tasks as PDF
βββ upload_to_s3.py # Upload PDF to a S3 bucket
βββ requirements.txt # Requirements file
βββ reports/
β βββ tasks_report.pdf # PDF tasks report
βββ routes/
β βββ task_routes.py # Task-related routes
βββ utils/
β βββ task_manager.py # Task loading & saving logic
βββ templates/
β βββ index.html # HTML for visualization
βββ static/
β βββ style.css # CSS style
βββ tasks.json # Stores tasks
- At e.g. 00:00 UTC daily
- GitHub Actions pulls the latest version of your repository
- Runs export_tasks.py β generates tasks_report_DATE.pdf
- Runs upload_pdf_to_s3.py β uploads the PDF to your AWS S3 bucket
- Push your latest tasks.json to GitHub
- Go to GitHub β "Actions tab" β "Export Tasks and Upload to S3"
- Click βRun workflowβ, it will run the full pipeline and upload the PDF
- Create an AWS S3 Bucket:
- Go to "AWS S3 Console" β "Create bucket"
- Fill Name(e.g. tasks-pdf-storage), Region and uncheck Block all public access only if you want public files
- Click "Create bucket"
- Create an IAM User for uploading:
- Go to "IAM" β "Users"
- Add user: tasks-pdf-bot
- Attach policy: Use AmazonS3FullAccess (for testing) Or create a custom policy for limited access
- Click "Create user"
- Create Access key for new user:
- Click the user you created β "Security credentials" β "Access keys" β "Create Access key"
- Choose "Third-party service" β Next β "Create access key"
- Save the Access Key ID and Secret Access Key
- Add GitHub Secrets in your repository :
- Go to your "GitHub" repository β "Settings" β "Secrets" β "Actions"
- Click "New repository secret"
- Add:
- AWS_ACCESS_KEY_ID : Your Access Key ID
- AWS_SECRET_ACCESS_KEY : Your Secret Access Key
- AWS_REGION : e.g. us-east-2
- S3_BUCKET_NAME : e.g. tasks-pdf-storage
Change schedule time in workflow export-and-push.yml before you start.
1οΈβ£ Clone this project using the web URL and also save it in your own Github repository.
2οΈβ£ Run: pip install -r task_manager/requirements.txt
3οΈβ£ Start the server with: python3 task_manager/app.py
