# Needza Bilinmesi Gerekenler Dokümanı **Not :** Socketio sadece sunucuda çalışan sürümde yok ve şuan site socketio olmadan çalışıyor fakat tüm repolarda socketio var. Sistemin socketio olmadan çalışır halini elde etmek için, şuanda sunucuda aktif olarak çalışan kaynak kodu indirilerek geliştirme yapmaya devam edilmeli. Projenin socketio'suz sürümü ve aynı zamanda şuan sitede çalışan stabil sürümü şudur : https://gitlab.com/digitalcake-tr/needza/tree/4803d5a7da36ed06c38a2bd9d8bd670db60f38cd (Eğer socketio kullanılmak istenmiyorsa, yukarıda belirtilen link baz alınarak bir branch açlıp geliştirme yapmaya devam etmek socketio klasörlerini silmekten daha mantıklıdır. çünkü socketio importundan sonra ReactApp kısmındaki kodlarda büyük oranda değişiklikler oldu dolayısıyla silme işlemleri projede birçok yerde problemlerle yol açabilir. en sıkıntısız çözüm yöntemi üstteki link baz alınarak açılacak bir branch üzerinden geliştirme yapmaya devam etmek olacaktır) **Önemli Not :** kök klasördeki /upload klasörü siteye kullanıcı tarafından yapılacak uploadları baz alır. orada her zaman bir sitemap.xml dosyası yer alır çünkü admin panelden sitenin güncel sitemap'i xml olarak import edildiği zaman bu xml dosyası oraya kaydedilerek sitenin şu sayfası SEO için güncellenir : https://www.needza.com/sitemap.xml fakat bu modül, sitenin "SOCKET.IO'suz REPOSUNDA YOKTUR". Yani üstte linki belirtilen repoyu kullanmayı tercih ederseniz, bu gibi bir çok ekstradan yazılan modülün de kullanım dışı kalacağını göze alıyor almış olursunuz. bu sbeple, siteyi socket.io'lu haliyle geliştirmeye devam etmek daha mantıklı olacaktır **Önemli Not - 2 :** Şu issue'yu mutlaka dikkate alınız : https://gitlab.com/digitalcake-tr/needza/issues/61 yoksa sitedeki ödeme sistemi, issue içinde belirtilen tarihten itibaren düzgün çalışmayabilir. Stripe tarafından (https://stripe.com/docs/strong-customer-authentication) yapılan bilgilendirmedir, issue içinde gerekli link yer almaktadır Diğer Bilinmesi Gerekenler : -- - Projenin ReactApp dosyasında, hem sitenin dashboard kısmı hem de android ve mobil uygulamalar geliştirilmiştir. React-native-web paketi sayesinde tek bir react kodu ile hem tarayıcıdaki dashboard hem de mobil uygulamalar geliştirilebilmektedir. - Proje, Yii Framework 1.1 sürümü ile geliştirilmiş bir şekilde satın alınmış. Dolayısıyla geliştirme yaparken Yii 1.1 dokümanı dikkate alınmalı - Sitenin back-end (php - yii framework) kısmının tamamı kök klasör altındaki protected klasöründedir - Güncel database yapısı ve yeni tablo ekledikçe manuel güncellenmesi gereken dosya protected/config/table_structure.php dosyasıdır. - Tüm routing ve linkleme işlemleri protected/config/main.php altından gerçekleşiyor urlManager dizisi altındaki regexler url ayarlarını sağlıyor - protected/config/config-example.php içinden database ve cdn ayarları yapılabilir. güncel ayarlar sunucuda, example dosyasını localde, projeyi geliştirecek olan kişi kendine göre ayarlamalıdır. bunu yaparken dosyanın kopyasını alarak adını yalnızca config.php olarak değiştirmeli (aynı durum react projesindeki ReactApp/src/config.js.example için de geçerli) - Siteye ait temel fonksiyonlar protected/controller altında yer almaktadır - protected/models altından database tablolarının modellerine ve hatta bazı database işlemleri de active record kullanılarak buradan gerçekleştirilmiştir. burada yer almayan database işlemleri için Functions.php veya FunctionsV3.php dosyalarına bakılabilir. bu bahsedilen dosyalar protected/components klasöründedir. bu component klasörü içerisinde en çok ihtiyaç olacak ve kullanılacak dosya bu ikisidir (Functions.php ve FunctionsV3.php) - protected/components raw sql şeklinde database işlemlerinin ve controller dosyalarında kodlama yaparken kolaylık sağlaması açısından kullanılan hazır fonksiyonlar burada yer almaktadır. önceki madde de yazıldığı gibi en çok kullanılan dosyalar Functions.php ve FunctionsV3.php dosyalarıdır çünkü sitenin büyük bir oranında kullanılan hazır fonksiyonların hemen hemen tamamına yakını bu iki dosyada yer almaktadır - mobile uygulamanın backend'lik işlerinin bazıları şuradadır protected/controllers/api/merchant (sipariş kontrolü ve backend auth işlemleri) - needza.com haricindeki https://www.pizza-company.be/ gibi şablon sitelerin backend işlemleri protected/controler/MerchantCustomPageController.php dosyasında yer almaktadır. - MerchantCustomPageController.php dosyasına ait tüm viewler (site front-end kısmı) protected/views/templates altındaki klasör ve dosyalarda yer almaktadır - protected/messages altında sitenin en-nl-fr dil dosyaları yer almaktadır. - protected/views/email altında sitenin mail şablonları yer almaktadır (kullanıcılara gönderilen maillerin front-end kısmı) - vendor klasöründe internetten indirilen hazır paketler yer almaktadır ve bunların config işlemleri protected/config/main.php dosyasında yapılmaktadır - yiiframework klasörü framework'e ait core klasördür burada hiçbir geliştirme yapılmamaktadır, site ile ilgili tüm backend kısmı protected klasöründe olmakla beraber yalnızca protected/views klasöründe sitenin html,css,jquery ile geliştirilmiş front-end kısmı yer alıyor. site dashboard kısmı ve mobil uygulama front-end kodları iste ReactApp klasöründedir - ReactApp klasöründe geliştirme yapılan tüm kodlar src içindedir. proje çalışırken dashboard için çalışacak react kodu için ilk önce Root.js tetiklenir, mobile uygulamalar için App.js dosyası tetiklenerek proje çalışmaya başlar - Takeaway sitesindeki restoranların menüsünü otomatik çeken takeaway botu için takeaway crawler adında başka bir repo vardır. o proje ayrıdır ve onun kodları needza reposunda yer almamaktadır. needza o projenin sunucudaki adresine bağlanarak veri çekme işlemi yapmaktadır - Development branch'ına yapılan push ve merge işlemleri sonrası sistem otomatik olarak şuraya deploy alır : https://needza-dev.srv1.digitalcake.com.tr/ ve bu adresten değişiklikler test edilebilir. Master branch'a yapılan merge işlemlerinde ise değişiklikler otomatik olarak needza.com'a deploy olur