{"id":27446346,"url":"https://github.com/dejatori/store-api","last_synced_at":"2026-04-17T07:32:30.192Z","repository":{"id":287833142,"uuid":"965902195","full_name":"Dejatori/Store-API","owner":"Dejatori","description":"Complete REST API built with FastAPI and Python 3.11. Features JWT authentication, background task processing with Celery and Redis, automatic Swagger documentation, and unit tests. Implements post creation, image generation, file uploads to B2, and email notifications.","archived":false,"fork":false,"pushed_at":"2025-05-09T22:36:36.000Z","size":6631,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-03T20:15:13.622Z","etag":null,"topics":["async","backend","background-tasks","celery","docker","fastapi","jwt-authentication","microservices","pydantic","pylint","python","redis","rest-api","sqlalchemy","testing"],"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/Dejatori.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-04-14T05:08:17.000Z","updated_at":"2025-05-09T22:36:39.000Z","dependencies_parsed_at":"2025-05-27T12:05:09.410Z","dependency_job_id":"82d5d497-0419-401c-8386-7863a151a399","html_url":"https://github.com/Dejatori/Store-API","commit_stats":null,"previous_names":["dejatori/store-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Dejatori/Store-API","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dejatori%2FStore-API","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dejatori%2FStore-API/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dejatori%2FStore-API/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dejatori%2FStore-API/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dejatori","download_url":"https://codeload.github.com/Dejatori/Store-API/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dejatori%2FStore-API/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279169053,"owners_count":26118395,"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-10-16T02:00:06.019Z","response_time":53,"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":["async","backend","background-tasks","celery","docker","fastapi","jwt-authentication","microservices","pydantic","pylint","python","redis","rest-api","sqlalchemy","testing"],"created_at":"2025-04-15T04:16:28.001Z","updated_at":"2025-10-16T08:12:12.675Z","avatar_url":"https://github.com/Dejatori.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 Mastering REST APIs with FastAPI\n\n[![Python](https://img.shields.io/badge/Python-3.11-blue.svg)](https://www.python.org/downloads/)\n[![FastAPI](https://img.shields.io/badge/FastAPI-0.112.2-green.svg)](https://fastapi.tiangolo.com/)\n[![License](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nProject from the \"Mastering REST APIs with FastAPI\" course by Packt, edited by David Toscano.\n\n## 📋 Contents\n\n- [Requirements](#requirements)\n- [Installation](#installation)\n- [Useful Commands](#useful-commands)\n- [Project Structure](#project-structure)\n- [Documentation](#documentation)\n- [Contributing](#contributing)\n- [License](#license)\n\n## 🔧 Requirements\n\n- Python 3.11\n- Redis (for background tasks)\n- Docker and Docker Compose (optional)\n\n## 💻 Installation\n\n1. Clone this repository:\n   ```bash\n   git clone https://github.com/Dejatori/Store-API.git\n   cd Store-API\n   ```\n\n2. Create a virtual environment and install dependencies:\n   ```bash\n   python -m venv venv\n   source venv/bin/activate  # On Windows: venv\\Scripts\\activate\n   pip install -r requirements.txt\n   pip install -r requirements-dev.txt\n   ```\n\n   ```bash\n   # Alternative with Conda\n   conda create --name fastapi python=3.11\n   conda activate fastapi\n   conda install --file requirements.txt\n   conda install --file requirements-dev.txt\n   ```\n\n3. Start the server:\n   ```bash\n   uvicorn storeapi.main:app --reload\n   ```\n\n## 🛠️ Useful Commands\n\n### 🧹 Code Cleaning and Formatting\n\n```bash\n# Ruff linter and automatic formatting\nruff check --select I --fix .\nruff format .\n\n# Black formatting\nblack .\n\n# Isort import sorting\nisort .\n```\n\n### 🚀 Server Execution\n\n```bash\nuvicorn storeapi.main:app --reload\n```\n\n### 🔄 Redis Management\n\n#### Windows (using Docker)\n\n```bash\n# Start Redis server\ndocker-compose up -d\n\n# Check running containers\ndocker ps\n\n# Stop services\ndocker-compose stop\n\n# Restart services\ndocker-compose restart\n\n# Remove containers and network\ndocker-compose down\n```\n\n#### Linux\n\n```bash\n# Start Redis server\nsudo service redis-server start\n\n# Check status\nredis-cli ping\nsudo service redis-server status\n\n# Restart server\nsudo service redis-server restart\n\n# Stop server\nsudo service redis-server stop\n```\n\n### 🔄 Celery for Background Tasks\n\n```bash\ncelery -A storeapi.celery_app worker --pool=solo --loglevel=INFO\n```\n\n## 📂 Project Structure\n\n```\nstoreapi/\n├── database/     # Database configuration and models\n├── models/       # Pydantic models for data validation\n├── routers/      # API endpoints\n├── security/     # Authentication and authorization\n├── tasks/        # Background tasks with Celery\n└── main.py       # Application entry point\n```\n\n## 📚 Documentation\n\nThe API documentation is available at the following routes once you start the server:\n\n- 📝 **Swagger UI**: [http://localhost:8000/docs](http://localhost:8000/docs)\n- 📘 **ReDoc**: [http://localhost:8000/redoc](http://localhost:8000/redoc)\n\nDocumentation is also available in the project's `docs/` directory.\n\n- 📄 **Project documentation in HTML**: [docs/build/html/index.html](docs/build/html/index.html)\n- 📄 **Project documentation in PDF**: [docs/build/latex/StoreAPI.pdf](docs/build/latex/StoreAPI.pdf)\n\n## 🤝 Contributing\n\nContributions are welcome. Please follow these steps:\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add an amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## 📄 License\n\nThis project is licensed under the terms of the MIT license. See the `LICENSE` file for more details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdejatori%2Fstore-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdejatori%2Fstore-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdejatori%2Fstore-api/lists"}