Arkadaşlarınla birlikte bir diziyi birlikte bitirmeye karar verdiniz ve Friends'i seçtiniz. Grubun son katılımcılarını netleştirmek için küçük bir uygulama yaptın. Davetsiz misafirleri engellemek için de üye girişi eklemeye karar verdin.
Uygulama videodaki gibi çalışmalı: Video
Kalan işler şu şekilde:
main.jsxdosyasında uygulamayıBrowserRouterile sarmala.App.jsxde routeları ekle./friendsFriendsList componentini render etsin. (göstersin)/loginLoginForm componentini render etsin./friends/addAddForm componentini render etsin./FriendsList componentini render etsin.
- AddFriend.jsx'den bakabilirsin. Tasarım
usernameinputunda placeholderUsernameolsun.passwordinputunda placeholderPasswordolsun.submitbutonunda metin olarakSUBMITyazsın.
- Form submit edildiğinde
https://nextgen-project.onrender.com/api/s11d2/logine form datasını POST etsin. - Test için username:
workintechve password:wecandoiti kullan.
contextsklasörü yaratıp içindeAuthContextProvider.jsxdosyası oluştur.AuthContextadıyla bir context create et ve export et.AuthContext.Providerreturn edenAuthContextProviderisimli component fonksiyonunu oluştur.- İçinde
Authişlemleri için gerekli fonksiyonları ve state değişkenlerini tanımla. (login post, isLoggedIn, authUserInfo v.b.) AuthContext.Providera bunları value olarak vermeyi unutma.
App.jsx'de uygulamayı bu provider ile sarmala.
hooksklasörü içinde tanımlıuseLocalStoragehookunu kullanarak gerekli bilgilericode2work_s11d2anahtarı ile localstorage'da sakla ve gerekli durumlarda al.
Header.jsxde kullanıcı giriş yapmadıysa sadece LOGIN butonunu göster. Giriş yaptıysa ise FRIENDS LIST, ADD FRIEND, LOGOUT butonu göster.- Butonlara tıklandığında ilgili routelar açmasını sağla.
react-router-dompaketindekiLinkcomponenti ile değil, onClick ve history.push ile yapman bekleniyor.
- Tasarım
https://nextgen-project.onrender.com/api/s11d2/friendsadresine GET isteği at.- Requestin headerında
authorizationanahtarının değeri olaraktokenbilgisini gönder - Gelen datayı ekranda göster.
AddFriend.jsxde yeni arkadaş için atılan isteğin headerında, loginden gelentokenı gönder.
componentklasörü içindePrivateRoute.jsxisminde Protected route componenti oluştur.- Giriş yapılmadıysa hep
/loginsayfasına yönlendirme yap.
ÖNEMLİ NOT:
Her adımdan sonra testlerde ilerleme olmayabilir.
Uygulamayı çalışır hale getirmeye odaklanırsanız
günün sonunda tüm testler geçecektir.- Bu sayfanın sağ üst köşesindeki Fork butonuna tıklayın
- Kendi GitHub hesabınızda proje kopyası oluşacak
Görseldeki adımları takip edin ya da terminali kullanabilirsiniz.
git clone [buraya-kendi-fork-linkinizi-yazın]
cd [proje-klasor-adi]Terminal açın ve sırasıyla şu komutları çalıştırın:
npm install
npm run c2w💡 İpucu: Bu komutlar gerekli paketleri yükler ve test sistemini başlatır.
Yeni bir terminal tabı açın ve şu komutu çalıştırın:
npm run devBu komut projeyi çalıştıracak ve bir link verecek. Bu linki browserda açın ve yazdıklarınızın çıktısını gözlemleyin.
- Testlerin çalıştığı trminali açık tutun ve test çıktılarını izleyin
- Başarılı testler ✅, başarısız testler ❌ ile gösterilir
- Her küçük ilerleme sonrası değişiklikleri kaydedin
- Testlerin durumunu kontrol edin
- Bir özelliği tamamen bitirdikten sonra commit yapın
GitHub Desktop uygulamasını kullanarak ilerlemenizi sıklıkla GitHub'a gönderin. Ya da terminali kullanabilirsiniz:
git add .
git commit -m "Anlamlı bir commit mesajı"
git push origin mainBu proje otomatik test sistemi ile gelir. Test sonuçları terminal penceresinde görünür. Kırmızı (❌) testleri yeşile (✅) çevirmeye odaklanın.
- npm komutları çalışmıyor: Node.js kurulu olduğundan emin olun
- Testler çalışmıyor: Terminal penceresini kapatıp
npm run c2wkomutunu tekrar çalıştırın
- Terminal hatasını tam olarak okuyun
- Dosya yollarının doğru olduğunu kontrol edin
- Değişiklikleri kaydettiğinizden emin olun
- ✅ Projeyi fork edin ve clone edin
- ✅
npm installvenpm run c2wçalıştırın - ✅
npm run devile projeyi çalıştırın ve size verdiği linki açarak yaptıklarınızı takip edin - ✅ Terminal'den test sonuçlarını takip edin
- ✅ Düzenli olarak commit yapın
- ✅ İlerleyişinizi GitHub'a push edin
İyi çalışmalar! 🎨✨