FastAPI-fastkit: Python ve FastAPI'ye yeni başlayanlar için hepsi bir arada proje iskeleti aracı
(github.com/bnbong)Merhaba, son zamanlarda yapay zeka geliştirme alanı fazlasıyla hareketlenirken Python backend framework'ü FastAPI'ye de gerçekten çok fazla yeni kullanıcı geliyor.
Ben de uzun zamandır FastAPI kullanan ve seven bir geliştirici olarak, FastAPI'ye yeni başlayan geliştiricilere yardımcı olmak isteğiyle bu projeyi geliştirdim.
FastAPI-fastkit, Python ve FastAPI ile ilk kez tanışan kullanıcılar için geliştirme ortamı kurulumunu ve proje iskeletini hızlıca hazırlayan CLI tabanlı bir başlangıç kitidir.
Çok basit komutlar girerek bir FastAPI projesi oluşturabilir, sanal ortam kurulumundan bağımlılıkların yüklenmesine kadar her şeyi otomatik olarak tamamlayabilirsiniz.
pip install fastapi-fastkit
fastkit init --interactive # Projeyi etkileşimli olarak yapılandırır (DB ORM, kimlik doğrulama, test, yardımcı araçlar ve kullanıcının istediği diğer bağımlılıkların kurulumu)
FastAPI, modern ve hızlı bir Python web framework'ü olarak çok seviliyor olsa da, ilk web framework'ü olarak FastAPI'yi seçen kişiler için hâlâ bazı giriş engelleri var:
- Standart bir proje yapısı sunulmadığı için proje yapısının nasıl kurulacağı konusunda belirsizlik yaşanması
- İlk sorunun devamı olarak, aynı FastAPI tabanını kullansa bile her projenin yapısı farklı olduğu için projeyi anlama veya open source katkısı yapma sırasında ek öğrenme maliyeti oluşması
- Diğer web framework'lerine kıyasla ASGI server, serializing gibi temel web framework işlevlerinde dış kütüphanelere bağımlılığın çok yüksek olması nedeniyle FastAPI'yi öğrenme ve kullanma deneyiminin daha karmaşık olması (çünkü başka kütüphane ve araçları da ayrıca öğrenmek gerekiyor)
Django kullanmış olanlar, django-admin startproject komutunun ne kadar kullanışlı olduğunu bilir. Spring ekosisteminde de buna benzer şekilde projeyi doğrudan çalışma dizinine yerleştirmeyi sağlayan Spring Initializr aracı var.
Ben kişisel olarak FastAPI'yi performans açısından da çok çekici bir framework olarak görüyor ve 5 yılı aşkın süredir keyifle kullanıyorum. Ancak yukarıda bahsettiğim dezavantajlar nedeniyle bazı kişiler başlangıç yapmaktan çekiniyordu; ben de FastAPI için böyle bir aracın iyi olacağını düşünerek FastAPI-fastkit'i geliştirdim.
Projeyi geliştirmeye karar vermemdeki belirleyici etken, FastAPI 0.111.0 sürümüne FastAPI CLI paketinin eklenmesi oldu. Bu paket, FastAPI geliştiricisi tiangolo tarafından topluluk tepkisi doğrulanmadan tek taraflı olarak eklenmiş olsa da, ilgili güncelleme notunda belirtilen FastAPI'ye giriş bariyerini düşürme motivasyonuna katıldığım için kendi projemin de daha anlamlı bir proje olabileceğine ikna oldum.
[Ana özellikler]
- Etkileşimli proje oluşturucu (
fastkit init --interactive)
Adım adım istediğiniz bağımlılıkları ve özellikleri seçtiğinizde kod otomatik olarak üretilir:
- Database: PostgreSQL, MySQL, MongoDB, Redis, SQLite
- Authentication: JWT, OAuth2, FastAPI-Users, Session tabanlı
- Background: Celery, Dramatiq
- Caching: Redis, fastapi-cache2
- Monitoring: Loguru, OpenTelemetry, Prometheus
- Testing: pytest + coverage otomatik yapılandırması
- Utilities: CORS, Rate-Limiting, Pagination, WebSocket
- Deployment: Docker, docker-compose otomatik oluşturma
- Package Manager: pip, uv, pdm, poetry seçenekleri
- Bunun dışında kullanıcı eklemek istediği bağımlılıkları girerek ilave edebilir
- Boilerplate ile FastAPI proje kaynak kodunu hızlıca yerleştirme
Etkileşimli yapılandırma zahmetli geliyorsa, önceden yapılandırılmış şablonlarla hemen başlayabilirsiniz:
fastkit list-templates # Kullanılabilir şablon listesini gösterir
fastkit startdemo fastapi-psql-orm --project-name myapp # Belirli bir şablonla proje oluşturur
Paket içinde sunulan şablonlar, FastAPI'nin çeşitli kullanım senaryoları dikkate alınarak eklendi ve GitHub'da public olarak yayımlanmış FastAPI tabanlı projelerin yapıları referans alındı.
Yeni şablonlar eklenmeye devam ediyor ve şu anda sunulan şablonlar şunlar:
- fastapi-default: Temel FastAPI proje yapısı
- fastapi-async-crud: Asenkron CRUD işlemlerine odaklı
- fastapi-dockerized: Docker dağıtımına hazır
- fastapi-psql-orm: PostgreSQL + SQLAlchemy ORM entegrasyonu
- fastapi-single-module: Basit tek modüllü yapı
- fastapi-mcp: MCP server geliştirmek için temel FastAPI proje yapısı
- Boş projeyle başlama
Özel bir ayar olmadan temiz bir boş projeyle başlamak istiyorsanız: fastkit init --project-name myproject
- Route ekleme
Var olan bir projeye yeni bir API route'u ekler: fastkit addroute myproject users # myproject projesine users adlı API route'u ekler
- Geliştirme sunucusunu çalıştırma
Ayrı bir uvicorn komutuna gerek kalmadan sunucuyu doğrudan çalıştırır: fastkit runserver --reload --port 8000
[Dokümantasyon ve kaynaklar]
Daha ayrıntılı kullanım için resmî dokümantasyona göz atabilirsiniz:
- Kullanıcı kılavuzu: https://bnbong.github.io/FastAPI-fastkit/user-guide/quick-start/
- Tutorial: https://bnbong.github.io/FastAPI-fastkit/tutorial/getting-started/
- CLI referansı: https://bnbong.github.io/FastAPI-fastkit/user-guide/cli-reference/
- GitHub Repository: https://github.com/bnbong/FastAPI-fastkit
- PyPI paketi: https://pypi.org/project/fastapi-fastkit
Umarım FastAPI ve Python'a yeni başlayanlara az da olsa yardımcı olur.
Geri bildirim, soru ve katkıların hepsi memnuniyetle karşılanır!
1 yorum
Yeni bir proje için FastAPI'yi inceliyordum.
Tek tek düşünüp değerlendirdiğim maddelerin hepsi içinde yer alıyor.
Harika. Teşekkür ederim.