mavidurak / orientation-front-end Goto Github PK
View Code? Open in Web Editor NEWMentorluk çalışma grubu oryantasyon programı genel hatları.
License: MIT License
Mentorluk çalışma grubu oryantasyon programı genel hatları.
License: MIT License
Her kullanıcı şimdilik yeni bir content oluşturabilir(ilerleyen zamanlarda bunun yetkilendirilmesi yapılmalı). Bu amaçla contents/new
adresine sahip content oluşturma sayfası eklenmeli
Bir kullanıcı herhangi bir contentin altındaki Status kısmında Watched,Want To Watch... gibi seçenekleri ve Yıldızları kullandığında veritabanımızdaki wanted_content tablomuza kullanıcının bu hareketlerini kaydetmemiz gerekiyor bu kısım çalışmıyor.
page bilgisi veritabanına eklenmeli
updatedAt bilgisi sayfada yer almalı
Gerekli topluluk bilgilerini girebilen herkes yeni bir topluluk oluşturabilir bu yüzden communities/new
adnı bir url'e sahip sayfa oluşturlumlalı ve api'a istek attıktan sonra yeni topluluğun sayfasıne yönlendirilmeli
Kullanıcı /forgot-password
sayfasına email adresini girer ve girdiği adrese a-posta gönderilir. Gelen e-postadaki butona tıklanınca kullanıcı yeni şifresini belirleyebileceği sayfaya yönlendirilir, kullanıcı şifresini girer ve yenile tuşuna basınca api'a istek atarak şifre güncellenir.
src/views/guests/ForgotPassword.vue
sayfasında kullanıcının girdiği email adresi body
içinde api/authentication/forgot-password
adresine gönderilemeli ve bu sayede şifremi unuttum maili alabilmeli.
Şifre güncellemesi yapılabilecek /reset-password?token=value
adresli, içinde şifre ve şifre tekrarı girilebilecek inputlar olan bir sayfa oluşturulmalı, url'den query olarak gelen token
ve body
içine password
eklenerek api/authentication/reset-password?token=value
şeklinde istek atılmalı.
Tartışmanın başlığını, metnini ve yapılan yorumları gösterebileceğimiz ve markdown formatıyla yorum yapabileceğimizbir sayfa. Url'den gelen discussionId ile api'a istek atar ve gelen veriyi rander eder.
Comments
: Dışarıdan tüm yorumları alır ve her yorum için Comment
oluşturur.Comment
: Yorum bilgileri görüntülenir.Discussion
: path: /communities/:communityId/:discussionId
tartışmanın sergileneceği sayfa ...
├── views
│ ├── ...
│ └── Discussion.vue
├── ...
├── components
│ ├── ...
│ └── Comment // klasör
│ ├── Comments.vue // Comment kullanarak birden fazla yorumu listeler
│ └── Comment.vue // sadece yorum bilgisi
...
Topluluğun afiş, isim, sahib(ler)i, detayı, postlar gibi bilgilerinin gösterileceği sayfa hazırlanmalı
CommunityDetail
: path: /communities
toplulukların listeleneceği sayfa ...
├── views
│ ├── ...
│ └── CommunityDetail.vue
...
community: {
id: number,
name: string,
image: string, // image url
members: number,
category: string,
tags: [string],
rules: string,
createdAt: date,
updatedAt: date,
}
En allta bulunan Discussion Board
kısmına Posts
yazılmalı ve içeriği boş bırakılmalı
İçeriğin afiş, isim, sahibi, detayı, incelemeleri gibi bilgilerinin gösterileceği sayfa hazırlanmalı
WantedButton
: içeriklerin okunma, isteme, bitti vb. istek statülerinin seçileceği butonContentDetail
: path: /contents/:id
, Sayfada içerik bilgileri object olarak tutulmalı ve listelenmeli ...
├── views
│ ├── ...
│ └── ContentDetail.vue
├── ...
├── components
│ ├── ...
│ └── WantedButton.vue
...
content: {
id: number,
name: string,
image: string, // image url
rate: number,
description: string,
user: {
name: string,
},
createdAt: date,
updatedAt: date,
}
src/views/guests/register.vue
sayfasında submit işlemi başladığında api/authentication/register
adresine istek atmalı ve olumlu dönüt varsa kullanıcıyı src/views/guests/login.vue
( '/login' ) sayfasına yönlendirmeli.
API hata mesajı dönderiyorsa bu kullanıcıya düzgün bir şekilde gösterilmeli ve yönlendirme yapılmamalı.
src/views/home/ContentDetai.vue
sayfası url'den gelen id
'ye göre /api/contents/:id
adresinden content bilgilerini cekmeli ve bilgileri sayfaya işlemeli.
İçerik detay sayfasında inceleme yapmamızı sağlayacak bir tuş eklenmeli ve tıklandığında review sayafasına yönlendirmeli, başarıyla inceleme oluşturulursa tekrardan içerik detay sayfasına yönlendirilmeli.
İçerik detay sayfasında, ona ait ait tüm incelemelerin listelenmeli.
Syfa çalışmıyor ve API aşağıdaki gibi hata dönüyor.
{
"errors":[
{
"message":"WHERE parameter \"discussion_id\" has invalid \"undefined\" value"
}
]
}
Muhtemelen API'dan gelen veri içinde değişiklik yaptığımız için kod çalışmıyor.
Topluluk detay sayfasında topluluk bilgilerinden sonra topluluk içinde yapılan tartışmaların sedece başlık, tarih ve yazar bilgisini gösterecek ve tıklandığında tartışma detay sayfasına gidecek şekilde tartışmalar listelenmeli
Toplulukların bilgilerinin küçük bir şekilde gösterileceği, arama yapılabilecek listeleme komponenti yazılmalı.
CommunityList
: topluluklar dizisi tutmalı ve bilgileri alt komponente göndermeliCommunityDetailSmall
: Dışarıdan topluluk bilgisi almalı ve verilen bilgileri görselleştirmeliCommunities
: path: /communities
toplulukların listeleneceği sayfa ...
├── views
│ ├── ...
│ └── Communities.vue
├── ...
├── components
│ ├── ...
│ └── CommunityList // klasör
│ ├── CommunityList.vue // CommunityDetailSmall kullanarak birden fazla topluluğu listeler
│ └── CommunityDetailSmall.vue // sadece topluluk bilgisi
...
community: {
id: number,
name: string,
image: string, // image url
members: number,
createdAt: date,
updatedAt: date,
}
communityes: [
community,
...
]
Burada CommunityList
adlı komponent, CommunityDetailSmall
'lerden oluşan bir listeleme komponentidir.Arama inputuna isim giriliyorsa sadece girilen isimdeki topluluk(lar) görüntülenmeli
API'dan düzgün bir şekilde veri geldiği halde sayfa çalışmıyor.
Router'a yeni bir path eklenerek '/' adresine gelen istekler '/login' adresine yönlendirilmeli.
Sayfa yüklendiği anda eğer localStorage'da x-access-token
isminde bir item varsa ve bu token ile api/authentication/me
'ye istek attığımızda olumlu dönüş alıyorsak kullanıcı /home
adresine yönlendirilmeli.Submit işlemi yapıldığında api/authentication/login
adresine istek atılmalı ve olumlu sonuç dönüyorsa /home
adresine kullanıcı yönlendirilmeli eğer olumsuz bir cevap geliyorsa hata kullanıcıya gösterilmeli.
LocalStorage'da x-acces-token
item'ı varsa NavBar
'da login
ve register
sayfaları gösterilmemeli
İçeriklerin bilgilerinin küçük bir şekilde gösterileceği listeleme komponenti yazılmalı.Komponentin sağ tarafında bulunan istek butonu da ayrı bir komponent olarak yazılmalı.
ContentList
: içerik dizisi tutmalı ve bilgileri alt komponente göndermeliContentDetailSmall
: Dışarıdan içerik bilgisi almalı ve verilen bilgileri görselleştirmeliWantedButton
: içeriklerin okunma, isteme, bitti vb. istek statülerinin seçileceği butonListContent
: path: /contents
içeriklerin listeleneceği sayfa ...
├── views
│ ├── ...
│ └── ListContent.vue
├── ...
├── components
│ ├── ...
│ ├── WantedButton.vue
│ └── ListContent // klasör
│ ├── ContentList.vue // ContentDetailSmall kullanarak birden fazla içeriği listeler
│ └── ContentDetailSmall.vue // sadece içeriğin bilgisi
...
content: {
id: number,
name: string,
image: string, // image url
rate: number,
user: {
name: string,
},
createdAt: date,
updatedAt: date,
}
contents: [
content,
...
]
Burada tüm resim ContentDetailSmall
adlı komponent iken numaralı yerler ContentDetailSmall
komponentidir.
Proje daha iyi bir SEO ve CDN cache'lemesi için Client Side Rendering'den Server Side Rendering'e geçirilmeli. Bunun için Nuxt.js kullanılabilir.
/src/views/home/Communities.vue
sayfasında api/communities
adresine istek atılmalı ve gelen veri CommunityList
komponentine gönderilerek topluluklar dinamik bir şekilde gösterilmelidir. Gelen verinin keylerine göre mevcut komponentler in düzgün çalışabileceği şekilde değişiklik yapılmalıdır.
ContentList
komponentinde /api/contents
adresine istek atılarak tüm contetler getirilmeli ve veriler ContentDetailSmall
komponentinin içine gönderilmeli ve dinamik olarak render yapılmalı.
WantedButton
komponentinde bir istek tipi seçildikten sonra(halihazırda select
adıyla bir emit yapılıyor) ContentDetailSmall
componentinde /api/wanted-contets
adresine istek atılarak content isteklere eklenmeli eğer zaten ekliyse güncelleme yapılmalı
Topluluk detay sayfasında yeni tartışma başlatmak için bir tuş bulunmalı ve tıklandığında tartışma oluşturmamızı sağlayacak sayfaya yönlendirmeli ilgili bilgiler girildikten sonra oluştur tuşuna basıldığında başarılı bir şekilde kayıt oluşturulduysa kullanıcı tartışma detay sayfasına yönlendirilmeli
src/home/Review.vue
sayfasının content bilgilerini url'den gelen content idsine göre api'a istek atmalı ve gelen veriyi sayfaya işlemeli.
Review işlemi tamlandığında doldurulan alanları api'a göndermeli ve api'ın cevabını kullanıcıya sweet alert ile göstermeli.
Mesajlaşma kısmına girebilmek için ilk önce arkadaşlarımızı görüntüleyebilmemiz gerekli
şu anda hiçbir komponent üzerine tıklandığında ilgili yere girmiyor. Örnek olarak explore
sayfasındaki ContentIcon
'a tıklandığında kullanıcı ContentDetail
sayfasına yönlendirilmeli.
Bunun gibi tüm olaylar tekrardan yapılandırılmalı ve ana ekranda bulunan linkler(router-link
) kaldırılarak kullanıcı adım adım istenilen yere gönderimleli.
İçeriklere inceleme yapılabilecek sayfa hazırlanmalı
Review
: path: /review
, Contentin temel bilgileri gösterilmeli, review sonucunda alınan bilgiler console.log
yapılmalı ...
├── views
│ ├── ...
│ └── Review.vue
...
content: {
id: number,
name: string,
image: string, // image url
rate: number,
user: {
name: string,
},
},
review:{
contentId: number, // kullanılan content'in id'si
rete: number,
tags: [string],
reviewContent: string, // yapılan inceleme(ortada bulunan inputun verisi)
isSpoiler: boolean,
reviewDate: date, // review yapılan tarih
}
/src/views/home/CommunityDetail.vue
sayfası api'a bağlanmalıdır. Frontend'de communities/:id
adresine gelen isteklerdeki id
parametresi alınmalı ardından api/communities/:id
adresine istek atılarak veritabanında topluluk bilgisi çekilmeli ve /src/views/home/CommunityDetail.vue
sayfasındaki bilgiler dinamik olarak atanmalıdır
Sadece afişler görünecek şekilde tüm içzeriklerin sergileneceği sayfa.
ContentIcon
: içeriklerin sadece afişlerini gösterecek ve üstlerine geldiğinde tooltip çıkararak diğer bilgileri gösterecek.Dışarıdan content alacakContentIconList
: content iconlarının sıralı olarak gösterileceği komponent.Dışarıdan content dizisi alacakExplore
: path: /explore
, birden fazla ContentIconList
'ın sergileneceği sayfa ...
├── views
│ ├── ...
│ └── Explore.vue
├── ...
├── components
│ ├── ...
│ └── ContentIcon // klasör
│ ├── ContentIcon.vue
│ └── ContentIconList.vue
...
content: {
id: number,
name: string,
image: string, // image url
rate: number,
user: {
name: string,
},
},
contents: [ content ]
Aşağıda bulunan 404 sayfası tasarımlarından en beğendiğinize "👍" emojisi koyarak oylamaya katılabilirisiniz.
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.