Bu proje, işleri takip etmek için kullanılan bir React uygulamasıdır. Redux Toolkit ile state yönetimi sağlanmıştır.
Proje dosyalarını bilgisayarınıza indirmek ve çalıştırmak için aşağıdaki adımları takip edebilirsiniz:
- Proje dosyalarını bilgisayarınıza klonlayın veya indirin.
- Terminal veya komut istemcisini açın ve proje dizinine gidin.
- Gerekli bağımlılıkları yüklemek için
npm install
komutunu çalıştırın. - Proje uygulamasını başlatmak için
npm start
komutunu kullanın.
- Card.jsx: İş kartı componenti.
- Filter.jsx: Filtre componenti.
- Header.jsx: Sayfa başlık componenti.
- AddJob.jsx: İş ekleme sayfası.
- JobList.jsx: İş listesi sayfası.
Proje, Redux Toolkit kullanılarak state yönetimi sağlamaktadır. jobSlice.js
dosyasında action'lar, reducers ve initial state tanımlanmıştır.
Proje, iş verilerini yönetmek için json-server
ve db.json
kullanmaktadır.
Card
componenti, işleri temsil etmek için kullanılan bir componenttir. Her bir işin ayrıntılarını gösterir, düzenlenmesine ve silinmesine olanak tanır. Ayrıca, işin durumuna göre renkli bir etiket gösterir.
- React
- Redux Toolkit
- react-redux
useState
: Modal'ın açık/kapalı durumunu takip etmek için kullanılır.useDispatch
: Redux eylemlerini tetiklemek için kullanılır.
job
prop'u üzerinden gelen veriyi kullanarak her bir işin detaylarını gösterir.isModalOpen
state'i, modal'ın açık veya kapalı olup olmadığını takip eder.getClassName
fonksiyonu, işin durumuna bağlı olarak CSS sınıfını belirler.spanColor
objesi, iş durumuna göre etiket rengini belirler.handleDelete
fonksiyonu, "Sil" butonuna tıklandığında işi siler.handleEdit
fonksiyonu, "Düzenle" butonuna tıklandığında modal'ı açar.closeModal
fonksiyonu, modal'dan çıkış yapıldığında modal'ı kapatır.
- Kartın üzerinde yer alan "Detay" butonuna tıklandığında, işin detay bilgilerini gösterir.
openDetails
fonksiyonu, detayları gösteren butona tıklanınca çalışır veselectedJob
state'ini günceller. Ayrıca, JobDetails bileşeni, seçilen işin detaylarını gösterir.- Detay bilgileri, pozisyon ve şirket bilgilerini içerir.
- Detay görüntüleme özelliği, kartın içinde yer alır ve kullanıcıya işin mevcut durumu, lokasyonu, türü ve tarihi hakkında bilgi verir.
Modal
bileşeni, iş düzenleme işlemleri için kullanılır.Modal
bileşeni,job
prop'u üzerinden gelen veriyi kullanarak iş detaylarını düzenleme imkanı tanır.Modal
bileşeni,closeModal
fonksiyonunu kullanarak kapatılabilir.
spanColor
objesi, iş durumuna bağlı olarak etiket rengini belirler ve bu renkler iş durumunu gösteren etikette kullanılır.
Filter
bileşeni, iş listesini filtreleme ve sıralama seçenekleri sunan bir bileşendir. Kullanıcıya işleri arama, duruma göre filtreleme, türe göre filtreleme ve sıralama imkanı tanır.
- React
- Redux Toolkit
- react-redux
- useRef hook
useRef
: Giriş alanlarına erişim sağlamak ve değerleri güncellemek için kullanılır.useDispatch
: Redux eylemlerini tetiklemek için kullanılır.
- Arama: Şirket isimleri arasında arama yapılabilir.
- Durum Filtresi: İş durumuna göre filtreleme seçeneği sunar.
- Tür Filtresi: İş türüne göre filtreleme seçeneği sunar.
- Sıralama: İşleri belirli bir sıraya göre sıralama seçeneği sunar.
- Filtreleri Temizleme: Uygulanan tüm filtreleri temizler.
statusOption
: İş durumu filtreleme seçeneklerini içeren bir dizi.typeOption
: İş türü filtreleme seçeneklerini içeren bir dizi.sortOption
: İşleri sıralama seçeneklerini içeren bir dizi.
handleReset
: Tüm filtreleri temizler ve giriş alanlarını sıfırlar.
Header
bileşeni, uygulama başlığını ve sayfa gezinme bağlantılarını içeren bir bileşendir. Kullanıcıyı iş listesi sayfasına yönlendirir ve yeni bir iş eklemek için iş ekleme sayfasına yönlendirir.
- React
- react-router-dom
- Uygulama başlığını gösterir.
- İş listesi sayfasına ve iş ekleme sayfasına yönlendiren gezinme bağlantıları içerir.
Link
: Sayfa yenilemeden gezinmeyi sağlayan genel bağlantı ögesi.NavLink
: Aktif sayfa durumuna göre özel stiller eklemek ve gezinmeyi sağlamak için kullanılan özel bir bağlantı ögesi.
Modal
bileşeni, iş detaylarını düzenlemek için kullanılan bir modal penceresini temsil eder. Kullanıcıya iş pozisyonu, şirket adı, lokasyon, durum, tür ve tarih gibi ayrıntıları düzenleme imkanı tanır.
- React
- react-redux
- useState hook
useState
: Modal içindeki düzenlenmiş iş ayrıntılarını takip etmek için kullanılır.useDispatch
: Redux eylemlerini tetiklemek için kullanılır.
Modal
bileşeni, iş detaylarını düzenlemek için kullanılır.- İş pozisyonu, şirket adı, lokasyon, durum, tür ve tarih gibi ayrıntıları düzenleme imkanı tanır.
- "Kaydet" butonu ile düzenlenmiş iş ayrıntılarını Redux üzerinden günceller.
- "İptal" butonu ile modal penceresini kapatır.
constants.js
dosyası, projede kullanılan sabit verileri içerir. Bu sabitler, filtreleme seçenekleri ve sıralama seçenekleri gibi ögeleri tanımlar.
İş durumu filtreleme seçeneklerini içeren dizi:
export const statusOption = ["Mülakat", "Devam Ediyor", "Reddedildi"];
İş türü filtreleme seçeneklerini içeren dizi:
export const typeOption = ["Tam Zamanlı", "Yarı Zamanlı", "Uzaktan", "Staj"];
İşleri sıralama seçeneklerini içeren dizi:
export const sortOption = ["A-Z", "Z-A", "En Yeni", "En Eski"];
AddJob
sayfası, yeni bir iş eklemek için kullanılan bir formu temsil eder. Kullanıcıdan pozisyon, şirket, lokasyon, tarih, durum ve tür gibi bilgileri girmesini bekler.
- React
- react-redux
- axios
- react-toastify
- useFormik hook
- Yup
useNavigate
: React Router DOM kütüphanesinden sayfa yönlendirmesi için kullanılır.useDispatch
: Redux eylemlerini tetiklemek için kullanılır.useFormik
: Form yönetimi için kullanılan bir formik hook'u.
formik
nesnesi, formun başlangıç değerleri, doğrulama şeması ve submit işlemi gibi form yönetimi ile ilgili tüm işlevleri içerir.validationSchema
: Yup kütüphanesi ile tanımlanan doğrulama kurallarını içerir.
onSubmit
fonksiyonu, form gönderildiğinde çalışan fonksiyondur.- Form verileri bir
FormData
nesnesine eklenir ve axios ile API'ye gönderilir. - Gönderme başarılı olduğunda Redux store güncellenir ve kullanıcı ana sayfaya yönlendirilir.
react-toastify
kütüphanesi ile bilgilendirme mesajları gösterilir.
- Hata mesajları, formun doğrulama şemasına uygun olmadığında görüntülenir.
JobList
sayfası, iş listesini görüntülemek için kullanılan bir bileşeni içerir. Kullanıcıya filtreleme seçenekleri, iş sayısı, bilgisi ve her bir işi gösteren kartları içerir.
- React
- axios
- react-redux
- react-toastify
useSelector
: Redux store'dan veri seçmek için kullanılır.useDispatch
: Redux eylemlerini tetiklemek için kullanılır.
useEffect
: Sayfa yüklendiğinde veya bağımlılıklar değiştiğinde çalışan bir React hook'u.useState
: Bileşen içindeki state yönetimi için kullanılır.
useEffect
hook'u ile axios kullanılarak API'den iş listesi çekilir.- Çekilen veri, Redux store'a
setJobs
eylemi ile set edilir. - Hata durumunda ise
setError
eylemi tetiklenir.
- Her bir iş,
Card
bileşeni içinde kart olarak gösterilir. - İş kartları üzerine tıklanınca,
Modal
bileşeni ile iş detayları görüntülenir.
Filter
bileşeni ile işleri filtreleme seçenekleri sunulur.react-toastify
kütüphanesi ile bilgilendirme mesajları gösterilir.
- API'den veri çekilirken olası hatalara karşı kontrol eklenmiştir.
- Hata durumunda kullanıcıya bilgi verilir.
jobSlice.js
dosyası, Redux store için bir dilim (slice) oluşturan createSlice
fonksiyonu ile oluşturulmuştur. Bu dilim, işlemler ve state yönetimi ile ilgili özelleştirilmiş eylemleri içerir.
- @reduxjs/toolkit
mainJobs
: Başlangıçtaki tüm iş listesini içerir.jobs
: Filtrelenmiş veya sıralanmış iş listesini içerir.initialized
: State'in başlangıç durumunu belirten bir flag.isError
: API'den veri çekilirken oluşan hata durumunu belirten bir flag.
- Tüm iş listesini ve filtrelenmiş iş listesini günceller.
initialized
flag'ini true yapar veisError
flag'ini false yapar.
- Hata durumunda
initialized
flag'ini veisError
flag'ini true yapar.
- Yeni bir işi state'e ekler.
- Belirli bir işi state'den siler.
- Belirli bir işi düzenler ve state'i günceller.
- Şirket adına göre işleri filtreler.
- Duruma göre işleri filtreler.
- Türüne göre işleri filtreler.
- İşleri belirli bir kritere göre sıralar.
- Filtreleri temizler ve orijinal iş listesini gösterir.
store.js
dosyası, Redux store'unun oluşturulduğu ve kullanıldığı bir konfigürasyon içerir.
- @reduxjs/toolkit
configureStore
fonksiyonu kullanılarak Redux store oluşturulur.reducer
özelliği ilejobSlice
reducer'ı belirtilir.
jobSlice
dosyası, işlemler ve state yönetimi ile ilgili özelleştirilmiş eylemleri içeren bir Redux slice (dilim) içerir.
App.jsx
dosyası, React uygulamasının ana bileşenini içerir. Sayfa yönlendirmeleri için react-router-dom
kullanılarak, JobList
ve AddJob
sayfalarını içeren bir uygulama tasarlanmıştır.
- React
- react-router-dom
BrowserRouter
ile sayfa yönlendirmelerini destekleyen bir bileşen kullanılır.Routes
ile uygulamanın farklı sayfalarını tanımlar.Route
ile her bir sayfa tanımlanır ve bu sayfaların hangi bileşenleri içereceği belirtilir.
- Ana sayfa olarak kullanılır.
- İş listesini gösteren bir bileşeni içerir.
- Yeni iş eklemek için kullanılır.
- İş eklemeye yönelik bir bileşeni içerir.
- Sayfa başlığını içerir.
main.jsx
dosyası, React uygulamasının başlangıç noktasını belirler. Uygulamanın render edildiği ana dosyadır.
ReactDOM.createRoot
fonksiyonu ile uygulamanın render edileceği kök (root) element belirlenir.Provider
ile uygulamanın Redux store'u sağlanır.App
bileşeni render edilir.ToastContainer
ile uygulama içinde toast bildirimleri için bir bileşen sağlanır.
Bu style.scss dosyası, iş takip uygulamasının görünümünü düzenlemek ve stiline özgü özellikleri belirlemek için kullanılan SCSS (Sassy CSS) dosyasıdır.
Projenin canlıya alınmış hali : Career Hub