demir / pinmapper Goto Github PK
View Code? Open in Web Editor NEWExplore Pins around the world
Home Page: https://www.pinmapper.com
License: MIT License
Explore Pins around the world
Home Page: https://www.pinmapper.com
License: MIT License
Api'yi dışardan kullanıma kapatmak için web site kısıtlaması eklemek gerekiyor. Bu sayede kotanın istemsizce şişmesi engellenir.
İlgili kısıtlama: Application restrictions -> HTTP referrers (web sites)
Pin modelinde şu an aktif kullanılmayan privacy alanı kaldırılmalı. Çünkü Pinmapper başlangıçta para kazanamayacak. Bu süreçte masraflar cepten karşılanacak. Pin'ler fotoğraf içerebileceği için ve konum servisini kullandığı için her Pin masraf demek. Bu yüzden private Pin'ler uygulama Pin havuzuna bir katkı sunmayacağından başlangıç aşamasında bu özelliği devre dışı bırakmak gerekiyor. İlerleyen dönemlerde Pinmapper maddi açıdan kendini döndürmeye başladığında privacy özelliği yeniden eklenebilir.
Şimdilik privacy özelliği kaldırılmalı.
Pin oluştururken imaj crop aşamasında yanlışlıkla scroll ile zoom yapılabiliyor. Bu durumda imaj küçülüyor ya da büyüyor ve crop işi zorlaşıyor.
Crop sırasında scroll ile zoom özelliği kaldırılabilir
Kullanıcıların başkalarının Panolarını takip edebilmesi gerekiyor. Bunun için Panolara takip et veya takibi bırak butonları eklenmeli
PinComponent üzerinden ya da pin detay ekranı üzerinden yol tarifi alma ya da haritada konumu gösterme özelliği eklenmesi faydalı olur. Yol tarifi alma için Pin'in adres bilgisi üzerine tıklama özelliği eklenebilir. Bu bölüm component de yapılabilir.
Harita için ayrı bir ekran oluşturulabilir. Pin üzerindeki adres bilgisine tıklandığında bu ekran açılır. Ekranda ilgili pin haritada gösterilir. Bu pinle beraber yakındaki pinler ve sponsorlu pinler de gösterilebilir. Bu arada instagramda harita için sadece leaflet + openstreetmap kullanılmış.
Kullanıcı, Pin ve Pano (gerekmeyebilir) aramasının yapılabileceği bir ekran gerekiyor. Bu sayede çok daha fazla Pin'e erişilebilir.
PgSearch iyi bir tercih gibi görünüyor. Yeni bir şey eklemeden bu şekilde devam edilebilir.
Favicon eklemek gerekiyor.
Kullanıcıların birbirini takip edebilmesi gerekiyor. Anasayfada takip edilen kullanıcıların pinleri listelenmeli.
Sınırlı input alanları için karakter sayıcı eklenmeli. Stimulus controller ile halledilebilir.
Locale olarak tr ya da en'den başka bir değer girildiğinde uygulama hata veriyor.
Hata vermemesi gerekiyor. Bunun yerine varsayılan locale aktif edilmeli
Uygulama hata veriyor
Hata:
Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.0ms | Allocations: 175)
FATAL -- :
I18n::InvalidLocale (:ar is not a valid locale):
app/controllers/application_controller.rb:27:in `with_locale'
Bu bölüm düzenlenmeli
İş kayıtlarını ve PR'ları belli bir düzende açmak için şablonlar oluşturulmalı
İlk iş kaydı 🎉
Profile fotoğrafı kırpılmış gibi görünse de gerçekte öyle değil. Farklı kaydet ile tam hali indirilebiliyor. Bu pek doğru değil gibi.
Profile ekranına kişisel bilgilerin yer alacağı bio (text) alanı eklenmeli. Kullanıcılar bu alana iletişim vb bilgilerini yazabilir. Örneğin mail adresi ya da sosyal medya adresleri.
Pano açıklama alanına pano ile ilgili açıklama eklenebilmesi iyi olur. Zorunlu bir alan değil. Bu alan text olabilir. Pano büyük bir gezi için açılmışsa bu alanda gezinin değerlendirmesi yapılabilir. Fotoğraf bile eklenebilir.
Şu an otomatik giriş yapmıyor. Onayladıktan sonra giriş yapmak gerekiyor.
Pano üzerinde gösterilen Pin'leri panodan çıkarmak için Pin detay ekranına girmek gerekiyor. Bunun yerine bu ekranda bu işlemi yapabilmek gerekiyor. Bunun için SmallPinComponent üzerinde panoya ekle/çıkar butonun küçültülmüş hali eklenebilir.
Temel seviyede pin ekranları eklenmeli.
Oturum açan kullancılar;
Oturum açmamış kullanıcılar;
Pano detay ekranındaki kullanıcı pano sahibi ise Bölümler başlığını bölüm ekle butonunu ve henüz bölüm eklemediniz bilgilendirme yazısını görsün. Pano sahibi değilse, bölüm var ise bölümler başlığını ve bölümleri görsün; bölüm yoksa, bölümle ilgili birşey görmesin.
Alınması yasak olan usernameler belirlenmeli ve alınmaları engellenmeli.
Panoya eklenen Pin'ler bu ekranda listelenmeli.
Bu ekrandaki Pin'ler biraz küçük olmalı. Pinler ekranındaki Pin'ler gibi büyük Pin'ler kullanılırsa tek bakışta etkinlik hakkında fikir edinmek zor olur. Örneğin Karadeniz adlı Pano üzerinden Karadeniz gezisi yapmak istiyorum. Ekrana baktığımda kabaca hangi Pin'ler olduğunu görmeliliyim ki bana gezi hakkında fikir versin. Yoksa sürekli ekranı kaydırıp Pin'leri tek tek görmek gerekecek.
Pin'ler sürüklenerek sıralanabilmeli.
Google aramalarında öne çıkabilmek için FriendlyId kullanılmalı.
Kayıtlanma ekranında (belki giriş ekranında da) kayıt ol butonunun altına şu tarz bir mesaj eklenmeli:
Hesap oluşturarak, Gizlilik Politikası, Kullanım Koşulları ve Çerez Politikası kabul etmiş sayılırsınız.
Birden çok sorgu or ile birleştirildiğinden sorgu uzun sürüyor. Pluck ile büyük veri çekiliyor. Bunun yerine daha pagy ile pagination'a izin veren bir sorgu yazmak gerekiyor.
Arel kullanılabilir. İncelemek lazım.
Herhangi bir sebeple counter cache için gerekli callback'ler çalışmazsa count bilgilerinde tutarsızlık olaşabilir. Bu durumu engellemek için belli aralıklarla bu bilgiyi yenilemek gerekiyor. Kullanılan counter_culture
gem haftada bir counter_culture_fix_counts
metodunun çalıştırılmasını öneriyor. Bunu bir background job ile çalıştırmak lazım. Production'da bu düzenleme yapılmalı. Gem'in konuyla ilgili dokümanı: https://github.com/magnusvk/counter_culture#manually-populating-counter-cache-values
Şu an sorun değil ama ilerde veri büyüdüğünde gerekli olacak. Bunun için rails'in çözümü olan counter_cache ya da daha gelişmiş özellikleri olan counter_culture kullanılabilir.
Eklenmesi gereken ekranlar:
Küçük ekranlarda bir Pinlerin listelendiği bir sayfada son Pin içini Panoya Ekle paneli doğru çalışmıyor. Sayfa sürekli panelin üzerine doğru scroll yapıyor. Container'ın içindeki son eleman olduğu için, açılan panele yeterli alan kalmıyor sanırım. Pin'in altına gerekli boşluk bırakılırsa sorun olmuyor.
Ekran küçüldüğünde imajların da ekran boyutuna göre küçülmesi gerekiyor. Şu an imajların boyutu değişmiyor. Bu yüzden küçük ekranlarda yana doğru imaj taşması oluyor
Ekranla beraber imajların da küçülmesi
Ekranla beraber imajalr küçülmüyor
CSS ile çözülebilir
Pin üzerinde Pin'in eklendiği Panolar (Pin sahibinin) gösterilmeli. Bunun için component oluşturulabilir. Bir pano için aşağıdaki gibi, birden çok pano için x panosuna ve 4 tane daha panoya (link olacak şekilde) eklendi şeklinde gösterilebilir. Linke tıklandığında da pin'in eklendiği bütün panolar açılan modalda gösterilebilir.
Şu an gmailden alınan mail kullanılıyor. Bunun yerine [email protected]
kullanılmalı
Bu oran yüksek olduğunda Pinlerin listelendiği ekranda tek pin ekranı kapatabiliyor.
Kapak fotoğrafı eklerken sınırlama getirilebilir. Ya da gösterirken scale edilebilir.
N/A
Locale bilgisi şu an cookie'de tutuluyor. Kişi başka başka bir tarayıcıda oturum açtığında cookie bilgisi olmadığı için dil varsayılana dönüyor.
Bunun yerine dil bilgisi veritabanında tutulursa, farklı bir tarayıcıdan oturum açıldığında dil bilgisi doğru gelecektir. Ayrıca varsayılan dil bilgisi gelen requet'in konumuna göre belirlenmeli. Yani istek türkiyeden geliyorsa varsayılan locale tr olmalı.
Ayrıca link paylaşımlarında url içinde locale olduğu için link'i açan kişinin tarayıcısında site üzerinde dil değişikliğine sebep olabilir.
Güncelleme:
Rails guide'ına göre locale bilgisini request header'ından almak konumdan almaya göre daha iyi. Oturum açanlar için de locale bilgisini db'de tutmak mantıklı. Ayrıca locale bilgisini cookie'de tutmak kesinlikle önerilmiyor. Kullanıcı, linki paylaşırken ne görüyorsa, linki açan da onu görmeli.
N/A
Pano birleştirme özelliği eklenmeli. Bir panodaki pinler başka bir panoya taşınabilmeli. Taşımadan sonra ilgili pano silinmeli.
config/environments/production.rb
de force_ssl: true
olmalı.
SEO ayarı için şu gem kullanılabilir: meta-tags
Pin ile ilgili css kodları javascript/styles/theme/custom.scss dosyasında tutuluyor. Bu kodları javascript/styles/controllers klasörüne taşımak gerekiyor.
Komponent şu an genel kullanıma uygun değil. Her model için yeniden oluşturmak gerekiyor. Bunun yerine genel bir komponent olmalı ve dinamik bir şekilde içine link eklenebilmeli.
Block ile linkler bu komponent'e eklenebilir.
Örnek: https://primer.style/view-components/components/dropdown
Bir Pin pano değil de bölüm'e eklenmişse butonun görüntüsü yanlış oluyor. Added class'ı olması gerekirken added class'ı eklenmiyor butona.
Butonun rengi eklendi (siyah) olmalı
Uygulama içinde Email yerine Username kullanmak uygun olur. Email yerine Username ile de giriş yapılabilmeli.
Kayıtlanma aşamasında Username belirlenebilir. Diğer uygulamalar (Google, Facebook, Twitter) üzerinden kayıt (giriş) yapıldığında kullanıcı adı servisten gelen isme göre random atanacak. Sonradan kullanıcı isterse kullanıcı adını güncelleyebilecek. Örneğin Google'dan gelen isim 'Emre Demir' olsun. Bu durumda emredemir1 ya da emredemir2 gibi kullanıcı adları otomatik oluşturulacak.
N/A
Pinleri gruplamak için Pano modeli gerekli. Bu sayede Pin'ler derli toplu olabilecek. Paylaşımlar da daha anlamlı olacak.
Küçük ekranlarda nav menüdeki bağlantılar direk gösterilmeli. Örneğin şu an küçük ekrandayken 'Panolar' bağlantısını görmek için hamburger butonuna tıkladıktan sonra bir de kullanıcı fotoğrafına tıklamak gerekiyor. Bunun yerine 'Panolar' bağlantısı en üst seviyede olmalı. Yani hamburger butonuna tıklandığında direk görünmeli.
Html/Css düzenlemesi yapılmalı
Mobilde Pin düzenle ekranında kapak fotoğrafı ekrandan taşıyor
Ekrana sığrılması gerekiyor
Sağa doğru kayma oluyor
Pin formunda imaja responsive özelliği vermek yeterli olabilir
Kapak fotoğrafı ile beraber Pin oluştur
Mobildeyken Pin düzenleme ekranına gir
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.