Skip to content

marifcelik/vue-auction

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vue Basic Auction App - Basit Açık Arttırma Uygulaması

Merhaba. Bu proje, bir açık artırma web uygulamasıdır. Node.js ve Vue.js kullanılarak geliştirilmiştir. Kullanıcıların üyelik yapabileceği, oturum açıp kapatabileceği ve teklifleri canlı olarak takip edebileceği bir yapıdadır. Uygulama çalıştırıldığında ortam değişkeni olarak verilen süreden (varsayılan 5 dakika) geri sayıma başlar. Kullanıcılara fiyat verebileceği 3 adet statik ürün sunar.

Kurulum

Kurulum için, ana dizinde yer alan script dosyasını çalıştırabilirsiniz.

./start.sh

Script, docker compose ile uygulamayı ayağa kaldıracak ve 2 adet kullanıcı ekleyecektir. 4 adet container ayağa kalkacaktır:

  • name-server-1
  • name-client-1
  • name-db-1
  • name-redis-1

Gerekli ortam değişkenleri yaml dosyasının içine dahil edilmiştir.


docker compose

Öncelikle, docker-compose.yml dosyasının bulunduğu, uygulamanın ana dizinine gitmelisiniz.

docker compose up

komutu ile containerları ayağa kaldırabilirsiniz.

Container

Dockerfile ile ayrı ayrı containerlar halinde çalıştırmak için;

# backend
cd backend
docker build -t backend .
docker run --rm -d -p 5048:5048 --name server backend

# frontend
cd frontend
docker build -t frontend .
docker run --rm -d -p 5173:80 --name client frontend

Back-end in çalışabilmesi için MongoDB ve Redis containerlarının varsayılan portlarda ayağa kalkmış olması gerekiyor.



Tarayıcı Sertifika Sorunu

Kullanıcı oturum bilgisinin, tarayıcı üzerinde sessionid adlı cookie ile iletilmesi ve tarayıcıların bu cookileri sadece https üzerinden kabul etmesi nedeniyle back-end ve front-end tarafında SSL kullanmam gerekti. Kullandığım sertifika doğrulanmış bir sertifika olmadığı için tarayıcılar sunucu-istemci arasındaki haberleşmeyi engelleyebiliyor.

Bunun önüne geçmek için Google Chrome' da chrome://flags/#allow-insecure-localhost adresinden ilgili ayarın açılması gerekmekte.
Firefox' ta bu işlem şu şekilde yapılabilir :

  • Uygulama Menüsü > Ayarlar > Gizlilik & Güvenlik
  • Güvenlik > Sertifikalar > Sertifikaları Göster
  • Sunucular > Ayrıcalık Tanı
  • Sunucu adresini girin (https://localhost:5048) > Sertifikayı Al
  • Güvenlik ayrıcalığını doğrula

SSL sertifikası olmadan tarayıcının cookie yi kabul etmesi mümkün değil. Oturum bilgisini LocalStroge' de tutmak doğru bir yöntem olmadığı için, bu ek yapılandırma gerekli hale geldi.



Bu adımlardan sonra uygulama https://localhost:7073 adresinde çalışacaktır.

Karşılama ekranından direkt olarak Ürünler sayfasına girebilirsiniz. Aktif bir oturum olmadığı için sizi Giriş Yap sayfasına atacaktır.

  • Kullanıcı Adı: user1, Şifre: 123123
  • Kullanıcı Adı: user2, Şifre: 123123

kullanıcıları öntanımlı olarak gelir. Kayıt Ol ekranından yeni kayıt yapılabilir.

Giriş yapıldıktan sonra Ürünler sayfasına gidilebilir, Gezinme çubuğundaki (navbar) butonların yerini Ürünler ve Çıkış Yap butonları alır.

Ürünler sayfasında 3 adet statik ürün görünecektir. Teklif ver butonu ile ürün sayfasına gidilebilir. Her ürünün sayfasında anlık olarak verilen teklifler ve teklifi yapan kişiler sıralı şekilde listelenir, yeni teklif girilebilir.

tüm fiyatların tek bir sayfaya gitmesi ve yönetilmesini doğru bulmadığım için, ürün ve teklifleri ayrı sayfalarda sundum. Böylece, istemci sadece bir ürün için websocket mesajlarını yönetecek ve, aynı şekilde, sunucuda sadece gerekli yerlere websocket mesajı gönderecek.

Gezinme çubuğunda gösterilen, kalan süre bittiğinde açık arttırma sona erer ve yeni teklif yapılamaz.




registrationKey: 4f6d4d38e0d5a4c387339c62a60766f7eca4ca9c2a4418c1e8049e3691942453