Git Product home page Git Product logo

forumwebsiteexample's Introduction

Forum Website Example

Deneme amaçlı oluşturulmuş, bir forum sitesinin temel işlevlerini yerine getiren basit bir web sitesidir. Bu web sitesinde;

  • Siteye giren herkes kullanıcıların oluşturduğu başlıkları görebilir.
  • Siteye üye olan herkes kullanıcıların oluşturdukları başlıkları okuyabilir ve yorum yapabilir.
  • Kullanıcılar kendi oluşturdukları başlıkları silebilir veya düzenleyebilir, yaptıkları yorumları ise silebilirler.
  • Moderatör olmayı belirten isModerator flag'i etkinleştirilmiş olan kullanıcılar bütün yorumları ve başlıkları silebilir. Bütün başlıkları yoruma açabilir veya kapatabilir.

Açıklamalar

Bu web sitesi örneği Python 3.8.10 ve Flask 2.0.1 versiyonu kullanılarak deneme amaçlı oluşturulmuştur.

Flask 2.0 versiyonundan itibaren değişmiş olan yeni routing metodları kullanıldığından 2.0 öncesi versiyonlarda hata verecektir!

Uygulamanın HerokuApp üzerinde çalışan versiyonu için tıklayın!

Test Kullanıcısı E-mail: [email protected]

Test Kullanıcı Parolası: sanane06

1. Veritabanı Yapısı

Veritabanı SQLite veritabanı kullanılarak oluşturulmuştur. Tek bir database dosyası içinde oluşturulan Users, Messages ve Posts tabloları kullanılarak bir forum sitesindeki en temel işlemler yerine getirilmeye çalışılmıştır.

User tablosu için Create ifadesi aşağıdaki gibidir:

CREATE TABLE "User" (
	"id"	INTEGER NOT NULL UNIQUE,
	"username"	TEXT NOT NULL UNIQUE,
	"email"	TEXT NOT NULL UNIQUE,
	"password"	TEXT NOT NULL,
	"isModerator"	INTEGER NOT NULL,
	PRIMARY KEY("id" AUTOINCREMENT)
); 

User verirabanında password hash algoritması için NIST tarafından standart olarak kabul edilen pbkdf2 algoritması kullanılmıştır.

Post tablosu için Create ifadesi:

CREATE TABLE "Post" (
	"id"	INTEGER NOT NULL UNIQUE,
	"ownerID"	INTEGER NOT NULL,
	"header"	TEXT NOT NULL,
	"body"	TEXT NOT NULL,
	"openComments"	INTEGER NOT NULL,
	"postDate"	TEXT NOT NULL,
	PRIMARY KEY("id" AUTOINCREMENT)
);

Son olarak Message tablosu için Create ifadesi:

CREATE TABLE "Message" (
	"id"	INTEGER NOT NULL UNIQUE,
	"ownerID"	INTEGER NOT NULL,
	"postID"	INTEGER NOT NULL,
	"message"	TEXT NOT NULL,
	"messageDate"	TEXT NOT NULL,
	PRIMARY KEY("id" AUTOINCREMENT)
);

2. Yükleme adımları

a) HerokuApp Yükleme Adımları

  • Heroku'yu buradan indirerek bilgisayarınıza yükleyin.

  • Heroku Dashboard sayfanız üzerinden bir app oluşturun

  • Bu repoyu git clone https://github.com/RegaipKURT/ForumWebsiteExample komutu ile bilgisayarınıza alın.

  • İndirilen klasör içine girerek önce heroku login komutunu çalıştırın ve tarayıcı üzerinden hesabınıza giriş yapın.

  • İndirilen kasör içindeki ".git" dosyasını silin ve ardından git init komutunu klasör içinde çalıştırın.

  • Uygulamayı hesabınıza eklemek için heroku git:remote -a "uygulama_adınız" komutunda "uygulama_adınız" yerine oluşturduğunuz heroku uyugulamanızın adını yazın

  • Daha sonra normal bir git reposuna ekleme yapar gibi şu üç komutu çalıştırın: git add ., git commit -m "yükleme mesajınız" ve ardından git push heroku master

Bu adımların ardından uygulamanız heroku üzerinde deploy edilecektir.

b) Sunucu veya Yerel Ağ Üzerinde Çalıştırma

  • pip install -r requirements.txt komutuyla bağımlılıkları yükleyin
  • Bilgisayarınızda çalıştırmak için python wsgi.py komutunu çalıştırın.
  • Sunucular için gunicorn ile wsgi.py dosyasını çalıştırabilirsiniz. Linux için örnek: gunicorn3 -w3 wsgi.py

Python virtual environment için Pipfile dosyaları eklenmiştir.

ÖNEMLİ NOT:

Uygulama deneme amaçlı yapılmış ve güvenlik bakış açısıyla test edilmemiştir. Bu yüzden heroku üzerinde çalışan sisteme kaydolurken lütfen başka sistemlerde kullandığınız kullanıcı adı ve parolası ile kayıt yapmayın.

forumwebsiteexample's People

Contributors

regaipkurt avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.