1. Başlamadan önce
Bu codelab'de, restoran incelemeleri için bir web sitesi olan Friendly Eats adlı Next.js web uygulamasını kullanarak Firebase App Hosting'e nasıl dağıtım yapacağınızı öğreneceksiniz.

Tamamlanan web uygulaması, Firebase'in Next.js uygulamaları oluşturmanıza nasıl yardımcı olabileceğini gösteren faydalı özellikler sunar.
- Otomatik derleme ve dağıtım: Bu codelab'de, yapılandırılmış bir dala her gönderim yaptığınızda Next.js kodunuzu otomatik olarak derlemek ve dağıtmak için Firebase App Hosting'i nasıl kullanacağınız gösterilmektedir.
- Oturum açma ve oturumu kapatma: Tamamlanan web uygulaması, kullanıcıların Google ile oturum açmasına/oturumu kapatmasına olanak tanır. Kullanıcı girişi ve kalıcılığı tamamen Firebase Authentication üzerinden yönetilir.
- Resimler: Tamamlanan web uygulaması, oturum açmış kullanıcıların restoran resimlerini yüklemesine olanak tanır. Resim öğeleri Cloud Storage for Firebase'de depolanır. Firebase JavaScript SDK, yüklenen resimler için herkese açık bir URL sağlar. Bu herkese açık URL daha sonra Cloud Firestore'daki ilgili restoran belgesinde depolanır.
- Filtreler: Tamamlanan web uygulaması, oturum açmış kullanıcıların restoran listesini kategoriye, konuma ve fiyata göre filtrelemesine olanak tanır. Kullanılan sıralama yöntemini de özelleştirebilirsiniz. Verilere Cloud Firestore'dan erişilir ve kullanılan filtrelere göre Firestore sorguları uygulanır.
- Yorumlar: Tamamlanan web uygulaması, oturum açmış kullanıcıların restoranlarla ilgili yorumlar yayınlamasına olanak tanır. Bu yorumlar yıldız puanı ve metin tabanlı bir mesajdan oluşur. Yorum bilgileri Cloud Firestore'da depolanır.
- Yorum özetleri: Tamamlanan web uygulaması, Gemini modelini kullanarak yorumları otomatik olarak özetler. Yapay zekayla üretilmiş özetler Cloud Firestore'da depolanır.
Ön koşullar
- Next.js ve JavaScript bilgisi
Neler öğreneceksiniz?
- Firebase'i Next.js uygulama yönlendiricisi ve sunucu taraflı oluşturma ile kullanma
- Yalnızca sunucu tarafında kullanılan gizli dizileri kullanarak Gemini API'ye yapılan çağrıları yetkilendirme
Gerekenler
- Google Chrome gibi istediğiniz bir tarayıcı
- IDX.dev'e (web tabanlı bir çalışma alanı) erişim
- Firebase projenizi oluşturmak ve yönetmek için bir Google Hesabı
- GitHub hesabı (Yukarıdakiyle aynı e-posta hesabı olması gerekmez)
2. Geliştirme ortamınızı ve GitHub deponuzu ayarlama
Bu codelab'de uygulamanın başlangıç kod tabanı sağlanır ve Firebase CLI ile IDX.dev kullanılır.
Yeni bir GitHub deposu oluşturup IDX'e aktarma
Firebase App Hosting, yapılandırılmış bir dala her aktarım yaptığınızda Next.js kodunuzu oluşturup dağıtacak şekilde bir GitHub deposu ayarlamanıza olanak tanır.
- Bu codelab için yeni bir GitHub deposu oluşturun: https://github.com/new. İstediğiniz adı verin (örneğin,
MyFriendlyEatsCodelab). - Yeni depo URL'nizi kopyalayın. Şu şekilde görünür:
https://github.com/USER_NAME/REPOSITORY_NAME.git - https://idx.google.com adresine gidip oturum açın.
- Import a repo (Depo içe aktar) seçeneğini tıklayın ve kopyaladığınız GitHub URL'sini yapıştırın.
IDX, GitHub'a bağlanmanızı ister ve ardından (boş) deponuzu klonlar.
Codelab'in kaynak kodu deposunu görüntüleme
Codelab kaynağını https://github.com/firebase/friendlyeats-web adresinde görüntüleyin. friendlyeats-web deposunda birden fazla platform için örnek projeler bulunur.
Üzerinde çalıştığınız bu codelab yalnızca Firebase App Hosting ve Gemini API'ye odaklanmaktadır ve "Firebase'i Next.js Uygulamasıyla Entegre Etme" adlı tam codelab'in kısaltılmış bir versiyonudur. Bu kısaltılmış codelab'de yalnızca friendlyeats-web deposunun #io-connect dalındaki kaynak koduyla, özellikle de nextjs-step10 diziniyle çalışmanız gerekir.
friendlyeats-web deposunun aşağıdaki ek dizinlerine dikkat edin. Bu codelab için bu dizinlere ihtiyacınız olmasa da ne olduklarını bilmek faydalıdır.
nextjs-start: "Firebase'i Next.js uygulamasıyla entegre etme" adlı tam codelab için başlangıç kodunu içerir.nextjs-end: Tamamlanmış web uygulamasının çözüm kodunu içerir.
Codelab kaynağını yeni deponuza kopyalama
nextjs-step10 dizinini kendi deponuza nasıl kopyalayacağınız aşağıda açıklanmıştır:
- IDX'te Menu > Terminal > New Terminal'ı (Menü > Terminal > Yeni Terminal) kullanarak terminali açın.
io-connectdalından yalnızcanextjs-step10dizinini getirmek için giget npm paketini kullanın:npx giget@latest gh:firebase/friendlyeats-web/nextjs-step10#io-connect . --force- Değişiklikleri yerel olarak Git ile izleme:
git add -A git commit -m "codelab starting point" git branch -M main git push -u origin main
Başlangıç kodunu artık GitHub deponuzda görmeniz gerekir.
3. Başlangıç kod tabanını inceleme
Bu bölümde, uygulamanın başlangıç kod tabanının bu codelab'de işlev ekleyeceğiniz birkaç alanını inceleyeceksiniz.
Klasör ve dosya yapısı
Aşağıdaki tabloda, uygulamanın klasör ve dosya yapısına genel bir bakış sunulmaktadır:
Klasörler ve dosyalar | Açıklama |
| Filtreler, başlıklar, restoran bilgileri ve yorumlar için React bileşenleri |
| Mutlaka React veya Next.js'ye bağlı olmayan yardımcı işlevler |
| Firebase'e özgü kod ve Firebase yapılandırması |
| Web uygulamasındaki simgeler gibi statik öğeler |
| Next.js uygulama yönlendiricisiyle yönlendirme |
| API rota işleyicisi |
| npm ile proje bağımlılıkları |
| Next.js'e özgü yapılandırma (sunucu işlemleri etkinleştirilir) |
| JavaScript dil hizmeti yapılandırması |
Sunucu ve istemci bileşenleri
Uygulama, App Router'ı kullanan bir Next.js web uygulamasıdır. Uygulamanın her yerinde sunucu oluşturma kullanılır. Örneğin, src/app/page.js dosyası ana sayfadan sorumlu bir sunucu bileşenidir. src/components/RestaurantListings.jsx dosyası, dosyanın başında "use client" yönergesiyle belirtilen bir istemci bileşenidir.
Ekstreleri içe aktarma
Bazı dosyalarda aşağıdaki gibi içe aktarma ifadeleri görebilirsiniz:
import RatingPicker from "@/src/components/RatingPicker.jsx";
Uygulama, hantal göreli içe aktarma yollarını önlemek için @ sembolünü kullanır ve bu, yol takma adları sayesinde mümkün olur.
Firebase'e özgü API'ler
Tüm Firebase API kodu src/lib/firebase dizinine yerleştirilir. Daha sonra tek tek React bileşenleri, Firebase işlevlerini doğrudan içe aktarmak yerine sarmalanmış işlevleri src/lib/firebase dizininden içe aktarır.
Sahte veriler
Sahte restoran ve yorum verileri src/lib/randomData.js dosyasında yer alır. Bu dosyadaki veriler, src/lib/fakeRestaurants.js dosyasındaki kodda bir araya getirilir.
4. Firebase projenizi oluşturma
Bu bölümde, Firebase projesi oluşturup bir Firebase web uygulamasını bu projeyle ilişkilendireceksiniz. Ayrıca, örnek web uygulamasının kullandığı Firebase hizmetlerini de ayarlayacaksınız.
Firebase projesi oluşturma
- Önceki adımda kullandığınız Google Hesabı ile Firebase konsolunda oturum açın.
- Yeni bir proje oluşturmak için düğmeyi tıklayın ve ardından bir proje adı girin (örneğin,
FriendlyEats Codelab).
- Devam'ı tıklayın.
- İstenirse Firebase şartlarını inceleyip kabul edin ve Devam'ı tıklayın.
- (İsteğe bağlı) Firebase konsolunda yapay zeka yardımını etkinleştirin ("Firebase'de Gemini" olarak adlandırılır).
- Bu codelab için Google Analytics'e ihtiyacınız yoktur. Bu nedenle, Google Analytics seçeneğini devre dışı bırakın.
- Proje oluştur'u tıklayın, projenizin hazırlanmasını bekleyin ve ardından Devam'ı tıklayın.
Firebase fiyatlandırma planınızı yükseltme
Firebase App Hosting ve Firebase için Cloud Storage'ı kullanmak istiyorsanız Firebase projenizin kullandıkça öde (Blaze) fiyatlandırma planında olması gerekir. Bu da projenin bir Cloud Faturalandırma Hesabı'na bağlı olduğu anlamına gelir.
- Cloud Faturalandırma hesabı için kredi kartı gibi bir ödeme yöntemi gerekir.
- Firebase ve Google Cloud'u yeni kullanmaya başladıysanız 300 ABD doları değerinde kredi ve ücretsiz deneme Cloud Faturalandırma hesabı için uygun olup olmadığınızı kontrol edin.
- Bu codelab'i bir etkinliğin parçası olarak yapıyorsanız düzenleyicinize Cloud kredisi olup olmadığını sorun.
Projenizi Blaze planına yükseltmek için şu adımları uygulayın:
- Firebase konsolunda planınızı yükseltmeyi seçin.
- Blaze planını seçin. Bir Cloud Faturalandırma hesabını projenize bağlamak için ekrandaki talimatları uygulayın.
Bu yükseltme kapsamında bir Cloud Faturalandırma hesabı oluşturmanız gerekiyorsa yükseltmeyi tamamlamak için Firebase Console'daki yükseltme akışına geri dönmeniz gerekebilir.
5. App Hosting arka ucu oluşturma
Bu bölümde, git deponuzdaki bir dalı izlemek için App Hosting arka ucu ayarlayacaksınız. Ayrıca, arka ucun iletişim kuracağı tüm hizmetleri de yapılandıracaksınız.
Bu bölümün sonunda, GitHub'daki deponuza bağlı bir App Hosting arka ucunuz olacak. Bu arka uç, main dalınıza yeni bir taahhüt gönderdiğinizde uygulamanızın yeni bir sürümünü otomatik olarak yeniden oluşturup kullanıma sunacak.
Arka uç oluşturma
- Firebase konsolunda App Hosting sayfasına gidin:

- Arka uç oluşturma akışını başlatmak için Başlayın'ı tıklayın.
- Daha önce oluşturduğunuz GitHub deposunu içe aktarmak ve bağlamak için istemleri uygulayın.
- Dağıtım ayarlarını belirleyin:
- Kök dizini
/olarak tutun. - Canlı dalı
mainolarak ayarlayın. - Otomatik kullanıma sunma işlemlerini etkinleştirme
- Kök dizini
- Arka uçunuza
friendlyeats-codelab(veya istediğiniz bir arka uç adı) adını verin. Bu, arka uca erişmek için kullanılan alanın bir parçası olur.
Bu iş akışı, Firebase projenizde otomatik olarak bir Firebase web uygulaması da oluşturur. Bu codelab'in ilerleyen bölümlerinde, kod tabanınızı Firebase projenize bağlamak için bu web uygulamasının yapılandırma değerlerini kullanacaksınız. - Sonlandır ve dağıt'ı tıklayın. Kısa bir süre sonra, yeni uygulama barındırma arka uçunuzun durumunu görebileceğiniz yeni bir sayfaya yönlendirilirsiniz.
- Uygulama Barındırma kontrol panelinden yeni alanınızı kopyalayın.
BACKEND_ID--PROJECT_ID.REGION.hosted.appgibi bir deseni olur. Firebase Authentication'ı daha sonra ayarlamak için bu alana ihtiyacınız olacak.
DNS yayılımı ve SSL sertifikası oluşturma nedeniyle alanın çalışmaya başlaması birkaç dakika sürebilir. Arka ucunuz oluşturulurken Firebase projesinin geri kalanını ayarlamaya ve arka ucunuzu yapılandırmaya (bu codelab'in sonraki adımları) devam edin.
GitHub deponuzun main dalına her yeni kaydetme işlemini aktardığınızda Firebase konsolunda yeni bir derleme ve dağıtımın başladığını görürsünüz. Dağıtım tamamlandığında siteniz otomatik olarak güncellenir.
6. Diğer Firebase hizmetlerini ayarlama
Bu codelab yalnızca Firebase App Hosting ve Gemini API'ye odaklanıyor olsa da çalışan web uygulamasının işlevini yerine getirebilmesi için diğer Firebase hizmetleri gereklidir. Tüm bu hizmetlerin uygulamanızda çalışmasını sağlayan kod, kendi GitHub deponuza kopyaladığınız kod tabanının bir parçasıdır ancak bu hizmetleri Firebase projenizde yine de ayarlamanız gerekir.
Kimlik doğrulama ayarlama
- Firebase konsolunda Authentication'a gidin.
- Başlayın'ı tıklayın.
- Ek sağlayıcılar sütununda Google > Etkinleştir'i tıklayın.
- Projenin herkese açık adı metin kutusuna
My FriendlyEatsCodelab appgibi bir ad girin. - Proje için destek e-postası açılır listesinden e-posta adresinizi seçin.
- Kaydet'i tıklayın.
- Projenin herkese açık adı metin kutusuna
- Kimlik Doğrulama sayfasında Ayarlar sekmesini tıklayın.
- Ekranda sol taraftaki menüden Yetkili Alanlar'ı tıklayın.
- Alan ekle'yi tıklayın ve yeni oluşturduğunuz uygulama barındırma alanınızı ekleyin (
.hosted.appile biter). - Kaydetmek için Ekle'yi tıklayın.
Cloud Firestore'u ayarlama
- Firebase konsolunun sol panelinde Build'i (Oluştur) genişletin ve Firestore database'i (Firestore veritabanı) seçin.
- Create database'i (Veritabanı oluştur) tıklayın.
- Veritabanı Kimliği'ni
(default)olarak bırakın. - Veritabanınız için bir konum seçin ve Sonraki'yi tıklayın.
Gerçek bir uygulama için kullanıcılarınıza yakın bir konum seçmeniz gerekir. - Test modunda başlat'ı tıklayın. Güvenlik kurallarıyla ilgili sorumluluk reddi beyanını okuyun.
Bu codelab'in ilerleyen bölümlerinde, verilerinizin güvenliğini sağlamak için güvenlik kuralları ekleyeceksiniz. Veritabanınıza güvenlik kuralları eklemeden uygulamayı herkese açık şekilde dağıtmayın veya herkese açık olarak kullanıma sunmayın. - Oluştur'u tıklayın.
Cloud Storage for Firebase'i ayarlama
- Firebase konsolunun sol panelinde Build'i (Oluştur) genişletin ve Storage'ı (Depolama) seçin.
- Başlayın'ı tıklayın.
- Varsayılan depolama paketinize bir konum seçin.
US-WEST1,US-CENTRAL1veUS-EAST1bölgelerindeki paketler, Google Cloud Storage için "Daima Ücretsiz" katmanından yararlanabilir. Diğer tüm konumlardaki paketler için Google Cloud Storage fiyatlandırması ve kullanımı geçerlidir. - Test modunda başlat'ı tıklayın. Güvenlik kurallarıyla ilgili sorumluluk reddi beyanını okuyun.
Bu codelab'in ilerleyen bölümlerinde, verilerinizin güvenliğini sağlamak için güvenlik kuralları ekleyeceksiniz. Depolamapaketinize güvenlik kuralları eklemeden uygulamayı herkese açık olarak dağıtmayın veya kullanıma sunmayın. - Oluştur'u tıklayın.
7. Web uygulamanızı yapılandırma
Artık bir Firebase projesi oluşturduğunuza ve uygulamanızda kullanılan tüm Firebase hizmetlerini etkinleştirdiğinize göre, web uygulamanızı bu hizmetleri kullanacak şekilde yapılandırmak için IDX'te çalışmaya başlayabilirsiniz.
IDX'te Firebase CLI'ye giriş yapma
IDX'te Node.js ve Firebase CLI zaten yüklü olduğundan bu yazılımları yükleme adımını atlayıp doğrudan CLI'yı ayarlamaya başlayabilirsiniz.
- IDX'teki terminalde, CLI'yı daha önce oluşturduğunuz Firebase projesini kullanacak şekilde yapılandırmak için şu komutları çalıştırın:
Takma ad istendiğindefirebase login --no-localhost firebase use --add
codelabgirin. - Firebase'in veri toplamasını isteyip istemediğinize bağlı olarak
YveyaNgirin. Bu codelab'de her iki seçenek de kullanılabilir. - Tarayıcınızda Google Hesabınızı seçin ve İzin ver'i tıklayın.
Güvenlik kurallarını ve dizinleri dağıtma
GitHub deponuza kopyaladığınız kodda Firestore (firestore.rules içinde) ve Cloud Storage for Firebase (storage.rules içinde) için güvenlik kuralları zaten mevcuttur. Güvenlik kurallarını dağıttıktan sonra veritabanınızdaki ve paketinizeki veriler kötüye kullanıma karşı daha iyi korunur.
Gelişmiş sorguları etkinleştirmek için CLI'yı kullanarak Firestore (firestore.indexes.json içinde) için bir dizi dizin de dağıtabilirsiniz.
- IDX'teki terminalde, bu güvenlik kurallarını ve dizinleri dağıtmak için şu komutu çalıştırın:
firebase deploy --only firestore,storage
"Cloud Storage for Firebase needs an IAM Role to use cross-service rules. Grant the new role?"sorusu sorulursa Evet'i seçmek içinEntertuşuna basın.
Firebase yapılandırmanızı web uygulamanızın koduna ekleme
- Firebase konsolunda şunları yapın:
- Proje ayarları'na gidin.
- Uygulamalarınız bölümüne gidin ve App Hosting arka ucunuzla aynı ada sahip uygulamayı seçin.
- SDK kurulumu ve yapılandırması bölümünde Yapılandırma seçeneğini belirleyin, ardından
firebaseConfigdeğişkeninin özelliklerini ve değerlerini kopyalayın.
- IDX'te aşağıdakileri yapın:
apphosting.yamldosyasını açın. App Hosting'de ortam değişkenlerinizi, gizli anahtarlarınızı ve çalışma zamanı yapılandırmanızı burada ayarlarsınız.- Sağlanan ortam değişkeni değerlerini Firebase konsolundan kopyaladığınız yapılandırma değerleriyle doldurun.Örneğin (kendi değerlerinizle değiştirin):
runConfig: minInstances: 0 maxInstances: 2 env: # Get these values from the Firebase console - variable: NEXT_PUBLIC_FIREBASE_API_KEY value: xxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxx - variable: NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN value: project-id.firebaseapp.com - variable: NEXT_PUBLIC_FIREBASE_PROJECT_ID value: project-id - variable: NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET value: project-id.firebasestorage.app - variable: NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID value: 111111111111 - variable: NEXT_PUBLIC_FIREBASE_APP_ID value: 1:111111111111:web:aaaaaaaaaaaaaaaaaaaaaa - Dosyayı kaydedin. Ardından, IDX'teki terminalde değişiklikleri GitHub'a göndermek için şu komutları çalıştırın:
git commit -a -m "Setup Firebase Config" git push
- Firebase konsoluna dönün, App Hosting sayfasına geri gidin ve aşağıdaki adımları uygulayın:
- Arka uç için Kontrol Paneli'ni Görüntüle'yi tıklayın.
- Git push işleminizden yeni bir derlemenin tetiklendiğini gözlemleyin. Bu işlemin tamamlanması ve Cloud Run'a dağıtılması yaklaşık 3 dakika sürer.
build-IDçipini tıklayarak ilerleme durumunu izleyebilirsiniz. - Lansmanın tamamlanıp tamamlanmadığını kontrol etmek için konsol sayfasını yenileyin. İşlem tamamlandıktan sonra, alanlar bölümünde alanınızın (
.hosted.appile biten) bağlantısını tıklayarak açın ve yeni dağıtılan uygulamayı görüntüleyin.
Tebrikler, ilk web uygulamasını dağıttınız. Konuyu biraz daha ayrıntılı inceleyelim.
8. Web uygulamasını tarayıcıda deneme
Firebase Authentication ile giriş yapabildiğinizi doğrulayın
- Tarayıcınızda, web uygulamanızı gösteren sayfayı yenileyin.
- Google ile oturum aç'ı tıklayın.
- Oturumu kapatıp tekrar açın. Sayfa, yenilenmeden anında güncellenir. Bu adımı farklı kullanıcılarla tekrarlayabilirsiniz.
- İsteğe bağlı: Tarayıcınızda web uygulamasını yenileyin. Web uygulamasını sağ tıklayın, Sayfa kaynağını görüntüle'yi seçin ve görünen adı arayın. Sunucudan döndürülen ham HTML kaynağında görünür.
Restoran bilgilerini görüntüleme
Web uygulamasında restoranlar ve yorumlar için örnek veriler yer alır.
Cloud Firestore veritabanınıza sahte restoran verileri eklemek için
> Add sample restaurants'ı (Örnek restoran ekle) seçin.
Restoran listelemelerinin sunucu çalışma zamanında yüklendiğini doğrulayın.
Next.js çerçevesi kullanılırken verilerin sunucu çalışma zamanında mı yoksa istemci tarafı çalışma zamanında mı yüklendiği anlaşılmayabilir.
Restoran girişlerinin sunucu çalışma zamanında yüklendiğini doğrulamak için aşağıdaki adımları uygulayın:
- Web uygulamasında Geliştirici Araçları'nı açın ve JavaScript'i devre dışı bırakın.

- Web uygulamasını yenileyin. Restoran listeleri yine de yüklenir. Restoran bilgileri, sunucu yanıtında döndürülür. JavaScript etkinleştirildiğinde, restoran bilgileri istemci tarafındaki JavaScript kodu aracılığıyla doldurulur.
- Geliştirici Araçları'nda JavaScript'i yeniden etkinleştirin.
- Web uygulamasında
> Örnek restoranlar ekle'yi seçin. Anlık görüntü işleviniz doğru şekilde uygulanmışsa restoranlar, sayfa yenilenmeden anlık olarak görünür.
Restoran için yorum ekleme
Yorum eklemek ve Cloud Firestore'a eklendiğini doğrulamak için aşağıdaki adımları uygulayın:
- Web uygulamasını yenileyin ve ana sayfadan bir restoran seçin.
- Restoranın sayfasında
simgesini tıklayın. - Yıldız puanı seçin.
- Yorum yazın.
- Gönder'i tıklayın. Yorumunuz, yorum listesinin en üstünde görünür.
9. Üretken yapay zeka ile restoran yorumlarını özetleme
Bu bölümde, kullanıcıların her yorumu okumak zorunda kalmadan bir restoran hakkındaki genel görüşleri hızlıca anlaması için yorum özeti özelliği ekleyeceksiniz.
Cloud Secret Manager'da Gemini API anahtarı depolama
App Hosting, API anahtarları gibi hassas değerleri güvenli bir şekilde depolamanıza olanak tanımak için Cloud Secret Manager ile entegre olur.
- Gemini API'yi kullanmak için API anahtarına ihtiyacınız vardır. Google AI Studio'da anahtar oluşturun.
İstendiğinde bu codelab için kullandığınız projeyi seçin (arka planda Firebase projesi, Google Cloud projesidir). - IDX'teki terminalde yeni bir gizli anahtar oluşturmak için şu komutu çalıştırın:
firebase apphosting:secrets:set gemini-api-key - Gizli değer istendiğinde Google AI Studio'daki Gemini API anahtarınızı kopyalayıp yapıştırın.
"To use this secret, your backend's service account must be granted access. Would you like to grant access now?"sorusu sorulursa Evet'i seçmek içinEntertuşuna basın.- Yeni gizli dizinin
apphosting.yamlöğesine eklenip eklenmeyeceği sorulduğunda kabul etmek içinYgirin, ardından GEMINI_API_KEY'yi ortam değişkeni adı olarak seçmek içinEntertuşuna basın.
Gemini API anahtarınız artık Cloud Secret Manager'da güvenli bir şekilde saklanıyor ve App Hosting arka ucunuz tarafından erişilebiliyor. Değeri Google Cloud Console'daki Secrets Manager kontrol panelinde de görüntüleyebilirsiniz.
apphosting.yamldosyasını açın ve gizli dizinizin adının kaydedildiğini ancak değerlerin kaydedilmediğini unutmayın.Dosya aşağıdaki gibi görünmelidir:runConfig: minInstances: 0 maxInstances: 2 env: # Get these values from the Firebase console - variable: NEXT_PUBLIC_FIREBASE_API_KEY value: xxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxx - variable: NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN value: project-id.firebaseapp.com - variable: NEXT_PUBLIC_FIREBASE_PROJECT_ID value: project-id - variable: NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET value: project-id.firebasestorage.app - variable: NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID value: 111111111111 - variable: NEXT_PUBLIC_FIREBASE_APP_ID value: 1:111111111111:web:aaaaaaaaaaaaaaaaaaaaaa - variable: GEMINI_API_KEY secret: gemini-api-key
Yorum özeti bileşenini uygulama
- IDX'te
src/components/Reviews/ReviewSummary.jsxsimgesini açın. GeminiSummaryişlevini aşağıdaki kodla değiştirin:export async function GeminiSummary({ restaurantId }) { const { firebaseServerApp } = await getAuthenticatedAppForUser(); const reviews = await getReviewsByRestaurantId( getFirestore(firebaseServerApp), restaurantId ); const genAI = new GoogleGenerativeAI(process.env.GEMINI_API_KEY); const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash", safety_settings: [ { category: HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold: HarmBlockThreshold.BLOCK_NONE, }, ], }); const reviewSeparator = "@"; const prompt = ` Based on the following restaurant reviews, where each review is separated by a '${reviewSeparator}' character, create a one-sentence summary of what people think of the restaurant. Here are the reviews: ${reviews.map(review => review.text).join(reviewSeparator)} `; try { const result = await model.generateContent(prompt); const response = await result.response; const text = response.text(); return ( <div className="restaurant__review_summary"> <p>{text}</p> <p>✨ Summarized with Gemini</p> </div> ); } catch (e) { console.error(e); return <p>Error contacting Gemini</p>; } }- IDX'teki terminalde, commit oluşturmak ve GitHub deponuza göndermek için bu komutları çalıştırın.
git commit -a -m "Use AI to summarize reviews" git push - Firebase konsolunda App Hosting sayfasını açın ve yeni dağıtımınızın tamamlanmasını bekleyin.
- Tarayıcınızda bir restoran kartını tıklayın. Ekranın üst kısmında, restoranla ilgili tüm yorumların tek cümlelik özetini görürsünüz.
- Yeni bir yorum ekleyin ve sayfayı yenileyin. Özet değişikliğini görmeniz gerekir.
10. Sonuç
Tebrikler! Firebase App Hosting'i kullanarak Next.js uygulamasını dağıtmayı ve Gemini API'yi kullanarak metin özetlemeyi öğrendiniz. Özellikle aşağıdakileri kullandınız:
- Yapılandırılmış bir GitHub dalına her aktarma yaptığınızda Next.js kodunuzu otomatik olarak oluşturup dağıtmak için Firebase App Hosting.
- Uygulamanızda üretken yapay zeka özellikleri oluşturabilmeniz için Gemini API anahtarınızı güvenli bir şekilde saklamak üzere Cloud Secret Manager (App Hosting ile entegre)
Daha fazla bilgi
Firebase Authentication, Cloud Firestore ve Cloud Storage for Firebase'i bu uygulamaya nasıl eklediğimizi öğrenmek için "Firebase'i Next.js uygulamasıyla entegre etme" adlı codelab'in tamamını inceleyin.
Ayrıca, diğer codelab'lere de göz atın: