{"id":30845458,"url":"https://github.com/victor-zarzar/task-tracker-api","last_synced_at":"2026-05-06T17:33:28.365Z","repository":{"id":296524216,"uuid":"993680554","full_name":"Victor-Zarzar/task-tracker-api","owner":"Victor-Zarzar","description":null,"archived":false,"fork":false,"pushed_at":"2025-08-22T12:35:52.000Z","size":39,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-22T14:43:41.774Z","etag":null,"topics":["docker","fastapi","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Victor-Zarzar.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-05-31T09:33:49.000Z","updated_at":"2025-08-22T12:35:49.000Z","dependencies_parsed_at":"2025-07-14T13:08:37.289Z","dependency_job_id":"92820c72-c023-4785-b63a-9cd4d1d2115f","html_url":"https://github.com/Victor-Zarzar/task-tracker-api","commit_stats":null,"previous_names":["victor-zarzar/task-tracker-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Victor-Zarzar/task-tracker-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Victor-Zarzar%2Ftask-tracker-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Victor-Zarzar%2Ftask-tracker-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Victor-Zarzar%2Ftask-tracker-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Victor-Zarzar%2Ftask-tracker-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Victor-Zarzar","download_url":"https://codeload.github.com/Victor-Zarzar/task-tracker-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Victor-Zarzar%2Ftask-tracker-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273974082,"owners_count":25200587,"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-06T02:00:13.247Z","response_time":2576,"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":["docker","fastapi","python"],"created_at":"2025-09-06T23:10:48.314Z","updated_at":"2026-05-06T17:33:28.359Z","avatar_url":"https://github.com/Victor-Zarzar.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\" id=\"header\"\u003e\n  Task Tracker API - Python FastAPI Application\n\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Python-3776AB?style=for-the-badge\u0026logo=python\u0026logoColor=white\" alt=\"Python\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/FastAPI-009688?style=for-the-badge\u0026logo=fastapi\u0026logoColor=white\" alt=\"FastAPI\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Docker-2496ED?style=for-the-badge\u0026logo=docker\u0026logoColor=white\" alt=\"Docker\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Pytest-0A9EDC?style=for-the-badge\u0026logo=pytest\u0026logoColor=white\" alt=\"Pytest\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/CI/CD-GitHub_Actions-2088FF?style=for-the-badge\u0026logo=github-actions\u0026logoColor=white\" alt=\"GitHub Actions\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Professional task management API built with FastAPI, featuring email notifications, Slack integration, rate limiting, and containerized deployment.\n\u003c/p\u003e\n\n---\n\n\u003ch2 id=\"stack\"\u003e\n  Tech Stack\n\u003c/h2\u003e\n\n\u003cp\u003e\n\u003cimg src=\"https://github.com/tandpfun/skill-icons/blob/main/icons/Python-Dark.svg\" width=\"48\" title=\"Python\"\u003e \n\u003cimg src=\"https://github.com/tandpfun/skill-icons/blob/main/icons/FastAPI.svg\" width=\"48\" title=\"FastAPI\"\u003e\n\u003cimg src=\"https://github.com/tandpfun/skill-icons/blob/main/icons/Docker.svg\" width=\"48\" title=\"Docker\"\u003e\n\u003c/p\u003e\n\n### Core Technologies\n\n- **Python 3.11+** - Modern Python with latest features\n- **FastAPI** - High-performance async web framework\n- **Docker** - Containerized deployment\n- **Pytest** - Comprehensive testing framework\n\n### Features \u0026 Integrations\n\n- **CORS Support** - Configurable cross-origin resource sharing\n- **Rate Limiting** - API endpoint protection and request throttling\n- **Email Notifications** - SMTP integration with configurable providers\n- **Slack Webhooks** - Real-time notifications to Slack channels\n- **Token Authentication** - Secure API access control\n- **Environment-based Configuration** - Separate dev/prod settings\n- **Logging** - Configurable log levels and monitoring\n- **Hot Reload** - Development mode with automatic code reloading\n\n---\n\n\u003ch2 id=\"prerequisites\"\u003e\n  Prerequisites\n\u003c/h2\u003e\n\nBefore starting, ensure you have the following installed:\n\n- [Docker](https://www.docker.com/) - Container platform\n- [Docker Compose](https://docs.docker.com/compose/) - Multi-container orchestration\n- [Make](https://www.gnu.org/software/make/) - Build automation\n- [Git](https://git-scm.com/) - Version control\n\n\u003e Optional: [Python 3.11+](https://www.python.org/) if you prefer running the app without Docker.\n\n---\n\n\u003ch2 id=\"installation\"\u003e\n  Installation \u0026 Setup\n\u003c/h2\u003e\n\n### 1. Clone the Repository\n\n```bash\ngit clone https://github.com/Victor-Zarzar/task-tracker-api\ncd task-tracker-api\n```\n\n### 2. Open in your editor\n\n```bash\nzed .   # Zed Editor\n```\n\n### 3. Environment Configuration\n\nCopy the example environment file and configure your credentials:\n\n```bash\ncp .env-example .env.dev\n```\n\n**Key configurations needed:**\n\n- **SMTP**: Email account and app password for notifications\n- **Slack**: [Webhook URL](https://api.slack.com/messaging/webhooks) for Slack integration\n- **Token**: Secure authentication token for API access\n\n\u003e **Important:** Never commit your `.env.dev` or `.env.prod` files to version control. They should be in `.gitignore`.\n\n### 4. Build Development Environment\n\n```bash\nmake build-dev\n```\n\n---\n\n\u003ch2 id=\"usage\"\u003e\n  Usage\n\u003c/h2\u003e\n\n### Available Commands\n\nView all available Make commands:\n\n```bash\nmake help\n```\n\n### Local Development\n\nStart the development server (port 8000):\n\n```bash\nmake up-dev\n```\n\nAccess the API at:\n\n- **API**: `http://localhost:8000`\n- **API Documentation**: `http://localhost:8000/docs`\n- **Alternative Docs**: `http://localhost:8000/redoc`\n\n### Docker Deployment\n\n#### Development Commands\n\n```bash\nmake gen-secret   # Generate a new token\nmake build-dev    # Build development Docker image\nmake up-dev       # Start development server with hot reload\nmake down-dev     # Stop development server\nmake logs-dev     # View development logs in real-time\nmake test         # Run tests with pytest\nmake format       # Format code with Ruff\nmake lint         # Lint code with pylint\n```\n\n#### Production Commands\n\n```bash\nmake up-prod      # Start production server\nmake down-prod    # Stop production server\nmake logs-prod    # View production logs\n```\n\n#### View Logs\n\n```bash\nmake logs-dev     # Development logs\nmake logs-prod    # Production logs\n```\n\nOr directly with Docker:\n\n```bash\ndocker logs -f task-tracker-api-dev\ndocker logs -f task-tracker-api-prod\n```\n\n---\n\n\u003ch2 id=\"makefile-commands\"\u003e\n  Makefile Commands Reference\n\u003c/h2\u003e\n\n| Command           | Description                                   |\n| ----------------- | --------------------------------------------- |\n| `make build-dev`  | Build development Docker image                |\n| `make up-dev`     | Start development server with hot reload      |\n| `make down-dev`   | Stop and remove development containers        |\n| `make logs-dev`   | Display development logs in real-time         |\n| `make up-prod`    | Start production server (detached mode)       |\n| `make down-prod`  | Stop and remove production containers         |\n| `make logs-prod`  | Display production logs in real-time          |\n| `make test`       | Run automated tests with pytest               |\n| `make format`     | Format code with Ruff                         |\n| `make lint`       | Lint code with pylint                         |\n| `make gen-secret` | Generate a new token                          |\n| `make help`       | Show all available commands with descriptions |\n\n```bash\nmake test\n```\n\nOr manually with Docker:\n\n```bash\ndocker-compose -f docker-compose.dev.yaml exec web pytest\n```\n\n### API Documentation\n\nFastAPI provides automatic interactive API documentation:\n\n- **Swagger UI**: `http://localhost:8000/docs`\n- **ReDoc**: `http://localhost:8000/redoc`\n\n---\n\n\u003ch2 id=\"project-structure\"\u003e\n  Project Structure\n\u003c/h2\u003e\n\n```\ntask-tracker-api/\n├── app/                        # Application code\n│   ├── main.py                 # FastAPI application entry point\n│   ├── routers/                # API route handlers\n│   ├── models/                 # Data models\n│   ├── services/               # Business logic\n│   └── utils/                  # Utility functions\n├── tests/                      # Test files\n│   ├── test_api.py             # API endpoint tests\n│   └── test_services.py        # Service layer tests\n├── docker-compose.dev.yaml     # Development configuration\n├── docker-compose.prod.yaml    # Production configuration\n├── Dockerfile                  # Docker image definition\n├── requirements.txt            # Python dependencies\n├── .env.example                # Environment variables template\n├── .env.dev                    # Development environment (not in git)\n├── .env.prod                   # Production environment (not in git)\n├── pyproject.toml              # Python project configuration\n├── Makefile                    # Build automation\n└── README.md                   # This file\n```\n\n---\n\n\u003ch2 id=\"code-quality\"\u003e\n  Code Quality \u0026 Formatting\n\u003c/h2\u003e\n\n### Ruff Configuration\n\nThis project uses [Ruff](https://docs.astral.sh/ruff/) for fast Python linting and code formatting. The configuration is defined in `pyproject.toml`:\n\n```toml\n[tool.ruff]\nline-length = 88\ntarget-version = \"py312\"\n\n[tool.ruff.format]\nquote-style = \"double\"\nindent-style = \"space\"\n\n[tool.ruff.lint]\nselect = [\"E\", \"W\", \"F\", \"I\", \"B\", \"UP\"]\nignore = [\"E501\"]\nfixable = [\"ALL\"]\nunfixable = []\n```\n\n**Configuration details:**\n\n- **Line length**: 88 characters (Black compatible)\n- **Target version**: Python 3.12\n- **Quote style**: Double quotes for strings\n- **Linting rules**:\n  - `E`, `W` - pycodestyle errors and warnings\n  - `F` - Pyflakes\n  - `I` - isort (import sorting)\n  - `B` - flake8-bugbear\n  - `UP` - pyupgrade (modern Python syntax)\n- **Ignored rules**: `E501` (line too long)\n\n### Running Code Quality Tools\n\nAll code quality tools run inside the Docker container:\n\n```bash\n# Format code with Ruff\nmake format\n\n# Lint code with pylint\nmake lint\n```\n\nOr directly with Docker Compose:\n\n```bash\n# Format code\ndocker compose -f docker-compose.dev.yaml exec web ruff format app\n\n# Lint code\ndocker compose -f docker-compose.dev.yaml exec web pylint app\n```\n\n---\n\n\u003ch2 id=\"api-endpoints\"\u003e\n  API Endpoints\n\u003c/h2\u003e\n\n### Authentication\n\nAll endpoints require a valid token in the `Authorization` header:\n\n```bash\nAuthorization: Bearer your_token_here\n```\n\n---\n\n\u003ch2 id=\"deployment\"\u003e\n   Deployment\n\u003c/h2\u003e\n\n### Docker Production\n\nBuild and run the production container:\n\n```bash\n# Start production environment\nmake up-prod\n\n# Check logs\nmake logs-prod\n\n# Stop when needed\nmake down-prod\n```\n\n---\n\n\u003ch2 id=\"contributing\"\u003e\n  Contributing\n\u003c/h2\u003e\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the project\n2. Create your feature branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n### Development Guidelines\n\n- Write tests for new features\n- Follow PEP 8 style guide\n- Update documentation as needed\n- Ensure all tests pass before submitting PR\n\n---\n\n**Email notifications not working:**\n\n- Ensure SMTP credentials are correct\n- For Gmail, use an [App Password](https://support.google.com/accounts/answer/185833)\n- Check firewall settings for SMTP port\n\n---\n\n\u003ch2 id=\"license\"\u003e\n  License\n\u003c/h2\u003e\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n\u003ch2 id=\"contact\"\u003e\n  Contact\n\u003c/h2\u003e\n\nVictor Zarzar - [@Victor-Zarzar](https://github.com/Victor-Zarzar)\n\nProject Link: [https://github.com/Victor-Zarzar/task-tracker-api](https://github.com/Victor-Zarzar/task-tracker-api)\n\n---\n\n\u003cp align=\"center\"\u003e\n  Made with by Victor Zarzar\n\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvictor-zarzar%2Ftask-tracker-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvictor-zarzar%2Ftask-tracker-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvictor-zarzar%2Ftask-tracker-api/lists"}