Merhaba, beni etiketlemişsiniz. Sorunuz güzel denk geldi, yakın zamanda mobil uygulama geliştirmede biraz tecrübe edindim. Elimden geldiğince aktarayım size.
Proje hedefim şimdilik bu ama çok zor olur mu, başlangıç için zaman kaybı mıdır bilemedim. Kendimi geliştirmek için elle tutulur bir hedef lazımdı, bu proje aklıma geldi.
Yazılım bilginizin temel düzeyde olduğunu belirtmişsiniz. Bunun, kafanızda tasarladıklarınızı koda dökeceğiniz süreyi artıracağı şüphesiz tabii. Edinmeniz gereken birçok tecrübe olacak, karşınıza düzeltmeniz gereken birçok hata çıkacak, bol bol araştırma yapmanız gerekecek. Yine de yatırdığınız zaman boşa gitmeyecektir, merak etmeyin.
Proje hedefinizin başlangıç için zaman kaybı olduğunu hiç düşünmüyorum. Öğrenmeye yatırdığınız zaman kaybolamaz, öyle ya da böyle faydalıdır. Gerçekçi ve sizin tabirinizle "elle tutulur" bir hedef, zihninize sağlık. Hem düşündüğünüz her özelliği geliştiremeseniz bile uygulamanın kısmi hali bile hoş ve öğretici olacaktır.
Uygulamanın temel amacı: Farklı tarihlerde randevu saatine göre sıra alabilmek, hangi saatlerde dolu/boş görebilmek, randevu saati yaklaştığında telefona bildirim gelmesi.
Bir kişi, telefonundan randevu aldığında diğer kişilerin telefonunda o saat dolu gözükmeli. Bu işlev için gerekli veriler, kişilerin telefonları dışında merkezi bir yerde tutulmalı yani bu verileri bir sunucu yönetmeli. Terimi biliyorsanız kısaca "back-end" gerekli. Yalnızca mobil uygulama geliştirmeniz yetmeyecek yani, ayrıca bir şekilde sunucu ve veri tabanı da kurmanız lazım. E haliyle telefonun sunucuyla iletişim kurması da gerekli. Aklınızda bulunsun diye söylüyorum, şimdilik kapsam dışında bu konu.
Bunu göz önünde bulundurarak belki de yalnızca telefonda veri tutulmasının yeterli olduğu bir proje fikrine yönelebilirsiniz. Atıyorum bir kişisel not tutma uygulaması için notları telefonda saklamanız yeterli olur. Bu yüzden böyle bir uygulama için back-end ihtiyacı duymazsınız, yalnızca mobil uygulama yeterli olur.
Ben ilk mobil uygulamamı geliştirmeye geçen sene ekimde başlamıştım. Web tarafındaki React ve TypeScript tecrübem sayesinde, React Native'den haberdar olmakla ve uygulamamı hem Android'e hem de iOS'a çıkarma isteğiyle (cross-platform) tercihim React Native (Expo) oldu. Expo, React Native'in birçok açığını kapatan bir framework diyeyim. Geliştirici deneyimini çok iyileştiriyor. Ha, gıcık ettiği noktalar da var ama başka seçenek bilmiyorum ben. : )
Hangi dil ile başlamamı önerirsiniz?
React Native, JavaScript/TypeScript ile cross-platform uygulama geliştirmek isteyenler için uygun bir teknoloji. Flutter (Dart) ve Kotlin/Compose Multiplatform (Kotlin) gibi teknolojiler de mevcut. Merak ederseniz benim önerim React Native. Ben React Native ile yeterince kod yazmışken şu an yeni bir uygulama geliştirmem gerekse geliştiriciye sağladığı kolaylıklardan ötürü Flutter'a şans vermeyi düşünürdüm çünkü biraz denedim ve oldukça hoşuma gitti ama başlangıç için React Native'i tercih ederim. React tarzıyla düşünmek hoşuma gidiyor çünkü. Ayrıca tahmin edebileceğiniz üzere bir teknolojide karar kıldığınızda ilgili programlama dilini öğrenmeniz gerekiyor, dil bariyeri var yani.
Bu cross-platform teknolojilerini kullanmadan Android ve iOS kodlarını ayrı ayrı Java/Kotlin ve Swift ile yazmak da mümkün ama bu en zor ve zaman alıcı seçenek diye düşünüyorum. Bunu ben hiç yapmadım çünkü gerek olmadı. Yine de merak etmiyorum değil. : ) Keyifli görünüyor.
Expo, başlangıç için şöyle güzel bir tutorial hazırlamış, inceleyebilirsiniz:
https://docs.expo.dev/tutorial/introduction/
Kafanızdaki soru işaretleri için yapay zeka araçlarına da başvurabilirsiniz, yeter ki yazdığınız koda hakim olun.
Tekrar altını çizeyim: Bolca zaman gerekecek ama meyvesi de bol olacak.