{"id":29016396,"url":"https://github.com/satvikpraveen/task-manager-pro","last_synced_at":"2026-05-07T00:33:35.037Z","repository":{"id":301039955,"uuid":"1007978218","full_name":"SatvikPraveen/task-manager-pro","owner":"SatvikPraveen","description":"🎯 Task Manager PRO — A fully modular, object-oriented Python CLI application for managing tasks. Features user login, due-date reminders (with optional email alerts), verbose task reporting, decorators, type hints, unit tests with pytest, and a Docker-ready structure for production-grade deployment.","archived":false,"fork":false,"pushed_at":"2025-07-28T01:51:53.000Z","size":106,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-28T03:34:17.991Z","etag":null,"topics":["argparse","cli","context-manager","cron","decorators","docker","dotenv","json-storage","modular-architecture","mypy","object-oriented","open-source","pip-installable","productivity-tool","pytest","python","reminder-app","task-manager","task-manager-app","type-hinting"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SatvikPraveen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-24T20:42:13.000Z","updated_at":"2025-07-28T01:51:56.000Z","dependencies_parsed_at":"2025-06-24T21:42:40.137Z","dependency_job_id":"010322a9-2782-4f58-9434-ef7c9e1c5ba7","html_url":"https://github.com/SatvikPraveen/task-manager-pro","commit_stats":null,"previous_names":["satvikpraveen/task-manager-pro"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SatvikPraveen/task-manager-pro","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SatvikPraveen%2Ftask-manager-pro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SatvikPraveen%2Ftask-manager-pro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SatvikPraveen%2Ftask-manager-pro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SatvikPraveen%2Ftask-manager-pro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SatvikPraveen","download_url":"https://codeload.github.com/SatvikPraveen/task-manager-pro/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SatvikPraveen%2Ftask-manager-pro/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274231435,"owners_count":25245585,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["argparse","cli","context-manager","cron","decorators","docker","dotenv","json-storage","modular-architecture","mypy","object-oriented","open-source","pip-installable","productivity-tool","pytest","python","reminder-app","task-manager","task-manager-app","type-hinting"],"created_at":"2025-06-25T22:08:12.291Z","updated_at":"2026-05-07T00:33:35.029Z","avatar_url":"https://github.com/SatvikPraveen.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📝 Task Manager PRO — Production-Grade Task Management System\n\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n[![Python](https://img.shields.io/badge/Python-3.10%2B-darkgreen.svg)](https://www.python.org/)\n[![FastAPI](https://img.shields.io/badge/FastAPI-0.100%2B-009688.svg)](https://fastapi.tiangolo.com/)\n[![SQLAlchemy](https://img.shields.io/badge/SQLAlchemy-2.0%2B-red.svg)](https://www.sqlalchemy.org/)\n[![Tests](https://img.shields.io/badge/Tests-20%2F20%20Passing-brightgreen.svg)](./tests/)\n[![CI/CD](https://img.shields.io/badge/CI%2FCD-GitHub%20Actions-2088FF.svg)](https://github.com/features/actions)\n[![Docker Ready](https://img.shields.io/badge/Docker-Ready-blueviolet.svg)](https://www.docker.com/)\n[![Security](https://img.shields.io/badge/Security-Hardened-critical.svg)](#-security-features)\n[![Type Hints](https://img.shields.io/badge/Type%20Hints-Mypy-informational.svg)](http://mypy-lang.org/)\n\n**Task Manager PRO** is a **production-grade distributed task management system** combining a Python CLI tool with a modern REST API.  \nIt demonstrates mastery of full-stack development: SQLAlchemy ORM, FastAPI REST endpoints, JWT authentication, comprehensive testing, and CI/CD automation.\n\n---\n\n## 🚀 Major Features\n\n### 🌐 REST API (Phase 3)\n\n- **17 Production-Ready Endpoints** across 3 resource types\n- JWT Bearer Token Authentication\n- Full pagination support (skip/limit)\n- Automatic OpenAPI/Swagger documentation\n- CORS middleware enabled\n\n### 🔐 Security \u0026 Authentication (Phase 2)\n\n- bcrypt password hashing (12-round salting)\n- JWT token generation and validation\n- User isolation (tasks scoped by user)\n- Pydantic v2 input validation\n- Environment variable credential management\n\n### 📊 Database Layer (Phase 2)\n\n- SQLAlchemy ORM with SQLite/PostgreSQL support\n- User and Task models with relationships\n- Automatic timestamp tracking\n- Query optimization with indexes\n- Migration utilities for data portability\n\n### ✅ Testing \u0026 Quality (Phase 4)\n\n- 15 comprehensive API integration tests\n- 4+ unit tests for core functionality\n- Full test isolation with database cleanup\n- 100% passing test suite (20/20 ✅)\n- GitHub Actions CI/CD pipeline\n\n### 💻 CLI Tool (Original)\n\n- User login system\n- Add/Update/Delete/List tasks\n- Mark tasks completed\n- Task filtering and summaries\n- JSON-based storage\n- Email reminders via SMTP\n- CRON automation support\n\n---\n\n## 🛠️ Technology Stack\n\n| Layer             | Technology                         |\n| ----------------- | ---------------------------------- |\n| **API Framework** | FastAPI 0.100+, Uvicorn            |\n| **Database**      | SQLAlchemy 2.0+, SQLite/PostgreSQL |\n| **Security**      | bcrypt, PyJWT, Pydantic v2         |\n| **Testing**       | pytest, pytest-cov                 |\n| **DevOps**        | GitHub Actions, Docker             |\n| **CLI**           | argparse, python-dotenv            |\n| **Python**        | 3.10, 3.11, 3.12                   |\n\n---\n\n## 🚀 Quick Start\n\n### Via REST API (Recommended)\n\n```bash\n# Install dependencies\npip install -r requirements.txt\n\n# Start the development server\nuvicorn task_manager_pro.api.main:app --reload\n\n# Access documentation\n# - Interactive Docs: http://localhost:8000/docs\n# - ReDoc: http://localhost:8000/redoc\n```\n\n### Via CLI\n\n```bash\npip install -e .\ntask-manager login --username \u003cusername\u003e\ntask-manager add-task --title \"My Task\" --due 2025-12-31\n```\n\n---\n\n## 📚 Documentation\n\n- **[QUICKSTART.md](./QUICKSTART.md)** - Get started with the API in 5 minutes\n- **[IMPLEMENTATION_SUMMARY.md](./IMPLEMENTATION_SUMMARY.md)** - Complete project overview\n- **[docs/PHASE2_DATABASE_SECURITY.md](./docs/PHASE2_DATABASE_SECURITY.md)** - Database architecture\n- **[docs/PHASE3_REST_API.md](./docs/PHASE3_REST_API.md)** - API reference with examples\n- **[docs/PHASE4_TESTING_CI_CD.md](./docs/PHASE4_TESTING_CI_CD.md)** - Testing infrastructure\n\n---\n\n## 📦 Project Architecture\n\n```\ntask_manager_pro/\n├── api/                     # REST API Layer (Phase 3)\n│   ├── main.py             # FastAPI app with 17 endpoints\n│   ├── dependencies.py     # JWT auth \u0026 dependency injection\n│   └── routes/\n│       ├── auth.py         # Authentication endpoints\n│       ├── tasks.py        # Task CRUD operations\n│       └── users.py        # User management\n├── storage/                # Data Persistence (Phase 2)\n│   ├── database.py         # SQLAlchemy setup\n│   ├── models.py           # ORM entities (User, Task)\n│   ├── sql_storage.py      # SQL implementation\n│   ├── json_storage.py     # Original JSON storage\n│   ├── interface.py        # Storage abstraction\n│   └── migration.py        # Data migration utilities\n├── schemas/                # Validation (Phase 2)\n│   ├── user.py            # User request/response schemas\n│   └── task.py            # Task request/response schemas\n├── services/               # Business Logic\n│   └── task_manager.py    # Core task operations\n├── models/                 # Domain Models\n│   ├── task.py\n│   └── user.py\n├── utils/                  # Utilities\n│   ├── security.py        # bcrypt, JWT, password hashing\n│   ├── decorators.py\n│   ├── emailer.py         # SMTP integration\n│   ├── logger_context.py\n│   └── session.py\n├── cli.py                  # CLI entrypoint (argparse)\n└── send_reminders.py       # Reminder automation\n\ntests/                      # Test Suite (Phase 4)\n├── test_api.py            # 15 API integration tests ✅\n├── test_tasks.py          # Task unit tests\n├── test_users.py          # User model tests\n└── test_email.py          # Email utility tests\n\n.github/workflows/          # CI/CD Pipeline (Phase 4)\n└── ci-cd.yml              # GitHub Actions workflow\n\ndocs/                       # Documentation\n├── PHASE2_DATABASE_SECURITY.md\n├── PHASE3_REST_API.md\n└── PHASE4_TESTING_CI_CD.md\n\n.env.template              # Environment variables template\ndockerfile                 # Container image\nrequirements.txt           # Dependencies\nrequirements_dev.txt       # Dev dependencies\npyproject.toml            # Project config \u0026 CLI registration\n```\n\n**Key Design Patterns:**\n\n- **Layered Architecture:** Routes → Validation → Services → Storage → Database\n- **Dependency Injection:** FastAPI dependencies for auth and storage\n- **Abstract Interfaces:** StorageInterface supports multiple backends\n- **Security-First:** JWT tokens, bcrypt hashing, Pydantic validation\n\n---\n\n## 🌐 REST API Usage\n\n### Start the Server\n\n```bash\nuvicorn task_manager_pro.api.main:app --reload\n```\n\nAccess interactive docs: http://localhost:8000/docs\n\n### Register \u0026 Login\n\n```bash\n# Register\ncurl -X POST http://localhost:8000/api/auth/register \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"username\": \"john_doe\",\n    \"email\": \"john@example.com\",\n    \"password\": \"secure_password_123\"\n  }'\n\n# Login\ncurl -X POST http://localhost:8000/api/auth/login \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"username\": \"john_doe\",\n    \"password\": \"secure_password_123\"\n  }'\n```\n\n### Create \u0026 Manage Tasks\n\n```bash\nTOKEN=\"your_jwt_token\"\n\n# Create task\ncurl -X POST http://localhost:8000/api/tasks \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"title\": \"Buy groceries\",\n    \"description\": \"Milk, bread, eggs\",\n    \"due_date\": \"2025-12-31\",\n    \"priority\": \"high\"\n  }'\n\n# List tasks (paginated)\ncurl -X GET \"http://localhost:8000/api/tasks?skip=0\u0026limit=10\" \\\n  -H \"Authorization: Bearer $TOKEN\"\n\n# Update task\ncurl -X PUT http://localhost:8000/api/tasks/{task_id} \\\n  -H \"Authorization: Bearer $TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"completed\": true}'\n\n# Delete task\ncurl -X DELETE http://localhost:8000/api/tasks/{task_id} \\\n  -H \"Authorization: Bearer $TOKEN\"\n```\n\nFor complete API examples, see [QUICKSTART.md](./QUICKSTART.md)\n\n---\n\n## 💻 CLI Tool Usage\n\n### Installation\n\n```bash\npip install -e .\n```\n\n### Commands\n\n```bash\n# Login\ntask-manager login --username \u003cusername\u003e\n\n# Add task\ntask-manager add-task --title \u003ctitle\u003e --desc \u003cdescription\u003e --due \u003cyyyy-mm-dd\u003e\n\n# List tasks\ntask-manager list-tasks --filter all --verbose\n\n# Mark completed\ntask-manager complete-task --id \u003ctask_id\u003e\n\n# Delete task\ntask-manager delete-task --id \u003ctask_id\u003e\n\n# Toggle email reminders\ntask-manager toggle-email-reminders\n\n# Logout\ntask-manager logout\n```\n\n---\n\n## 🧪 Testing\n\nRun the comprehensive test suite:\n\n```bash\n# All tests (20/20 passing)\npytest tests/ -v\n\n# With coverage report\npytest tests/ --cov=task_manager_pro\n\n# Specific test file\npytest tests/test_api.py -v\n\n# Specific test\npytest tests/test_api.py::test_create_task_authenticated -v\n```\n\n**Test Coverage:**\n\n- 15 API integration tests (authentication, CRUD, pagination)\n- 4+ unit tests (task models, user models)\n- 100% test isolation with fresh database per test\n- Full authentication flow testing\n- Error case and edge case coverage\n\n---\n\n## 🔐 Security Features\n\n### Authentication\n\n- JWT Bearer tokens with HS256 encryption\n- 30-minute token expiration (configurable)\n- Secure token refresh endpoint\n- User isolation on all operations\n\n### Password Security\n\n- bcrypt hashing with 12-round salting\n- Never stored in plain text\n- Secure comparison to prevent timing attacks\n\n### Input Validation\n\n- Pydantic v2 schema validation on all endpoints\n- Email format validation\n- Username and password constraints\n- Type checking and automatic coercion\n\n### Credential Management\n\n- All secrets use environment variables\n- `.env.template` for safe configuration\n- `.env` excluded from git via `.gitignore`\n- Database passwords in connection strings\n\n### Deployment Security\n\n- Hardened `.gitignore` (databases, keys, secrets excluded)\n- No sensitive data in git history\n- Docker image security best practices\n- GitHub Actions secrets for CI/CD\n\nFor detailed security audit, see git commit: `7f49c77`\n\n---\n\n## 📧 Email Reminders Setup (Optional)\n\n### Gmail Configuration\n\n1. Enable App Passwords: https://myaccount.google.com/apppasswords\n2. Create `.env` file:\n\n```env\nEMAIL_USER=your_email@gmail.com\nEMAIL_PASS=your_app_password_here\nSMTP_SERVER=smtp.gmail.com\nSMTP_PORT=587\n```\n\n3. Toggle reminders:\n\n```bash\ntask-manager toggle-email-reminders\n```\n\n### CRON Automation (macOS/Linux)\n\n```bash\ncrontab -e\n\n# Add this line to run daily at 9:00 AM:\n0 9 * * * /bin/bash -c 'source /path/to/venv/bin/activate \u0026\u0026 python /path/to/task_manager_pro/send_reminders.py'\n```\n\n---\n\n## 🐳 Docker Usage\n\n### Build Image\n\n```bash\ndocker build -t task-manager-pro:latest .\n```\n\n### Run Container\n\n```bash\ndocker run -p 8000:8000 \\\n  -e DATABASE_URL=\"sqlite:///./tasks.db\" \\\n  -e SECRET_KEY=\"your-secret-key\" \\\n  task-manager-pro:latest\n```\n\n### With PostgreSQL\n\n```bash\ndocker run -p 8000:8000 \\\n  -e DATABASE_URL=\"postgresql://user:password@postgres:5432/taskdb\" \\\n  -e SECRET_KEY=\"your-secret-key\" \\\n  task-manager-pro:latest\n```\n\n---\n\n## 📈 Development Roadmap\n\n### Completed ✅\n\n- **Phase 1:** Branch consolidation and analysis\n- **Phase 2:** Database (SQLAlchemy) \u0026 Security (JWT, bcrypt)\n- **Phase 3:** REST API with FastAPI (17 endpoints)\n- **Phase 4:** Testing (20 tests) \u0026 CI/CD (GitHub Actions)\n\n### Upcoming 🚀\n\n- **Phase 5:** Advanced features (tags, categories, subtasks, time tracking)\n- **Phase 6:** Web UI (React/Vue) \u0026 monitoring (logging, APM)\n\n---\n\n## 💡 Skills Demonstrated\n\n### Backend Development\n\n- **FastAPI \u0026 REST APIs** - 17 production endpoints\n- **SQLAlchemy ORM** - Relational database modeling\n- **JWT Authentication** - Secure token-based auth\n- **Pydantic Validation** - Type-safe input/output\n- **Python CLI** - argparse command-line tools\n\n### Security \u0026 DevOps\n\n- **Password Hashing** - bcrypt with salting\n- **Credential Management** - Environment variables\n- **Git Security** - Sensitive data exclusion\n- **Docker** - Container orchestration\n- **GitHub Actions** - CI/CD automation\n\n### Testing \u0026 Quality\n\n- **pytest Framework** - Unit and integration tests\n- **Test Fixtures** - Database cleanup and isolation\n- **API Testing** - Full endpoint coverage\n- **Coverage Reports** - Code quality metrics\n\n### Software Engineering\n\n- **Layered Architecture** - Clean separation of concerns\n- **Design Patterns** - Dependency injection, factories\n- **SOLID Principles** - Single responsibility, interfaces\n- **Code Organization** - Modular, scalable structure\n\n---\n\n## 🚀 Deployment\n\n### Environment Variables Required\n\n```env\nDATABASE_URL=postgresql://user:password@localhost/taskdb\nSECRET_KEY=your-secret-key-change-in-production\nJWT_ALGORITHM=HS256\nJWT_EXPIRATION_HOURS=0.5\nDEBUG=False\n```\n\n### Production Deployment\n\n1. Set environment variables in hosting platform\n2. Use PostgreSQL for production database\n3. Set `DEBUG=False` in production\n4. Enable HTTPS only\n5. Use GitHub Secrets for CI/CD credentials\n\n---\n\n## 🧰 Development Notes\n\n- All code includes type hints for IDE support\n- Modular architecture enables easy testing and maintenance\n- Abstraction via `StorageInterface` supports multiple backends\n- Clean OOP design with composition and proper encapsulation\n- Fully documented with docstrings and comments\n\n## 🙋 Contributing\n\nFeel free to fork, enhance, and submit a pull request.\nTo suggest features or report bugs, open an issue.\n\n---\n\n## 📜 License\n\nThis project is licensed under the [GNU General Public License v3.0](https://www.gnu.org/licenses/gpl-3.0). See the [LICENSE](./LICENSE) file for more details.\n\n---\n\n## 🧠 Author\n\nBuilt with ❤️ by [Satvik Praveen](https://github.com/SatvikPraveen)\n\n---\n\n## ⭐️ Star this repo if you found it helpful\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsatvikpraveen%2Ftask-manager-pro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsatvikpraveen%2Ftask-manager-pro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsatvikpraveen%2Ftask-manager-pro/lists"}