{"id":24932358,"url":"https://github.com/0baris/fastapi-blog-api","last_synced_at":"2026-05-14T23:03:34.450Z","repository":{"id":275332882,"uuid":"925404892","full_name":"0Baris/fastapi-blog-api","owner":"0Baris","description":"Fastapi kullanılarak geliştirilmiş basit bir Blog API'si","archived":false,"fork":false,"pushed_at":"2025-02-11T12:11:39.000Z","size":35,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-11T13:24:21.874Z","etag":null,"topics":["blog-api","fastapi","fastapi-sqlalchemy","postresql","python","sqlalchemy"],"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/0Baris.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}},"created_at":"2025-01-31T20:17:50.000Z","updated_at":"2025-02-11T12:11:42.000Z","dependencies_parsed_at":"2025-02-01T19:34:17.847Z","dependency_job_id":null,"html_url":"https://github.com/0Baris/fastapi-blog-api","commit_stats":null,"previous_names":["0baris/fastapi-blog-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0Baris%2Ffastapi-blog-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0Baris%2Ffastapi-blog-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0Baris%2Ffastapi-blog-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0Baris%2Ffastapi-blog-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0Baris","download_url":"https://codeload.github.com/0Baris/fastapi-blog-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246043893,"owners_count":20714484,"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","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":["blog-api","fastapi","fastapi-sqlalchemy","postresql","python","sqlalchemy"],"created_at":"2025-02-02T14:38:48.061Z","updated_at":"2025-09-25T15:34:11.448Z","avatar_url":"https://github.com/0Baris.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📚 Blog API\n\nBu proje, FastAPI kullanılarak geliştirilmiş bir Blog API'sidir. Kullanıcıların blog yazıları oluşturmasına, düzenlemesine, silmesine ve yorum yapmasına olanak tanır.\n\n\u003e **Not:** Herhangi bir hata ile karşılaşırsanız bana [bariscem@proton.me](mailto:bariscem@proton.me) adresinden ulaşabilirsiniz. Sorununuzu çözmekten memnuniyet duyarım.\n\n---\n\n## ✨ Özellikler\n\n- **Kullanıcı Yönetimi:**\n  - Kullanıcı oluşturma.\n  - Kullanıcı listeleme.\n  - Tekil kullanıcı getirme.\n\n- **Kategori Yönetimi:**\n  - Kategori oluşturma.\n  - Kategori düzenleme.\n  - Kategori silme.\n  - Tüm kategorileri listeleme.\n\n- **Blog Yazı Yönetimi:**\n  - Yazı oluşturma.\n  - Yazı düzenleme.\n  - Yazı silme.\n  - Tüm yazıları listeleme.\n  - Tekil yazı getirme.\n  - Yazıya ait tüm yorumları listeleme.\n\n- **Yorum Yönetimi:**\n  - Yorum oluşturma.\n  - Yorum silme.\n\n- **Güvenlik:**\n  - Kullanıcı parolaları için güvenli hashleme (bcrypt).\n  - Ortam değişkenleriyle veritabanı bağlantı bilgilerini yönetme.\n\n- **Mail Entragrasyonu:**\n  - Kullanıcı yeni hesap oluştururken onay e-postası gönderme simülasyonu yapar.\n  - Yeni bir yorum eklendiği zaman gönderi sahibine bilgilendirme yapar.\n\n---\n\n## 🛠️ Teknolojiler\n\n- **Backend:**\n  - [FastAPI](https://fastapi.tiangolo.com/): Modern, hızlı ve kolay bir Python frameworkü.\n  - [SQLAlchemy](https://www.sqlalchemy.org/): Python için güçlü bir ORM.\n  - [PostgreSQL](https://www.postgresql.org/): Güçlü bir ilişkisel veritabanı sistemine dayalı.\n  - [bcrypt](https://pypi.org/project/bcrypt/): Parola hashleme işlemleri için kullanılır.\n  - [Celery](http://www.celeryproject.org/): Asenkron görev kuyruğu ve dağıtılmış görev işleme sistemi.\n  - [Redis](https://redis.io/): Hızlı, açık kaynaklı, bellek içi veri yapısı deposu.\n\n- **Diğer:**\n  - [Pydantic V2](https://pydantic-docs.helpmanual.io/): Veri doğrulama ve seri hale getirme işlemleri için.\n  - [Docker](https://www.docker.com/): Uygulamanın konteynerize edilmesi için.\n  - [Docker Compose](https://docs.docker.com/compose/): Birden fazla servisi kolayca yönetmek için.\n\n---\n\n## 🚀 Adım Adım Kurulum (Docker ile)\n\n### Gereksinimler\n\n- **[Docker Kurulumu](https://docs.docker.com/get-docker/)**: Projenin çalışması için Docker'in kurulu olması gerekmektedir.\n- **[Docker Compose Kurulumu](https://docs.docker.com/compose/install/)**: Servisleri bir arada yönetmek için Docker Compose'in kurulu olması gerekmektedir.\n\n### Adımlar\n\n1. **Proje Deposu Klonlama:**\n\n   ```bash\n   git clone https://github.com/0Baris/fastapi-blog-api.git\n   cd fastapi-blog-api\n   ```\n\n2. **`.env` Dosyasını Oluşturma ve Yapılandırma:**\n\n   Projenin kök dizininde `.env` dosyası oluşturun ve aşağıdaki ortam değişkenlerini ekleyin:\n\n   ```env\n    POSTGRES_USER=blog_user  # PostgreSQL kullanıcı adı\n    POSTGRES_PASSWORD=blog_pass  # PostgreSQL şifresi\n    POSTGRES_DB=blog_db  # PostgreSQL veritabanı adı\n    DATABASE_URL=postgresql://blog_user:blog_pass@db:5432/blog_db  # Veritabanı bağlantısı\n    \n    CELERY_BROKER_URL=redis://localhost:6379/0  # Celery broker (Redis) URL'i\n    CELERY_RESULT_BACKEND=redis://localhost:6379/0  # Celery sonuç backend'i (Redis) URL'i\n\n    MAIL_USERNAME=xyz@gmail.com  # E-posta gönderme kullanıcı adı\n    MAIL_PASSWORD=apppasword  # E-posta gönderme şifresi (uygulama şifresi)\n    MAIL_FROM=xyz@gmail.com  # Gönderen e-posta adresi\n    MAIL_PORT=587  # E-posta sunucu portu\n    MAIL_SERVER=smtp.gmail.com  # E-posta sunucu adresi\n    MAIL_FROM_NAME=\"Blog API\"  # Gönderen adı\n    MAIL_TLS=True  # TLS şifrelemesi kullanılsın mı?\n    MAIL_SSL=False  # SSL şifrelemesi kullanılsın mı?\n   ```\n\n3. **Docker Konteynerlerini Başlatma:**\n\n   ```bash\n   docker compose up --build\n   ```\n\n   Bu komut, Docker imajlarını oluşturur ve konteynerleri başlatır.\n\n4. **Geliştirme Sunucusuna Erişim:**\n\n   Tarayıcıda `http://localhost:8000/docs` veya `http://localhost:8000/redoc` adreslerinden API dokümantasyonuna ulaşabilirsiniz.\n\n---\n\n## 📖 API Kullanımı\n\nAşağıda, API endpoint'leri ve nasıl kullanılacakları açıklanmıştır.\n\n### **Kullanıcı İşlemleri**\n\n- **Tüm Kullanıcıları Getirme:**\n  - **Endpoint:** `/api/v1/users/`\n  - **Yöntem:** `GET`\n\n- **Tekil Kullanıcıyı Getirme:**\n  - **Endpoint:** `/api/v1/users/{user_id}`\n  - **Yöntem:** `GET`\n\n- **Kullanıcı Oluşturma:**\n  - **Endpoint:** `/api/v1/users/`\n  - **Yöntem:** `POST`\n  - **İstek Gövdesi:**\n    ```json\n    {\n        \"username\": \"test\",\n        \"email\": \"test@example.com\",\n        \"password\": \"benbirsifreyim123\"\n    }\n    ```\n\n---\n\n### **Kategori İşlemleri**\n\n- **Tüm Kategorileri Getirme:**\n  - **Endpoint:** `/api/v1/category/`\n  - **Yöntem:** `GET`\n\n- **Tekil Kategori Getirme:**\n  - **Endpoint:** `/api/v1/category/{category_id}`\n  - **Yöntem:** `GET`\n\n- **Kategori Oluşturma:**\n  - **Endpoint:** `/api/v1/category/`\n  - **Yöntem:** `POST`\n  - **İstek Gövdesi:**\n    ```json\n    {\n        \"title\": \"Teknoloji\"\n    }\n    ```\n\n- **Kategori Güncelleme:**\n  - **Endpoint:** `/api/v1/category/update/{category_id}`\n  - **Yöntem:** `PUT`\n  - **İstek Gövdesi:**\n    ```json\n    {\n        \"title\": \"Yeni Kategori\"\n    }\n    ```\n\n- **Kategori Silme:**\n  - **Endpoint:** `/api/v1/categories/delete/{category_id}`\n  - **Yöntem:** `DELETE`\n\n---\n\n### **Blog Yazı İşlemleri**\n\n- **Tüm Yazıları Getirme:**\n  - **Endpoint:** `/api/v1/posts/`\n  - **Yöntem:** `GET`\n\n- **Tekil Yazı Getirme:**\n  - **Endpoint:** `/api/v1/posts/{post_id}`\n  - **Yöntem:** `GET`\n\n- **Yazı Oluşturma:**\n  - **Endpoint:** `/api/v1/posts/`\n  - **Yöntem:** `POST`\n  - **İstek Gövdesi:**\n    ```json\n    {\n        \"title\": \"Python ile FastAPI Kullanımı\",\n        \"content\": \"FastAPI, modern bir Python frameworküdür.\",\n        \"category_id\": 1,\n        \"author_id\": 1\n    }\n    ```\n\n- **Yazı Güncelleme:**\n  - **Endpoint:** `/api/v1/posts/update/{post_id}`\n  - **Yöntem:** `PUT`\n  - **İstek Gövdesi:**\n    ```json\n    {\n        \"title\": \"Güncellenmiş Yazı Başlığı\",\n        \"content\": \"Güncellenmiş yazı içeriği.\"\n    }\n    ```\n\n- **Yazı Silme:**\n  - **Endpoint:** `/api/v1/posts/delete/{post_id}`\n  - **Yöntem:** `DELETE`\n\n---\n\n### **Yorum İşlemleri**\n\n- **Yorum Ekleme:**\n  - **Endpoint:** `/api/v1/comments/{post_id}/add`\n  - **Yöntem:** `POST`\n  - **İstek Gövdesi:**\n    ```json\n    {\n        \"content\": \"Bu bir test yorumudur.\",\n        \"author_id\": 1\n    }\n    ```\n\n- **Yorum Silme:**\n  - **Endpoint:** `/api/v1/comments/{post_id}/delete`\n  - **Yöntem:** `DELETE`\n\n---\n\n## 🤝 Katkıda Bulunma\n\nKatkıda bulunmak isterseniz, lütfen aşağıdaki adımları izleyin:\n\n1. **Fork'layın:**\n   Projeyi GitHub'da forklayın.\n\n2. **Yeni Bir Dal Oluşturun:**\n   ```bash\n   git checkout -b feature/your-feature-name\n   ```\n\n3. **Değişiklikleri Yapın ve Commit Edin:**\n   ```bash\n   git add .\n   git commit -m \"Özellik: Yeni özellik eklendi.\"\n   ```\n\n4. **Dalınızı Push Edin:**\n   ```bash\n   git push origin feature/your-feature-name\n   ```\n\n5. **Pull Request Oluşturun:**\n   GitHub üzerinden orijinal depoya pull request açın ve değişikliklerinizi açıklayın.\n\n---\n\n## 📜 Lisans\n\nBu proje [MIT Lisansı](LICENSE) altında lisanslanmıştır.\n\n---\n\n## 📚 Kaynakça\n\n- [FastAPI Dokümantasyonu](https://fastapi.tiangolo.com/learn)\n- [SQLAlchemy ORM Dokümantasyonu](https://docs.sqlalchemy.org/en/20/orm/mapping_styles.html)\n- [Using FastAPI with SQLAlchemy](https://blog.stackademic.com/using-fastapi-with-sqlalchemy-5cd370473fe5)\n- [Build a CRUD App with FastAPI and SQLAlchemy](https://codevoweb.com/build-a-crud-app-with-fastapi-and-sqlalchemy/)\n- [Creating a CRUD API with FastAPI, Medium](https://medium.com/@stanker801/creating-a-crud-api-with-fastapi-sqlalchemy-postgresql-postman-pydantic-1ba6b9de9f23)\n- [Strong Password Hashing with SQLAlchemy, Medium](https://medium.com/@sharoze.archer/strong-password-hashing-with-sqlalchemy-for-enhanced-database-security-efc4ecda9f08)\n- [Empowering Applications with Asynchronous Magic, Medium](https://medium.com/@youssefchamrah/empowering-applications-with-asynchronous-magic-the-celery-fastapi-docker-and-flower-ac119efc2e04)\n\n---\n\n## 🔍 Hata Ayıklama\n\nEğer uygulama çalışmadıysa, aşağıdaki adımları izleyin:\n\n1. **Logları Kontrol Edin:**\n   - Docker loglarını kontrol etmek için:\n     ```bash\n     docker compose logs app\n     ```\n   - PostgreSQL loglarını kontrol etmek için:\n     ```bash\n     docker compose logs db\n     ```\n\n2. **Ortam Değişkenlerini Doğrulayın:**\n   - `.env` dosyasındaki yapılandırmaların doğru olduğundan emin olun.\n\n3. **Dockerfile'i ve `docker-compose.yml`'i Denetleyin:**\n   - `Dockerfile` ve `docker-compose.yml` dosyalarının son güncellemeyle uyumlu olduğundan emin olun.\n\n4. **Pydantic Modellerini Yeniden Oluşturun:**\n   - Eğer Pydantic V2 kullanıyorsanız, modellerinizde `from_attributes = True` kullanıldığından emin olun.\n   - İlişkiler için `.rebuild()` yöntemini çağırın.\n\n\n---\n\n## 🙌 İletişim\n\nProjeyle ilgili sorularınız, önerileriniz veya geri bildirimleriniz için bana ulaşabilirsiniz:\n\n- **E-posta:** [bariscem@proton.me](mailto:bariscem@proton.me)\n- **LinkedIn:** [Barış Cem Ant](https://www.linkedin.com/in/baris-cem-ant/)\n- **GitHub:** [Barış Cem Ant](https://github.com/0Baris)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0baris%2Ffastapi-blog-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0baris%2Ffastapi-blog-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0baris%2Ffastapi-blog-api/lists"}