Voleious, sorular, anketler ve sesli sohbet yoluyla herhangi bir konunun tartışılmasını teşvik eden bir sosyal medya platformudur. Bir "vole" yayınladıktan sonra, kullanıcılar metin yoluyla yorum bölümünde tartışma yapabilir veya bir sesli sohbet başlatmak isterlerse, diğer kullanıcıların katılabileceği ve bu gönderi veya konu hakkında konuşabileceği bir tartışma odası açabilirler. Oldukça basit. Yeni başlayan biriyseniz, kodlama kısmı için çok fazla değil. İşte bunu nasıl yaptım.
Bölümler
Bir uygulama oluşturma fikri ilk aklıma geldiğinde, üzerinde çalışmam gereken bir ön uç tasarımım olduğundan emin olmak istedim. Kelimenin tam anlamıyla 30 dakika gibi bir arama yaptıktan sonra, Figma'yı kullanmak kolay bir seçimdi .
Figma'yı kullanmak hızlı maketler için süper sezgiseldi ve benim hoşuma giden ve hoş görünen son bir maket ile çıkmam yaklaşık 2 haftamı aldı. Bir tasarımın ön yüzünü geliştirmenin ne kadar önemli olduğunu yeterince vurgulayamıyorum. Aynı anda uygulamanızın stilini ve görünümünü değiştirirken geliştirmek son derece zordur. Gerçekten sevdiğiniz bir model oluşturmak uzun zaman alıyorsa, lütfen acele etmeyin. Uzun vadede buna değecek.
İşte uygulamanın Figma'da nasıl göründüğüne dair birkaç resim.
Açıkçası, nihai ürün ile maketler arasında tutarsızlıklar var, ancak bu ilk maketleri beğendim ve onlara bağlı kaldım. Arka uç geliştirmeye!
Yazılım mühendisliği sınıf arkadaşlarımdan bazılarıyla konuştuktan ve biraz araştırma yaptıktan sonra, Google tarafından sağlanan bir NoSQL veritabanı olan Firebase Cloud Firestore'u kullanmaya karar verdim (bunu daha sonra değiştirmeye karar verdim, bunu daha sonra açıklayacağım). Kullanıcı resimlerini yüklemek ve depolamak ve resimleri göndermek için ek olarak Firebase Storage'ı kullandım. Firebase'in kurulumu son derece kolaydı ve fazla deneyiminiz yoksa hemen hemen her türden uygulamanın MVP'sini oluşturmak için kullanmanızı tavsiye ederim.
Arka uç API'm için bir Node JS ekspres sunucusu kullanmaya ve onu firebase üzerinden barındırmaya karar verdim. Geçmişte Node JS'yi kullanma konusunda çok deneyimim vardı ve Firestore'u kurmayı araştırdıktan sonra, birçok makale ve öğreticide Node JS ve Express kullanıldı. Temelde arka uç sunucusuyla ilgili her şey için freeCodeCamp.org tarafından sağlanan bu bir YouTube videosunu özellikle takip ettim . Firebase depolamasını, kimlik doğrulamasını, Firestore'u, Postman testini, 9 metreyi nasıl kuracağımı öğrendim.
Yaklaşık 3 aylık kodlamadan ve yaklaşık 30 rotadan sonra, ön ucu başlatabileceğimden oldukça emindim.
Daha önce hiç mobil uygulama oluşturmadım, bu yüzden sadece temelimi atmaya ve işin ilerlemesine yardımcı olacak bir kitaplık istedim. Expo o kütüphaneydi. Yönetilen iş akışını kullanma ve yerel kitaplıklara ihtiyaç duyan daha karmaşık uygulamalar için bunun nasıl sınırlı olduğu hakkında forumlardaki tüm uyarıları okumama rağmen, yine de üç nedenden dolayı kullanmaya karar verdim:
Ön ucu geliştirdikten yaklaşık 3 ay sonra, nihayet kullanıcıların istemci tarafında firebase kullanarak güvenli bir şekilde oturum açabilecekleri, yayınlayabilecekleri, beğenebilecekleri, yorum yapabilecekleri, takip edebilecekleri, bildirimler alabilecekleri ve voles paylaşabilecekleri çalışan bir uygulamam vardı. Çok mutluydum ve betaya başlamaya hazırdım.
Çoğunlukla arkadaşları ve aileleri olmak üzere 40 kullanıcının kaydolmasından ve bazı hatalar ve geri bildirimler aldıktan sonra, arka uç veritabanımı değiştirmem ve Cloud Firestore'dan uzaklaşmam gerektiğini fark ettim.
Bunun nedeni, Firestore'un verileri depolamak için belgeleri ve koleksiyonları kullanan bir NoSQL veritabanı olmasıdır. Sistemlerinde, belge başına okuma, yazma ve silme miktarlarını ücretlendirirler. Örneğin, veritabanı kurulumunu yapma şeklimde, 10 gönderi almak yaklaşık otuz okumaya mal olacaktı. Kullanıcının gönderiye oy verip vermediğini, kullanıcının gönderiyi beğenip beğenmediğini kontrol etmem ve posta belgesinin kendisini almam gerekiyordu. Kullanıcı oy verdiyse ve zaten beğendiyse, bu veriler üç farklı belgeden geldiği için bu, bir gönderi için üç okuma olacaktır. Okumaların artmasını önlemenin yolları da var.
Örneğin, beğenme sayısı, yorum sayısı ve paylaşım sayısı için gönderilere sayaçlar eklemek. Beğeni, paylaşım veya yorum miktarını saymanın en kötü yolu, bir gönderideki tüm beğeniler için beğeni koleksiyonunu taramaktır. Bir yayında 1000 beğeni varsa, bu 1000 okuma anlamına gelir. Bu nedenle, bunun bir çözümü, posta belgesine, birisi bir gönderiyi her beğendiğinde güncellenen bir sayaç alanı eklemektir. Artık bir gönderiyi ve tüm verilerini sorguladığınızda, yalnızca bir okuma olarak geri gelir. Mükemmel, ama yine de ilişkisel bir yapıya daha iyi uyacak biraz daha karmaşık bir şey istedim. Çözüm PostgreSQL idi .
Bu uygulamayı geliştirirken yaptığım en büyük hatalardan biri, başlamak için PostgreSQL kullanmamamdı… 👀
PostgreSQL, farklı tablolardan verileri birbirine bağlamak için tasarlanmış açık kaynaklı, ilişkisel bir SQL veritabanıdır. Bu, gönderiler, kullanıcılar, beğeniler, yorumlar vb. Arasında çok fazla ilişki gerektiren sosyal medya uygulamaları için mükemmeldir.
Geçmişte SQL ile ilgili hiçbir deneyimim olmadı, bu yüzden tablolarımı ilk başta bulut Firestore'dakine benzer yapmak için PG Admin'i indirmeye karar verdim , ancak sayı alanları ve iç içe tablolar olmadan (PostgreSQL'de gerekli değildi).
PostgreSQL'e geçiş yaklaşık 3 hafta sürdü. Bu, tablolarımı PG Admin'de yapmayı, veritabanını ekspres sunucuya bağlamayı ve Firebase işlevleri yerine SQL sorguları kullanan yeni rotalar oluşturmayı içeriyordu. İşte ilk başladığımda PostgreSQL'e bu kadar çabuk aşık olmamın birkaç temel nedeni.
Firebase'den ayrıldıktan sonra, yeni ekspres sunucumu ve PostgreSQL veritabanımı Digital Ocean üzerinde barındırmaya karar verdim . Ekspres sunucumu, PostgresSQL veritabanını kurmak ve ikisini birbirine bağlamak yaklaşık bir veya iki gün sürdü. İşte basit bir arka uç kurmama yardımcı olan harika bir makale . Yakın gelecekte, sunucular yoğun trafik altındayken otomatik ölçeklendirme yeteneğine yardımcı olan Kubernetes'i kurmayı planlayacağım.
Expo Managed Workflow'dan uzaklaşmak oldukça kolaydı. Bu nedenle fuar, başlangıç geliştirme için harika bir seçimdir çünkü takılırsanız ve yerel bir kitaplık kullanmanız gerekirse, çıkarması kolaydır.
Mac'te expo eject çalıştırmak, normal bir tepki veren yerel uygulamanın sahip olduğu gerekli IOS ve Android klasörlerini oluşturacaktır (bir Windows bilgisayarında çıkarma işlemi yalnızca Android klasörünü oluşturacaktır). Korkunç XCode ve Android stüdyosunun yanı sıra her ikisi için de yaklaşık bir gün süren gerekli simülatörleri kurmam gerekiyordu. Bu tamamlandıktan sonra, çıplak iş akışı uygulamasını hem Android hem de IOS simülatörlerinde test ettim ve mükemmel çalıştı.
Artık uygulamamı herhangi bir react-native kitaplık ile daha da fazla özelleştirme ile geliştirebildim. 😄
Yaklaşık 9 aylık geliştirmeden sonra, uygulamamı App Store ve Google Play Store'da yayınlayabildim.
Uygulama mağazası - https://apps.apple.com/us/app/voleious-opinions-voice-chat/id1534931010
Oyun mağazası - https://play.google.com/store/apps/details?id=com.voleious.voleious
Sadece projeye başlayın! Bu, ilk kez sıfırdan tam bir uygulama geliştirmekti. Oluşturmak istediğiniz bir fikriniz varsa ve kodlamanın temellerini biliyorsanız, bana güvenebilirsiniz.
Sadece geliştirme boyunca öğrendiğim her şeyi size aktarmak ve bir sonraki projenize başlarken doğru kararları vermenize yardımcı olmak istedim. Bu kesinlikle bir öğretici değil 😆. React native veya full-stack geliştirme hakkında sorularınız varsa, yorum yapmaktan çekinmeyin!
Flo'daki ilk günümden bu yana sadece birkaç hafta geçti, ancak bir süredir buradaymışım gibi geliyor! UX İçerik ekibini (konuşmaya dayalı tasarım ekibimiz de dahil) yönetmek ve büyütmek için işe alındım ve kendimi bu zorlu göreve verdim. Hızlı tempolu bir başlangıçta yeni bir içerik ekibi kurmaya yönelik yaklaşımımı paylaşacağımı düşündüm.
2022'nin 10. haftasını yeni tamamladık ve işte ilk P2E oyunumuzun piyasaya sürülmesi, heyecan verici Metaverse haberleri ve çok daha fazlası ile güncellemeler ve haberlerle dolu başka bir toplama. Öyleyse arkamıza yaslanalım, rahatlayalım ve haftayı tamamlayalım! Manic Games Geçen hafta ilk P2E oyunumuzun bir ön gösterimini yayınladık.
Abha'da spor aktiviteleri için bir deneyim tasarlayalım! Programın neredeyse yarısına geldik ve 3. proje zamanı geldi! Yalan söylemeyeceğim bu proje şimdiye kadar yaptığım en bunaltıcı, stresli ama eğlenceli proje olabilir. Başlamak için, güzel Abha şehrinde spor aktiviteleri için bir deneyim tasarlamak olan meydan okumamızla tanıştık.
İnsanlar sanata çekilir. On yıldan fazla bir süredir araştırmacılar, izleme sanatının sağlığımız ve esenliğimiz üzerindeki olumlu etkisini araştırıyorlar.
Jesenko ve benim 20 yıllık evlilik yolculuğumuza nasıl başladığımıza dair başlangıç hikayemizi pek kimse bilmiyor. Bazılarının, ilk dairemizi birlikte doldurmak için yeterince para kazanmamanın çok erken zamanlarıyla ilgili olabileceğinden eminim.
"Tren kazası" kelimesinden nefret ediyorum. İnsanlar kendi ahlaki pusulalarında teselli bulur ve bunu yaparken kendilerini yargıda bulunurken bulurlar.