FastAPI-fastkit: alat scaffolding proyek all-in-one untuk pemula Python & FastAPI
(github.com/bnbong)Halo, belakangan ini bidang pengembangan AI sangat panas sampai seperti kentang lava, dan framework backend Python yaitu FastAPI juga benar-benar mendapat banyak pengguna baru.
Sebagai developer yang sudah lama menggunakan dan menyukai FastAPI, saya mengembangkan proyek ini karena ingin membantu para developer yang baru mulai belajar FastAPI.
FastAPI-fastkit adalah starter kit berbasis CLI yang membantu mempercepat penyiapan lingkungan pengembangan dan scaffolding proyek untuk pengguna yang baru pertama kali mengenal Python dan FastAPI.
Hanya dengan memasukkan perintah yang sangat sederhana, Anda bisa membuat proyek FastAPI, dan semua proses mulai dari pembuatan virtual environment hingga instalasi dependensi akan selesai secara otomatis.
pip install fastapi-fastkit
fastkit init --interactive # Konfigurasikan proyek secara interaktif (DB ORM, autentikasi, testing, utilitas, serta instalasi dependensi lain yang diinginkan pengguna)
FastAPI dikenal sebagai framework web Python modern dan cepat, tetapi bagi mereka yang memilih FastAPI sebagai framework web pertama, masih ada hambatan untuk mulai menggunakannya:
- Karena tidak ada struktur proyek baku yang disediakan, banyak orang bingung harus menyusun struktur proyek seperti apa
- Sebagai kelanjutan dari masalah pertama, meskipun sama-sama berbasis FastAPI, struktur tiap proyek bisa berbeda sehingga menambah biaya belajar saat memahami proyek atau berkontribusi ke open source
- Dibanding framework web lain, ketergantungan pada library eksternal untuk fungsi inti framework web seperti server ASGI dan serializing sangat tinggi, sehingga pengalaman belajar dan penggunaan FastAPI terasa cukup rumit (karena harus lebih banyak memberi perhatian pada pembelajaran library dan alat lain juga)
Bagi yang pernah menggunakan Django, pasti tahu betapa nyamannya django-admin startproject. Di ekosistem Spring juga ada alat serupa bernama Spring Initializr yang memungkinkan proyek langsung ditempatkan di direktori kerja.
Secara pribadi, saya menganggap FastAPI adalah framework yang sangat menarik dari sisi performa sehingga sudah saya gunakan selama lebih dari 5 tahun. Namun, karena kekurangan-kekurangan yang disebutkan di atas, ada sebagian orang yang ragu untuk mulai menggunakannya. Itulah sebabnya saya berpikir akan bagus jika FastAPI juga memiliki alat seperti ini, lalu saya membuat FastAPI-fastkit.
Pemicu paling menentukan yang membuat saya mantap mengembangkan proyek ini adalah ketika paket FastAPI CLI ditambahkan pada FastAPI versi 0.111.0. Paket tersebut ditambahkan secara sepihak oleh developer FastAPI, tiangolo, tanpa validasi respons komunitas. Namun, saya setuju dengan motivasi untuk menurunkan hambatan masuk FastAPI yang disampaikan di catatan pembaruan itu, dan saya menjadi yakin bahwa proyek saya bisa menjadi proyek yang semakin bermakna.
[Fitur utama]
- Builder proyek interaktif (
fastkit init --interactive)
Jika Anda memilih dependensi dan fitur yang diinginkan langkah demi langkah, kode akan dibuat secara otomatis:
- Database: PostgreSQL, MySQL, MongoDB, Redis, SQLite
- Authentication: JWT, OAuth2, FastAPI-Users, berbasis Session
- Background: Celery, Dramatiq
- Caching: Redis, fastapi-cache2
- Monitoring: Loguru, OpenTelemetry, Prometheus
- Testing: konfigurasi otomatis pytest + coverage
- Utilities: CORS, Rate-Limiting, Pagination, WebSocket
- Deployment: pembuatan otomatis Docker, docker-compose
- Package Manager: bisa memilih pip, uv, pdm, poetry
- Selain itu, dependensi tambahan yang ingin dimasukkan pengguna juga bisa ditambahkan
- Menempatkan source code proyek FastAPI dengan cepat menggunakan boilerplate
Jika pengaturan interaktif terasa merepotkan, Anda bisa langsung mulai dengan template yang sudah dikonfigurasi sebelumnya:
fastkit list-templates # Periksa daftar template yang tersedia
fastkit startdemo fastapi-psql-orm --project-name myapp # Buat proyek dengan template tertentu
Template yang disediakan dalam paket ini ditambahkan dengan mempertimbangkan berbagai use case FastAPI, serta merujuk pada struktur proyek berbasis FastAPI yang terdaftar secara publik di GitHub.
Penambahan template baru sedang berlangsung, dan template yang saat ini tersedia adalah sebagai berikut:
- fastapi-default: struktur proyek FastAPI dasar
- fastapi-async-crud: dioptimalkan untuk pekerjaan CRUD asinkron
- fastapi-dockerized: siap untuk deployment Docker
- fastapi-psql-orm: integrasi PostgreSQL + SQLAlchemy ORM
- fastapi-single-module: struktur modul tunggal yang sederhana
- fastapi-mcp: struktur proyek FastAPI dasar untuk pengembangan server MCP
- Mulai dengan proyek kosong
Jika Anda ingin mulai dengan proyek kosong yang rapi tanpa konfigurasi khusus: fastkit init --project-name myproject
- Menambahkan route
Menambahkan route API baru ke proyek yang sudah ada: fastkit addroute myproject users # Tambahkan route API bernama users ke proyek myproject
- Menjalankan server pengembangan
Jalankan server langsung tanpa perintah uvicorn terpisah: fastkit runserver --reload --port 8000
[Dokumentasi dan sumber daya]
Untuk cara penggunaan yang lebih detail, silakan lihat dokumentasi resmi:
- Panduan pengguna: https://bnbong.github.io/FastAPI-fastkit/user-guide/quick-start/
- Tutorial: https://bnbong.github.io/FastAPI-fastkit/tutorial/getting-started/
- Referensi CLI: https://bnbong.github.io/FastAPI-fastkit/user-guide/cli-reference/
- Repository GitHub: https://github.com/bnbong/FastAPI-fastkit
- Paket PyPI: https://pypi.org/project/fastapi-fastkit
Semoga ini bisa sedikit membantu para pemula yang baru mulai menggunakan FastAPI dan Python.
Feedback, pertanyaan, dan kontribusi semuanya sangat diterima!
1 komentar
Saya sedang mempertimbangkan
fastapiuntuk proyek baru.Semua hal yang saya pertimbangkan satu per satu saat meninjaunya sudah tercakup di sini.
Luar biasa. Terima kasih.